【问题标题】:Reference Role from UserData in YAML Cloudformation templateYAML Cloudformation 模板中来自 UserData 的引用角色
【发布时间】:2017-03-01 15:32:20
【问题描述】:

我正在以“新”YAML 格式编写 cloudformation 模板,但我不确定如何翻译 UserDate 部分中出现的 Ref 语句。 userdata 中的数据是包含单元文件的 CoreOS 的云配置。该模板在 JSON 中工作正常,但我不知道如何在 YAML 中构造 Ref 语句。

我的用户数据部分的顶部如下:

  UserData:
    Fn::Base64: 
      !Sub | 

这引用了一个参数,它工作正常

Environment=NRSYSMOND_license_key=${NewRelicLicenseKey}

这应该引用模板创建的动态 IAM 角色。 CF 似乎没有用角色的 ID 交换值

Environment=IAM_ROLE=${InstanceRole}

这会导致 CoreOS 出错,因为它无法解析变量 意味着它没有被换掉

Environment=IAM_ROLE=${!Ref InstanceRole}

如果它们是在同一个 CF 模板中创建的,是否不能从 userdata 部分引用诸如角色之类的对象?使用 AWS::* 资源或使用参数时,替换效果很好。

【问题讨论】:

  • 我也想知道

标签: amazon-cloudformation


【解决方案1】:

如果您拥有名为 InstanceRole 的资源,如下所示:

Resources:
  InstanceRole:
    Type: "AWS::IAM::Role"
    Properties:
      etcetc

您应该能够按照您的建议进行操作,但是您也可以将 Ref 值传递给要替换的变量,如下所示。 http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-sub.html底部多一点解释

  UserData:
    Fn::Base64: 
      !Sub
      - |
        Environment=IAM_ROLE=${InstanceRole}
      - InstanceRole:
          Ref: InstanceRole

如果您给 InstanceRole 资源一个 name 属性并期望它是返回的值,那么这将不起作用,AFAIK

【讨论】:

    猜你喜欢
    • 2021-06-07
    • 2017-06-18
    • 2020-07-12
    • 2020-09-30
    • 2017-05-16
    • 2021-08-20
    • 2019-03-21
    • 1970-01-01
    • 2017-08-20
    相关资源
    最近更新 更多