让 cloudformation 等待,直到在 s3 中创建一个对象。

问题描述 投票:1回答:3

我正在尝试一个场景,在这个场景中,云的形成必须等到对象在指定的桶中创建(对象的创建发生在外部应用程序的云形成范围之外)。

我试着启用 bucket 事件通知并钩住 lambda 函数(因此每当有对象在 bucket 中创建时,lambda 函数就会被触发)。但我不知道如何让云的形成等到这个钩住的lambda函数执行被调用。

如果有任何关于如何实现这种情况的想法,请告诉我。

amazon-web-services amazon-s3 aws-lambda amazon-cloudformation
3个回答
0
投票

我想下面的方法应该可行。

  1. 创建... 等待条件处理
  2. 创建一个lambda函数,并通过 !Ref 到作为环境变量创建的等待条件句柄。当您使用 !Ref 一个等待条件,你会得到一个url地址。lambda只有一个任务--当调用时调用url。
  3. 创建 等待条件 并将其与步骤1中创建的等待句柄关联。
  4. 添加 取决于 的属性。WaitCondition 以便在CFN应该暂停和等待之前,在最后一个要创建的资源之后创建条件。
  5. 当你得到你的对象时,使用S3通知(就像你在问题中已经写的那样)来调用步骤2中创建的lambda。Lambda被调用,调用url,等待条件停止等待,CFN应该继续。

有了上面的方法,就不会出现循环或长跑的过程,比如每2分钟调用一个lambda。

的最大超时时间。WaitCondition 是12小时。比如你应该调整为40分钟或1小时。



0
投票

您可以尝试使用自定义CloudFormation资源。https:/docs.aws.amazon.comAWSCloudFormationlatestUserGuidetemplate-customresources-sns.html。. 这就要求您可以向通过 SNS 通知提供的 S3-url 发送 http 请求。

您将根据SNS通知创建文件(使用lambda?

© www.soinside.com 2019 - 2024. All rights reserved.