amazon-web-services - 当我尝试一起使用/和子函数时出现约束问题

标签 amazon-web-services aws-cloudformation amazon-kms

我正在尝试用/组成一个文本。这是我的云信息代码:

Resources:
  KeyAlias:
    Type: AWS::KMS::Alias
    DependsOn: KMSKey  
    Properties:
      AliasName: alias/!Sub ${project}-${EnvironmentApp}
      TargetKeyId:
        Ref: KMSKey

我在这一行收到约束验证错误:

AliasName: alias/!Sub ${project}-${EnvironmentApp}

显然 cfn 不喜欢/那里。但是,当我用静态的东西替换子函数时,例如:

"AliasName": alias/test

此外,当我按如下方式使用 join 时:

      AliasName:
        - Fn::Join:
          - "/"
          - - 'alias'
            - Ref: project
            - Ref: EnvironmentApp 

我收到以下错误:

属性 AliasName 的值必须是 String 类型

如何实现上述目标并通过约束问题?或者说这根本有可能吗?

最佳答案

尝试使用 Sub 内部函数如下(未测试)

AliasName: !Sub
  - alias/${project}-${EnvironmentApp}
  - { project: !Ref project, EnvironmentApp: !Ref EnvironmentApp}

基于 AWS::KMS::Alias 的 Cloudformation 文档,您必须包含/

此外,在这种情况下,您不需要 DependsOn,因为 KMSKeyTargetKeyId 中引用

关于amazon-web-services - 当我尝试一起使用/和子函数时出现约束问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46351568/

相关文章:

amazon-web-services - CDK Diff 始终显示 API 网关部署的更改

amazon-web-services - Cloudformation 堆栈在执行所有用户数据之前显示为完整

amazon-web-services - 哪种方法适合加密大小大于 4KB 的消息?

aws-lambda - AWS-CDK:跨账户资源访问和资源引用

amazon-web-services - CloudFormation GUI 参数覆盖

python - AWS Lambda 在 S3 存储桶上触发到 Neptune "Failed to start new load for the source"

amazon-web-services - 模板中的NoEcho没有效果

amazon-web-services - KMS加密后无法从S3下载文件

python - 使用python获取带前缀的s3文件

amazon-web-services - AWS 云形成 : How to output a machine's PublicIP?