Cloudformation 从参数中删除破折号

Vie*_*iet 2 amazon-s3 amazon-web-services aws-cloudformation amazon-cognito

我正在尝试使用根堆栈运行嵌套堆栈,该堆栈创建多个资源,包括 S3 存储桶和 Cognito 用户池。问题是:

  • S3 存储桶名称不允许大写字母。
  • Cognito 身份池名称不允许破折号-

我想用相同/相似的名称命名我的资源,${AWS::StackName}-then-some-string以便它们被识别为一个应用程序的一部分。

有没有办法从 cloudformation 中的参数中删除破折号?我知道我可以使用Fn::Split拆分字符串-然后使用Fn::Select来选择特定元素,Fn::Join但这仅适用于具有一定数量破折号的堆栈名称-

我在任何地方都找不到任何关于如何-使用某种函数或正则表达式将字符串更改为空字符串或其他内容的资源。

404*_*404 8

您就快到了 - 使用Fn::SplitFn::Join,无需选择。

SomeKey:
  Fn::Join:
  - ''
  - Fn::Split:
    - '-'
    - !Ref YourParam
Run Code Online (Sandbox Code Playgroud)

Split返回一个数组。Join接受一个连接字符串和一个要连接的项目数组。因此,只需在连字符/破折号上拆分,然后用空字符串将各部分重新连接在一起,从而消除连字符。