amazon-web-services - Cloudformation 从参数中删除破折号

标签 amazon-web-services amazon-s3 aws-cloudformation amazon-cognito

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

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

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

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

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

最佳答案

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

SomeKey:
  Fn::Join:
  - ''
  - Fn::Split:
    - '-'
    - !Ref YourParam

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

关于amazon-web-services - Cloudformation 从参数中删除破折号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56670535/

相关文章:

amazon-web-services - 使用无服务器框架创建 S3 存储桶并添加文件

amazon-web-services - 使用授权者后出现 AWS Amplify API Gateway cors 错误 : aws_iam

amazon-web-services - 如何将AWS漂移的堆栈资源恢复到预期状态

amazon-web-services - 负载均衡器后面的 HTTPS->HTTP 是否被认为是安全的?

amazon-web-services - AWS CloudFormation 映射区域之间的不同环境

spring - 在 Amazon Beanstalk 上处理 Spring Boot 集群 Websocket

java - 有没有办法在用 Java 创建文件时将文件发送到 AWS S3 存储桶?

macos - 如何 SFTP 到 Amazon EC2 Ubuntu t1.micro 实例?

amazon-web-services - 尝试将文件复制到 AWS S3 存储时出错

python - 如何使用 python 将文件上传到 Amazon S3 签名的 url?