我正在尝试使用根堆栈运行嵌套堆栈,该堆栈创建多个资源,包括 S3 存储桶和 Cognito 用户池。问题是:
- S3 存储桶名称不允许使用大写字母。
- Cognito 身份池名称不允许使用破折号
-
。
我想使用相同/相似的名称 ${AWS::StackName}-then-some-string
命名我的资源,以便将它们识别为一个应用程序的一部分。
有没有办法从cloudformation内的参数中删除破折号?我知道我可以使用 Fn::Split
用 -
分割字符串,然后使用 Fn::Select
选择特定元素,然后 Fn::Join
但这仅适用于具有一定数量的破折号 -
的堆栈名称。
我在任何地方都找不到任何关于如何使用某种函数或正则表达式将 -
更改为空字符串或其他内容的资源。
最佳答案
您就快到了 - 使用 Fn::Split
和 Fn::Join
,无需选择。
SomeKey:
Fn::Join:
- ''
- Fn::Split:
- '-'
- !Ref YourParam
Split
返回一个数组。 Join
接受一个连接字符串和一个要连接的项目数组。因此,只需在连字符/破折号上拆分,然后用空字符串将各个部分重新连接在一起,从而消除连字符。
关于amazon-web-services - Cloudformation 从参数中删除破折号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56670535/