fra*_*ong 2 amazon-s3 amazon-web-services awss3transfermanager aws-sdk aws-lambda
我有一个非常大的文件(估计 50MB)。我将此文件上传到 S3 目录,然后触发 Lambda 函数。我正在使用 TransferManager 进行 S3 上传。
我阅读了有关 Lambda 和 S3 的 AWS 文档,它说在 S3 中创建文件时会触发 Lambda 函数,但我仍然想知道创建的文件是否意味着文件已完全上传。
我的问题:由于文件较大,上传延迟很小,所以Lambda函数是在文件完全上传之前还是之后触发的?例如:上传大文件时,网络关闭,文件可能损坏,那么Lambda函数还会被触发吗?
虽然非常大是一个相对术语,但 S3 用于处理比这大得多的文件,因此 AWS 想到了这一点。LAMBDA事件将被触发后,该文件已被完全建立。
该文档描述得更详细。
虽然没有明确提到文档说:
Amazon S3 使用包含对象详细信息的事件异步调用您的函数。以下示例显示了在将部署包上传到 Amazon S3 时 Amazon S3 发送的事件。
(强调我的)
由于它包含有关对象的详细信息,包括其size,因此该对象将已完全上传,否则将不知道 - 这是一个包含大小的示例事件:
{
  "Records": [
    {
      "eventVersion": "2.1",
      "eventSource": "aws:s3",
      "awsRegion": "us-east-2",
      "eventTime": "2019-09-03T19:37:27.192Z",
      "eventName": "ObjectCreated:Put",
      "userIdentity": {
        "principalId": "AWS:AIDAINPONIXQXHT3IKHL2"
      },
      "requestParameters": {
        "sourceIPAddress": "205.255.255.255"
      },
      "responseElements": {
        "x-amz-request-id": "D82B88E5F771F645",
        "x-amz-id-2": "vlR7PnpV2Ce81l0PRw6jlUpck7Jo5ZsQjryTjKlc5aLWGVHPZLj5NeC6qMa0emYBDXOo6QBU0Wo="
      },
      "s3": {
        "s3SchemaVersion": "1.0",
        "configurationId": "828aa6fc-f7b5-4305-8584-487c791949c1",
        "bucket": {
          "name": "lambda-artifacts-deafc19498e3f2df",
          "ownerIdentity": {
            "principalId": "A3I5XTEXAMAI3E"
          },
          "arn": "arn:aws:s3:::lambda-artifacts-deafc19498e3f2df"
        },
        "object": {
          "key": "b21b84d653bb07b05b1e6b33684dc11b",
          "size": 1305107,
          "eTag": "b21b84d653bb07b05b1e6b33684dc11b",
          "sequencer": "0C0F6F405D6ED209E1"
        }
      }
    }
  ]
}
| 归档时间: | 
 | 
| 查看次数: | 298 次 | 
| 最近记录: |