【问题标题】:How to get file size from AWS S3 "ObjectRemoved:Delete" event如何从 AWS S3“ObjectRemoved:Delete”事件中获取文件大小
【发布时间】:2018-01-31 16:04:52
【问题描述】:

背景

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

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

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

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

【问题讨论】:

  • 您可以在上传对象时将对象大小存储在 DynamoDB 中,然后在发生对象删除通知时检索该数据。不确定您的潜在需求是什么,但如果只是为了保持准确的存储桶大小或对象计数,那么您可以通过 CloudWatch 使用 S3 指标。
  • 感谢 Jarmod,为此我需要将 FileName 设置为 DynamoDB 表的 ID(哈希)吗?因为我只会从可用于检索文件详细信息的 deleteObject 事件中收到文件名。
  • 您可以使用对象键(与文件名不太一样),这很简单。除非您有数百万个对象和非常高的删除频率,在这种情况下,您需要考虑对象键的哈希。
  • 感谢 jarmod,我现在通过创建 DynamoDB 文件条目表解决了这个问题。

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


【解决方案1】:

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

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

【讨论】:

  • 感谢 Javier,想到了这种方法,但您不认为这会大大增加 S3 的成本吗?
  • 对我来说很难说。每天删除百分之几的对象?如果事件处理器可以删除版本,那将是一个非常短的额外时间。
  • 嗨哈维尔,我最终使用了你建议的方法,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-15
  • 2019-12-01
相关资源
最近更新 更多