使用api调用结果作为CloudFormation资源的参数



是否有办法使CloudFormation参数动态?我知道系统管理器参数,但我必须再次手动更改其值。我想在我的CloudFormation资源中使用API调用或脚本(Bash, python)的结果

例如,作为参数的一部分,运行API调用以获取一些数据(任何数据),然后将结果使用/引用到资源中,并且所有这些都在一个模板中。

您可以使用Cloudformation Custom资源来实现类似的效果,但有一些注意事项。

作为一个例子,我们可以使用AWS CDK,它提供了一个模块来创建自定义资源,甚至有一个专门设计的包装器来调用AWS API并返回结果:https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_custom-resources.AwsSdkCall.html

要记住的事情:

  1. 自定义资源需要以{'PhysicalResourceId': ..., Data: {"MyAttribute": ...}}形式返回值,以便支持使用!GetAtt MyResource.MyAttribute样式的引用
  2. 像任何其他CF资源一样,自定义资源不会在每次更新时触发,只有当资源的一个参数发生变化时才会触发。因此,如果你在堆栈创建时为API调用提供了一些参数,除非你改变值,否则不会发生更新,也不会触发API调用。

最新更新