【发布时间】:2017-10-23 04:13:08
【问题描述】:
我有一个 AWS CloudFormation 模板,用于创建 OpsWorks 堆栈并部署应用程序。为了部署应用程序,我使用了一个 Lambda 函数和一个使用该函数的自定义资源。我的问题是:那个 Lambda 函数只会在创建堆栈的过程中执行一次,然后就再也不会被使用了。 AWS CloudFormation 有没有办法在堆栈执行结束时删除 Lambda 函数?
【问题讨论】:
-
如果你删除堆栈,或者更新自定义资源,它也会再次调用,所以删除它可能并不理想。您可能会考虑在单独的堆栈中创建 lambda,然后导出其 ARN 并使用它,而不是内联自定义资源;那么至少您不会为您创建的每个使用自定义资源的堆栈提供额外的功能。
-
明白。但是对于我们的用例,我们已经有很多 lambda 函数,并且有更多无用的函数是不可取的。如果我们创建另一个堆栈,lambda 将会以任何方式再次创建,所以在它完成工作之后我们真的不需要拥有它
-
您可以在函数运行后立即从函数内部删除该函数。但你真的是在给自己找麻烦。当您删除堆栈时,CF 将尝试调用 lambda,如果您更新它,它也可能会被调用,具体取决于参数。 CustomResources 不应该是一次性脚本。另一种选择是将调用 cloudformation 包装成一个脚本,并让该调用部署。祝你好运!
-
您是否有说明在删除 cloudformation 堆栈时再次调用 lambda 函数的 aws 文档?
-
docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/… - 第一行:“当模板开发人员删除包含自定义资源的堆栈时,将发送 RequestType 设置为“Delete”的自定义资源提供程序请求。成功删除具有自定义资源的堆栈资源,自定义资源提供者必须成功响应删除请求。”
标签: json instance aws-lambda amazon-cloudformation aws-opsworks