Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS Lambda S3:::ObjectCreated:Put事件返回无效的对象键_Amazon Web Services_Amazon S3_Amazon Iam_Aws Lambda - Fatal编程技术网

Amazon web services AWS Lambda S3:::ObjectCreated:Put事件返回无效的对象键

Amazon web services AWS Lambda S3:::ObjectCreated:Put事件返回无效的对象键,amazon-web-services,amazon-s3,amazon-iam,aws-lambda,Amazon Web Services,Amazon S3,Amazon Iam,Aws Lambda,你好 我正在构建一个lambda函数,它应该调整保存在特定bucket中的图像的大小,并将它们重新保存在同一个bucket中的不同前缀下(lambda将首先检查此前缀以避免无限循环)。例如,当我尝试上载映像“123.jpg”时,处理程序函数下的event.Resource[0].s3.object.key将返回“undefined2018-02-26-08-40-37-DBAB838DACA3F368” 可以想象,这会导致lambda函数崩溃。任何人对此有任何想法,请让我知道,因为我已经为此绞尽

你好

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

可以想象,这会导致lambda函数崩溃。任何人对此有任何想法,请让我知道,因为我已经为此绞尽脑汁将近一个星期了。请在下面查找其他资源。注意,我还在s3 bucket设置下创建了一个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"
    }
  ]

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

Amazon S3将以下对象密钥格式用于它上载到目标bucket中的日志对象:

targetPrefixyyy mm DD HH mm SS唯一字符串

您需要将事件触发器更改为仅监视图像的前缀,重新配置Lambda代码以忽略与此模式匹配的条目,或者创建一个单独的bucket来捕获日志


(如果不指定前缀,我怀疑日志对象键开头出现的字符串
undefined
是一个控制台错误。如果希望将日志文件写入此bucket,还可以更改bucket的日志记录配置以添加前缀,例如,
logs/

您可以发布调整大小的代码吗?我的处理程序代码目前只是一个控制台日志。