如何从AWS S3获取文件大小" ObjectRemoved:删除"事件

时间:2018-01-31 16:04:52

标签: amazon-web-services amazon-s3 aws-sdk aws-sdk-nodejs

背景

我在S3存储桶中存储了一些文件(对象)。 每当从S3存储桶中删除任何文件时,我的Lambda函数就会被触发。 lambda函数需要从DynamoDB中减去对象大小。

问题: S3 deleteObject事件不发送对象大小

示例S3 deleteObject事件

{
  "Records": [
    {
      "eventVersion": "2.0",
      "eventTime": "1970-01-01T00:00:00.000Z",
      "requestParameters": {
        "sourceIPAddress": "127.0.0.1"
      },
      "s3": {
        "configurationId": "testConfigRule",
        "object": {
          "sequencer": "0A1B2C3D4E5F678901",
          "key": "HappyFace.jpg"
        },
        "bucket": {
          "arn": "arn:aws:s3:::mybucket",
          "name": "sourcebucket",
          "ownerIdentity": {
            "principalId": "EXAMPLE"
          }
        },
        "s3SchemaVersion": "1.0"
      },
      "responseElements": {
        "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH",
        "x-amz-request-id": "EXAMPLE123456789"
      },
      "awsRegion": "us-east-1",
      "eventName": "ObjectRemoved:Delete",
      "userIdentity": {
        "principalId": "EXAMPLE"
      },
      "eventSource": "aws:s3"
    }
  ]
}

请帮我找到用例的解决方案。

1 个答案:

答案 0 :(得分:1)

一种方法是启用版本控制和check the metadata of the last version

为避免永久删除已删除的版本,您可以设置过期策略或explicitly delete the version。我可能会同时使用它们来捕获事件处理器(lambda函数)失败并且无法删除文件的情况。