我可以创建一个由创建 S3 存储桶触发的 Amazon AWS Lamda 函数吗?

我可以创建一个由创建 S3 存储桶触发的 Amazon AWS Lamda 函数吗?

我希望在我们的 AWS 帐户上创建新存储桶时发送一封邮件。我希望这是近乎即时的,所以最好不是按时间安排,而是由 CreatBucket 事件直接触发。

当我尝试创建新函数并配置 S3 触发器时,存储桶选择是强制性的

答案1

编辑

作为@michael-sqlbot在评论中指出,您尝试实现的目标可能是可行的,但需要多步骤过程。CloudTrail 可以记录 S3 存储桶级事件(https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudtrail-logging.html) 包括创建存储桶,然后可以将其配置为生成 CloudWatch 事件,最后您可以使用特定的 CloudWatch 事件作为 Lambda 的触发器。


这不是直接地支持,以下是 S3 可以生成的所有事件的列表:

  • s3:ObjectCreated:*
  • s3:ObjectCreated:Put
  • s3:ObjectCreated:Post
  • s3:ObjectCreated:Copy
  • s3:ObjectCreated:CompleteMultipartUpload

Amazon S3 API(例如 PUT、POST 和 COPY)可以创建对象。使用这些事件类型,您可以在使用特定 API 创建对象时启用通知,或者可以使用 s3:ObjectCreated:* 事件类型来请求通知,而不管使用哪个 API 创建对象。

您将不会收到操作失败的事件通知。

  • s3:ObjectRemoved:*
  • s3:ObjectRemoved:Delete
  • s3:ObjectRemoved:DeleteMarkerCreated

通过使用 ObjectRemoved 事件类型,您可以在从存储桶中删除一个对象或一批对象时启用通知。

您可以使用 s3:ObjectRemoved:Delete 事件类型请求在删除对象或永久删除版本控制对象时收到通知。或者,您可以使用 s3:ObjectRemoved:DeleteMarkerCreated 请求在为版本控制对象创建删除标记时收到通知。有关删除版本控制对象的信息,请参阅删除对象版本。您还可以使用通配符 s3:ObjectRemoved:* 请求在删除对象时收到通知。

您将不会收到生命周期策略自动删除或操作失败的事件通知。

  • s3:ReducedRedundancyLostObject

您可以使用此事件类型请求 Amazon S3 在检测到 RRS 存储类的对象丢失时发送通知消息。

所有事件都在对象级别起作用,需要存储桶存在。

来源: https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html#supported-notification-event-types

相关内容