Amazon cloudformation YAML Cloudformation模板中UserData的引用角色

Amazon cloudformation YAML Cloudformation模板中UserData的引用角色,amazon-cloudformation,Amazon Cloudformation,我正在用“新”YAML格式编写一个cloudformation模板,我不知道如何翻译UserDate部分中出现的Ref语句。userdata中的数据是包含单位文件的CoreOS的云配置。该模板在JSON中运行良好,但我不知道如何在YAML中构造Ref语句 “我的用户数据”部分的顶部如下所示: UserData: Fn::Base64: !Sub | 这引用了一个参数,它可以正常工作 Environment=NRSYSMOND_license_key=${NewRel

我正在用“新”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:::*资源或使用参数时,替换工作正常。

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

Resources:
  InstanceRole:
    Type: "AWS::IAM::Role"
    Properties:
      etcetc
您应该能够执行您的建议,但是您也可以将Ref值传递到要替换的变量中,如下所示。在这本书的底部有更多的解释


如果您给InstanceRole资源一个name属性,并希望它是返回的值,那么这将不起作用,我也想知道
  UserData:
    Fn::Base64: 
      !Sub
      - |
        Environment=IAM_ROLE=${InstanceRole}
      - InstanceRole:
          Ref: InstanceRole