在cloudformation中的s3 bucket ObjectCreated事件上执行lambda

时间:2017-12-13 05:08:04

标签: amazon-web-services amazon-s3 aws-lambda amazon-cloudformation amazon-sns

我需要在许多s3存储桶中的ObjectCreated事件上启动一些lambda函数。但是我的应用程序的体系结构需要模块化,因此,我必须创建两个不同的模板,一个用于我的存储桶创建,另一个用于lambdas。据我所知,实现这一目标的一种方法是使用SNS服务。

SNS

我们在存储桶创建模板中创建SNS主题,并通过s3的NotificationConfiguration属性向其提供ObjectCreated事件。在lambda模板中,我们可以将lambda订阅到上面提到的SNS主题,并且将在s3 ObjectCreated事件上调用lambda函数。 但同样,该架构不允许使用SNS。

可能的方式

是否可以在不使用SNS和模块化的情况下做到这一点,例如为存储桶和lambda创建两个单独的模板,并在第三个模板中使用它们的通知配置来完成链。

最终问题

我不能使用SNS,我想要模块化,如何在s3事件中调用我的lambda函数?我的限制甚至可能吗? 谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用存储桶属性中的事件直接从S3触发功能。 http://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html

您还可以使用CloudWatch事件规则来触发您的功能。为此:

  1. 转到AWs控制台并选择服务>的CloudWatch。
  2. 选择左侧“事件”下的“规则”。
  3. 选择创建规则。
  4. 选择保留事件模式。
  5. 从服务名称下拉列表中选择简单存储服务(S3)。
  6. 从“事件类型”下拉列表中选择“对象级别操作”。
  7. 选择特定操作。
  8. 从下拉列表中选择PutObject。
  9. 按名称选择特定桶。
  10. 输入存储桶名称。
  11. 选择右侧的+添加目标*。
  12. 选择要触发的Lambda函数。
  13. 选择页面底部的配置详细信息。
  14. 输入规则名称。
  15. 选择创建规则完成。