如何在存储桶名称中使用变量 AWS Cloudformation
Posted
技术标签:
【中文标题】如何在存储桶名称中使用变量 AWS Cloudformation【英文标题】:How to use variables in bucket names AWS Cloudformation 【发布时间】:2020-07-04 06:47:15 【问题描述】:我正在尝试创建用于创建 S3 存储桶的 Cloudformation 模板。我想对其进行配置,以便使用传递给模板的参数之一来命名存储桶。我可以在模板中的其他位置替换参数,但是当我尝试将它分到这里时,存储桶创建失败。
Resources:
S3Bucket:
Type: 'AWS::S3::Bucket'
Properties:
BucketName: !Sub '$STRING_PARAM-example-bucketname'
这会在创建 cloudformation 堆栈时提供Bad Request (Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request
。我已经尝试在有效的名称中进行硬编码,所以我很确定它是一个有效的 S3 存储桶名称。
根据S3 Creation CloudFormation results in 400 Bad Request 引用(! Ref
而不是! Sub
)到参数/资源直接有效,但我想我应该能够像其他任何地方一样在这里子参数。
【问题讨论】:
嗨!请发布完整的模板,以便我们重现错误。另外,您的问题标题是“如何使用通配符存储桶名称”,但您没有在问题中提及通配符? 失败怎么办?您确定这是一个有效的存储桶名称吗? @kichik 查看编辑 堆栈事件选项卡中是否存在更具描述性的错误? 您能否在您的模板中提供STRING_PARAM
定义?
【参考方案1】:
BucketName
的值很好。这是使用 !Sub
的正确语法,应该可以使用。
问题是参数的名称必须是字母数字,所以STRING_PARAM
是无效的,因为它有一个下划线字符。
将您的参数名称更新为StringParam
之类的名称,它应该可以让您摆脱Parameter name STRING_PARAM is non alphanumeric.
错误消息。
【讨论】:
以上是关于如何在存储桶名称中使用变量 AWS Cloudformation的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Terraform 变量中连接 S3 存储桶名称并将其传递给主 tf 文件