【问题标题】:executing lambda on s3 bucket ObjectCreated event in cloudformation在 cloudformation 中的 s3 存储桶 ObjectCreated 事件上执行 lambda
【发布时间】:2018-05-26 22:04:49
【问题描述】:

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

社交网络

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

可能的方式

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

最后一个问题

我不能使用 SNS 并且我想要模块化,如何在 s3 事件上调用我的 lambda 函数?我的限制是否可行? 谢谢

【问题讨论】:

  • 你可以使用Fn::ImportValue从他们的堆栈中导入 Lambda 函数吗?

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


【解决方案1】:

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

您还可以使用 CloudWatch 事件规则来触发您的函数。这样做:

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

【讨论】:

  • 我已经尝试过您建议的第一个选项。组合使用 s3 和 lambda 时,需要在同一模板中指定它们,否则 cloudformation 会引发错误。至于你的第二个选择,它看起来是一个可行的选择。我会试一试
  • 这不起作用,因为 lambda 没有触发器
猜你喜欢
  • 2019-08-12
  • 1970-01-01
  • 2015-04-30
  • 2016-12-09
  • 2022-01-27
  • 2020-03-03
  • 2016-07-20
  • 1970-01-01
  • 2018-04-29
相关资源
最近更新 更多