amazon-web-services - 实际上 Amazon S3 何时触发 Lambda

标签 amazon-web-services amazon-s3 aws-lambda aws-sdk awss3transfermanager

我有一个非常大的文件(估计有 50MB)。我将此文件上传到 S3 目录,然后触发 Lambda 函数。我正在使用 TransferManager 进行 S3 上传。

我看了AWS文档中关于Lambda和S3的内容,上面说在S3中创建文件时会触发Lambda函数,但我仍然想知道创建的文件是否意味着文件已完全上传。

我的问题:因为文件比较大,所以上传时有微小的延迟,那么Lambda函数是在文件上传完成之前触发还是在上传完成之后触发?例如:上传一个大文件时,网络断了,文件可能坏了,那么Lambda函数还会被触发吗?

最佳答案

虽然非常大是一个相对术语,但 S3 用于处理比这大得多的文件,因此 AWS 想到了这一点。 Lambda 事件将文件完全创建后触发。

documentation对此进行了更详细的描述。

虽然没有明确提到文档说:

Amazon S3 invokes your function asynchronously with an event that contains details about the object. The following example shows an event that Amazon S3 sent when a deployment package was uploaded to Amazon S3.

(强调我的)

由于它包含有关对象的详细信息(包括其大小),因此该对象将已完整上传,否则不会为人所知 - 这是一个包含大小的示例事件:

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

关于amazon-web-services - 实际上 Amazon S3 何时触发 Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57893592/

相关文章:

amazon-web-services - 当堆栈创建/更新失败时,如何验证云形成堆栈是否启用了自动回滚?

amazon-web-services - AWS Lambda "errorMessage": Task timed out after 3. 00 秒

aws-lambda - AWS Lambda : Accuracy of system clock

javascript - 使用 Javascript SDK 从 AWS s3 存储桶获取对象 : "missing credential" error

python - boto3 aws 删除所有入站安全组规则

amazon-s3 - 在 cloudflare workers 中使用 aws4fetch 包调用 AWS api?

python - 将模型状态从内存或python opencv中的字符串加载到FaceRecognizer

python - 如何使用 Python 在 Lambda 中创建 CSV?

amazon-web-services - AWS Stepfunctions 结果路径 - 附加到 JSON 而不是嵌套

python-3.x - 如何在 sagemaker notebook 中打开存储在 S3 存储桶中的模型 tarfile?