【问题标题】:AWS Lambda S3:::ObjectCreated:Put event returns invalid object keyAWS Lambda S3:::ObjectCreated:Put 事件返回无效的对象键
【发布时间】:2018-08-05 17:25:17
【问题描述】:

美好的一天!

我正在构建一个 lambda 函数,该函数应该调整保存在特定存储桶中的图像的大小,并以不同的前缀将它们重新保存在同一个存储桶中(lambda 将首先检查此前缀以避免无限循环)。例如,当我尝试上传图像“123.jpg”时,处理函数下的 event.Resource[0].s3.object.key 将返回“undefined2018-02-26-08-40-37-DBAB838DACA3F368”

您可以想象,这会导致我的 lambda 函数崩溃。任何人对此有任何想法,请让我知道,因为我已经为此苦苦挣扎了将近一个星期。请在下面找到其他资源。请注意,我还在 s3 存储桶设置下创建了一个 lambda 事件:-

lambda 事件的日志

event: { Records: 
 [ { 
     eventVersion: '2.0',
     eventSource: 'aws:s3',
     awsRegion: 'us-east-1',
     eventTime: '2018-02-26T08:40:37.281Z',
     eventName: 'ObjectCreated:Put',
     userIdentity: { principalId: 'XXXXXXXXXXXXX' },
     requestParameters: { sourceIPAddress: '8.8.8.8' },
     responseElements: 
     { 
       'x-amz-request-id': '05465A75942F4593',
       'x-amz-id-2': 'GWXnftcTHzfdAOuH40R2LO+h2laQhcO9eeU4JIzsRfYpL3HsDHmxzmqvE6lIlmAfcDO8O+gXU6U=' 
     },
     s3: { 
        s3SchemaVersion: '1.0',
        configurationId: '19945d41-71f2-4ae0-9004-b1c6c06b06da',
        bucket: { 
          name: 'sample-bucket-23',
          ownerIdentity: { principalId: 'XXXXXXXXXXXX' },
          arn: 'arn:aws:s3:::sample-bucket-23' 
       },
       object: { 
          key: 'undefined2018-02-26-08-40-37-DBAB838DACA3F368',
          size: 355,
          eTag: '56b6395fe1bfea7cb98cd55d3cba3933',
          sequencer: '005A93C8053FEF92A2' 
       } 
    } 
 } 
 ] }

Lambda 访问权限

{
  "roleName": "lambda_full_s3_v2",
  "policies": [
    {
      "document": {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "s3:ListBucket"
            ],
            "Resource": [
              "arn:aws:s3:::sample-bucket-23"
            ]
          },
          {
            "Effect": "Allow",
            "Action": [
              "s3:PutObject",
              "s3:GetObject",
              "s3:DeleteObject"
            ],
            "Resource": [
              "arn:aws:s3:::sample-bucket-23/*"
            ]
          },
          {
            "Action": [
              "logs:CreateLogGroup",
              "logs:CreateLogStream",
              "logs:PutLogEvents"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:logs:*:*:*"
          }
        ]
      },
      "name": "oneClick_lambda_basic_execution_1519631544835",
      "type": "inline"
    }
  ]

【问题讨论】:

  • 能否请您发布您的调整大小代码?
  • 我的处理程序代码暂时只是一个控制台日志。

标签: amazon-web-services amazon-s3 amazon-iam aws-lambda


【解决方案1】:

这不是由您的上传触发的事件。这是一个由新日志文件写入您的存储桶触发的事件,因为您已将存储桶配置为将其日志写入自身,而不是写入同一区域中的不同存储桶。

Amazon S3 对其上传到目标存储桶的日志对象使用以下对象键格式:

TargetPrefixYYYY-mm-DD-HH-MM-SS-UniqueString

https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html

您需要更改事件触发器以仅查看图像的前缀,重新配置您的 Lambda 代码以忽略匹配此模式的条目,或创建一个单独的存储桶来捕获日志。

(我怀疑当您未指定前缀时,日志对象键开头的字符串undefined 的出现是控制台错误。您还可以更改存储桶的日志记录配置以添加前缀,例如@ 987654324@ 用于日志文件,如果您希望将它们写入此存储桶。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 2019-08-18
    • 2015-04-09
    • 1970-01-01
    • 2020-10-09
    • 2019-07-05
    • 2021-06-20
    相关资源
    最近更新 更多