删除Lambda支持的自定义资源的支持Lambda函数

时间:2017-05-23 09:28:19

标签: json instance aws-lambda amazon-cloudformation aws-opsworks

我有一个 AWS CloudFormation 模板,用于创建 OpsWorks 堆栈并部署应用程序。为了部署应用程序,我使用Lambda函数和使用该函数的自定义资源。我的问题是:Lambda函数只会在创建堆栈期间执行一次,然后再也不会再使用它。有没有办法在堆栈执行结束时通过 AWS CloudFormation 删除Lambda函数?

3 个答案:

答案 0 :(得分:2)

首先,我应该说Aditya是对的,你不应该删除在整个生命周期中使用的支持Lambda。

但是,如果您真的想要这样做,一种方法是在运行后简单地使用删除自身(和相关资源,例如角色)功能。

答案 1 :(得分:1)

  

Lambda函数只会在执行期间执行一次   创建堆栈,然后永远不会再使用它。

^^情况并非如此。每次触摸(即创建,更新或删除)相应的资源时,将调用用于Lambda支持的自定义资源的支持Lambda函数。 AWS CloudFormation每次看到正在触摸资源时都会将 RequestType 参数传递给该函数,并将其传递给these values &fl=*,[child parentFilter="isparent:true" limit=10] Create,{ {1}}。您的Lambda函数应该执行将该参数考虑在内的必要操作。根据您的问题,您的Lambda函数似乎只适合Update

此外,根据AWS docs,您不需要为创建Lambda函数付费,但只有在您实际调用它时才会收费。因此,成本不能阻止保持功能的因素。 相反,如果您担心的是您不想要额外的 clutter ,您可以尝试创建一个通用 CloudFormation堆栈,其工作将是创建共享资源,而您那么可以在那里定义Lambda函数吗?我必须知道您的整个工作流程,以确定该方法是否有效。

对于它的价值,我建议不要删除Lambda支持的自定义资源的支持功能,因为当某人将来触摸相应的资源时,或者想要创建相同的另一个实例时会很痛苦资源类型。

答案 2 :(得分:0)

您对自定义资源的一些假设并非如此。在Lambda支持的自定义资源中,您可以实现逻辑以支持资源的创建,更新和删除。这些指示是通过事件从CloudFormation发送的,并为您提供有关堆栈过程的信息。

  

了解自定义资源生命周期非常重要,以防止删除数据。

     

创建 - 这很容易,当创建资源时,请求类型为Create的事件将发送到您的函数。

     

删除 - 这个更棘手。删除资源时,将发送删除请求类型。但是除了资源删除之外还有更多场景。我们必须首先解释更新。

     

更新 - 如果更改了任何自定义资源属性,则会调用它。例如,在我们的应用程序中,我们可以修改允许的回调URL,这将触发具有更新请求类型的函数

我们欢迎您详细了解在this blog post

中创建自定义资源的最佳做法