YAML Cloudformation 模板中 UserData 的引用角色
Reference Role from UserData in YAML Cloudformation template
我正在用 'new' 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部分引用对象(例如Roles)?使用 AWS::* 资源或使用参数时,替换工作正常。
如果您拥有名为 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 资源一个名称 属性 并期望它是返回的值,那么这将不起作用,AFAIK
我正在用 'new' 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部分引用对象(例如Roles)?使用 AWS::* 资源或使用参数时,替换工作正常。
如果您拥有名为 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 资源一个名称 属性 并期望它是返回的值,那么这将不起作用,AFAIK