gpt4 book ai didi

django - S3 Lambda触发器不会为每个文件上传触发

转载 作者:行者123 更新时间:2023-12-04 11:34:51 26 4
gpt4 key购买 nike

在 Python Django 中,我保存了多个视频文件。
保存1:

  • 长视频
  • 短视频

  • 保存2:
  • 长视频
  • 短视频

  • 保存3:
  • 长视频
  • 短视频

  • 我有一个 lambda 触发器,它使用媒体转换器向这些视频添加 HLS 格式并生成缩略图。这 3 次保存是在很短的时间内完成的,因为它们是社交媒体帖子对象的 Assets 。
    出于某种原因,S3 仅针对某些文件触发。
    Save 1 会触发 S3 Lambda,但不会触发 Save 2。
    Save 3 也会触发 S3 Lambda。
    我的假设是 S3 触发器在识别新文件上传之间有某种停机时间(在这种情况下,我认为这些文件上传之间的时间段几乎是即时的)。
    这个假设是否正确,我该如何规避它?

    最佳答案

    它应该为所有对象触发。
    当 Amazon S3 触发 AWS Lambda 函数时,有关导致触发的对象的信息会在 events 中传递。 field :

    {
    "Records": [
    {
    "eventSource": "aws:s3",
    "awsRegion": "us-west-2",
    "eventTime": "1970-01-01T00:00:00.000Z",
    "eventName": "ObjectCreated:Put",
    "s3": {
    "bucket": {
    "name": "my-s3-bucket",
    "arn": "arn:aws:s3:::example-bucket"
    },
    "object": {
    "key": "HappyFace.jpg",
    "size": 1024,
    ...
    }
    }
    }
    ]
    }
    请注意 这是一个数组 ,所以是 可能传递多个对象 到一个 Lambda 函数。我从来没有明确地看到这种情况发生,但是来自 AWS 的示例代码肯定会根据他们的示例代码假设这可能发生:
    def lambda_handler(event, context):
    for record in event['Records']: # <-- Looping here
    bucket = record['s3']['bucket']['name']
    key = unquote_plus(record['s3']['object']['key'])
    ...
    因此,我建议:
  • 打印 event在函数开始时将其放入日志以供以后检查
  • 使用循环遍历所有可能传递的记录
  • 让我们知道你发现了什么!
  • 关于django - S3 Lambda触发器不会为每个文件上传触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68673809/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com