aws-cloudformation - Cloudformation 嵌套堆栈命名

标签 aws-cloudformation

我正在构建一个嵌套的 Cloudformation 堆栈,其中的子模板多次使用。

我希望不同的资源(S3 存储桶、目标组等)使用 AWS::StackName 作为其名称的一部分。

!Sub ${AWS::StackName}-s3bucket

嵌套堆栈名称通常包含 AWS 生成的大写字符串,例如:

foobar-vpcstack-YN4842UYLUFL

但是,某些资源只允许全小写的名称。 有没有办法保证嵌套的栈名全部小写?

或者是否有更好的方法来处理嵌套堆栈及其资源的命名?

最佳答案

我使用以下规则为嵌套 Cloudformation 堆栈中的 s3 存储桶设置 BucketName。它确保存储桶名称全部小写且唯一。

"BucketName": {"Fn::Join": ["-", [
    "foo", {"Fn::Select": ["2", {"Fn::Split": ["/", {"Ref": "AWS::StackId"}]}]}
]]}

foo:是存储桶名称的前缀。

Fn::Select ...:该函数获取StackId的最后一部分。

给定示例 StackId:arn:aws:cloudformation:ap-northeast-1:888888:stack/ParentStack-ChildStack-11MKHI1KPKH7O/1f29c920-82d1-11eb-85b7-0ebec92bca7d

上面的代码为 BucketName 返回以下字符串:foo-1f29c920-82d1-11eb-85b7-0ebec92bca7d

关于aws-cloudformation - Cloudformation 嵌套堆栈命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56590840/

相关文章:

amazon-web-services - 如何在 Cloudformation 模板/CDK 中添加 AWS IoT 预置模板

amazon-web-services - CloudFormation、S3 存储桶访问跨账户 IAM 角色

amazon-web-services - 当堆栈创建/更新失败时,如何验证云形成堆栈是否启用了自动回滚?

amazon-web-services - 如何使用 CloudFormation 在现有 EC2 实例上启动容器?

cors - 飞行前响应 403 禁止。如何在没有 x-api-key 的情况下允许选项方法?

amazon-web-services - 连接资源之前如何在 EC2 实例上运行 Elastic Beanstalk 命令

aws-cloudformation - 仅使用托管 cloudformation 策略创建 IAM 角色

amazon-web-services - 未检测到本地 SparkleFormation 文件

amazon-web-services - sam模板中未应用该参数

amazon-web-services - aws cloudformation - 权限控制/例程