1

我已按照本教程使用 AWS Lambda 将图像缩略图创建到另一个存储桶:http: //docs.aws.amazon.com/lambda/latest/dg/walkthrough-s3-events-adminuser-create-test-function-upload -zip-test.html

我已经完成了本教程前面的所有步骤,但是当我从上面的链接在 Lambda 测试中运行下面的代码时

{  
   "Records":[  
      {  
         "eventVersion":"2.0",
         "eventSource":"aws:s3",
         "awsRegion":"us-east-1",
         "eventTime":"1970-01-01T00:00:00.000Z",
         "eventName":"ObjectCreated:Put",
         "userIdentity":{  
            "principalId":"AIDAJDPLRKLG7UEXAMPLE"
         },
         "requestParameters":{  
            "sourceIPAddress":"127.0.0.1"
         },
         "responseElements":{  
            "x-amz-request-id":"C3D13FE58DE4C810",
            "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD"
         },
         "s3":{  
            "s3SchemaVersion":"1.0",
            "configurationId":"testConfigRule",
            "bucket":{  
               "name":"sourcebucket",
               "ownerIdentity":{  
                  "principalId":"A3NL1KOZZKExample"
               },
               "arn":"arn:aws:s3:::sourcebucket"
            },
            "object":{  
               "key":"HappyFace.jpg",
               "size":1024,
               "eTag":"d41d8cd98f00b204e9800998ecf8427e",
               "versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko"
            }
         }
      }
   ]
}

我收到错误消息

由于错误,无法调整 sourcebucket/HappyFace.jpg 的大小并上传到 sourcebucketresized/resized-HappyFace.jpg:PermanentRedirect: 您尝试访问的存储桶必须使用指定的端点进行寻址。请将所有未来的请求发送到此端点。结束请求 ID:345345...

我已更改存储桶名称、eTag 和图像名称。我需要更改其他内容吗?我的地区是正确的。我需要编辑“principalId”吗?我在哪里可以找到它?

怎么了。

4

3 回答 3

4

就我而言,问题是存储桶区域。在示例中使用了“us-east-1”,但我的存储桶位于“eu-west-1”上,所以我必须更改两件事:

  • "awsRegion":"eu-west-1", 在 lambda 测试文件中
  • 在我的 nodejs lambda 代码中设置区域:AWS.config.update({"region": "eu-west-1"})

当然,您仍然需要在 lambda 测试文件中设置以下值:

  • name: 'your_bucket_name_here',
  • arn: 'arn:aws:s3:::your_bucket_name_here'

进行此修改后,它按预期工作

于 2015-07-12T05:04:43.387 回答
0

您的问题与“端点”有关。您必须将“arn”:“arn:aws:s3:::sourcebucket”更改为“arn”:“arn:aws:s3:::(name_of_your_bucket)”。与 "name":"sourcebucket" 到 "name":"(name_of_your_bucket)" 相同。

为了避免更多问题,您必须将名为 HappyFace.jpg 的 jpg 上传到您的存储桶或更改 s3 放置测试对象代码。

问候

于 2015-02-19T08:20:23.693 回答
0

尝试使用此更新格式(请仔细配置密钥、存储桶名称、arn 和 awsRegion 到您自己的设置):

{
  "Records": [
    {
      "eventVersion": "2.0",
      "eventTime": "1970-01-01T00:00:00.000Z",
      "requestParameters": {
        "sourceIPAddress": "127.0.0.1"
      },
      "s3": {
        "configurationId": "testConfigRule",
        "object": {
          "eTag": "0123456789abcdef0123456789abcdef",
          "sequencer": "0A1B2C3D4E5F678901",
          "key": "HappyFace.jpg",
          "size": 1024
        },
        "bucket": {
          "arn": "arn:aws:s3:::myS3bucket",
          "name": "myS3bucket",
          "ownerIdentity": {
            "principalId": "EXAMPLE"
          }
        },
        "s3SchemaVersion": "1.0"
      },
      "responseElements": {
        "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH",
        "x-amz-request-id": "EXAMPLE123456789"
      },
      "awsRegion": "us-east-1",
      "eventName": "ObjectCreated:Put",
      "userIdentity": {
        "principalId": "EXAMPLE"
      },
      "eventSource": "aws:s3"
    }
  ]
}
于 2016-06-02T18:07:39.290 回答