选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

使用 Lambda 处理 Amazon S3 事件通知

聚焦模式
使用 Lambda 处理 Amazon S3 事件通知 - AWS Lambda

您可以使用 Lambda 来处理来自 Amazon Simple Storage Service 的事件通知。Amazon S3 可以在创建或删除对象时向 Lambda 函数发送事件。您在存储桶上配置通知设置,并向 Amazon S3 授予权限来根据函数的基于资源的权限策略调用函数。

警告

如果您的 Lambda 函数使用触发它的同一存储桶,则会导致在一个循环中运行该函数。例如,如果每当上传一个对象,存储桶就触发某个函数,而该函数又上传一个对象给存储桶,则该函数间接触发了自身。为避免这种情况,请使用两个存储桶,或将触发器配置为仅适用于传入对象所用的前缀。

Amazon S3 使用包含有关对象的详细信息的事件异步调用您的函数。以下示例显示了在将部署包上载到 Amazon S3 时 Amazon S3 发送的事件。

例 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": "amzn-s3-demo-bucket", "ownerIdentity": { "principalId": "A3I5XTEXAMAI3E" }, "arn": "arn:aws:s3:::lambda-artifacts-deafc19498e3f2df" }, "object": { "key": "b21b84d653bb07b05b1e6b33684dc11b", "size": 1305107, "eTag": "b21b84d653bb07b05b1e6b33684dc11b", "sequencer": "0C0F6F405D6ED209E1" } } } ] }

要调用您的函数,Amazon S3 需要来自该函数的基于资源的策略的权限。当您在 Lambda 控制台中配置 Amazon S3 触发器时,该控制台将修改基于资源的策略以允许 Amazon S3 在存储桶名称和账户 ID 匹配时调用函数。如果您在 Amazon S3 中配置通知,请使用 Lambda API 更新策略。您还可以使用 Lambda API 向另一个账户授予权限,或将权限限制到指定的别名。

如果您的函数使用 AWS 开发工具包来管理 Amazon S3 资源,则其执行角色也需要 Amazon S3 权限。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。