amazon-web-services - 如何从 AWS S3 "ObjectRemoved:Delete"事件获取文件大小

标签 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"
    }
  ]
}

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

最佳答案

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

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

关于amazon-web-services - 如何从 AWS S3 "ObjectRemoved:Delete"事件获取文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48546482/

相关文章:

amazon-web-services - 使用 AWS Elastic Beanstalk 将多个应用程序部署到单个 EC2 实例

amazon-web-services - 在 AWS CloudFormation 的 DashboardBody 中使用 Fn::FindInMap

node.js - 如何使用node.js在aws s3中停止图像下载而不是图像显示

Django 1.8 - 静态文件如何神奇地猜测散列文件名

amazon-web-services - CloudFormation API Gateway Lambda 集成请求未获得正确的权限?

amazon-web-services - AWS Redshift Spectrum - 如何获取外部表中的 s3 文件名

amazon-web-services - Lambda 的 aws-sdk 不是最新的吗?

java - 如何使用 software.amazon.awssdk.http.service.impl 解决此运行时错误 "Multiple HTTP implementations were found on the classpath"

android - 在 AWS IOT 中调用 getShadow/updateShadow 时出现 ForbiddenError 403

amazon-web-services - 亚马逊 ELB 转发 http 请求更改 request.RemoteAddress