首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >S3 Lambda触发器不是为每次文件上传触发的

S3 Lambda触发器不是为每次文件上传触发的
EN

Stack Overflow用户
提问于 2021-08-05 21:42:01
回答 1查看 945关注 0票数 6

在Python中,我保存多个视频文件。

保留1:

  • 长视频
  • 短视频

但2:

  • 长视频
  • 短视频

除3外:

  • 长视频
  • 短视频

我有一个lambda触发器,它使用媒体转换器将HLS格式添加到这些视频中,并生成缩略图。这3种保存是在很短的时间内完成的,因为它们是社交媒体帖子对象的资产。

由于某些原因,S3只触发一些文件。

保存1会触发S3 Lambda,但不能保存2。保存3也会触发S3 Lambda。

我的假设是,S3触发器在识别新的文件上传之间有某种程度的停机时间(在这种情况下,我认为这些文件上传之间的时间几乎是即时的)。

这个假设正确吗?我怎样才能绕过它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-05 22:24:33

它应该对所有物体开火。

当Amazon函数触发AWS函数时,引发触发器的对象的信息将在S3字段中传递:

代码语言:javascript
复制
{
  "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的示例代码肯定假设这种情况是基于它们的示例代码发生的:

代码语言:javascript
复制
def lambda_handler(event, context):
  for record in event['Records']:   # <-- Looping here
      bucket = record['s3']['bucket']['name']
      key = unquote_plus(record['s3']['object']['key'])
      ...

因此,我建议:

examination

  • Use
  • 在函数开始时打印event,然后将其放入日志,循环遍历所有可能传递的记录,
  • ,让我们知道您找到了什么!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68673809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档