当我尝试一起使用/和子函数时遇到约束问题

时间:2017-09-21 19:13:25

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

我正在尝试用/形成一个文本。这是我的cloudformation代码:

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

类型

如何实现上述目标并传递约束问题?或者它有可能吗?

1 个答案:

答案 0 :(得分:1)

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

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

根据AWS::KMS::Alias的Cloudformation文档,您必须包含/

在这种情况下,您不需要DependsOn,因为KMSKey

中引用了TargetKeyId