我正在尝试创建一个启动网,它在我的云形式堆栈中引用 iaminstanceProfile 。这是代码 - 我省略了无关的部分:
...
Resources:
ServerLaunchTemplate:
Type: 'AWS::EC2::LaunchTemplate'
Properties:
LaunchTemplateData:
InstanceType: !Ref InstanceType
SecurityGroups:
- !Ref SecGroup
IamInstanceProfile: !Ref ServerProfile
UserData:
...
ServerProfile:
Type: 'AWS::IAM::InstanceProfile'
Properties:
Path: /
Roles:
- !Ref ServerRole
...
serverprofile 成功创建了。但是,当堆栈创建过程达到创建 serverlaunchtemplate 的步骤时,它会失败。
Property validation failure: [Value of property {/LaunchTemplateData/IamInstanceProfile} does not match type {Object}]
如果我省略了对 iaminstanceProfile 的引用,则成功创建了启动网络。
根据文档和一些示例,这应该有效...基于我理解的错误, instanceType lainmytemplate的字段需要参考对象,但是" !ref InstanceType "返回资源ID。
我该如何解决?我该如何检索对象,大概是" /lainmyTemplatedAta/iaminstanceProfile "字段?
谢谢
在文档中易于错过:iaminstanceProfile需要一个iaminstanceprofile云形式对象,其中引用的iaminstanceProfile是其属性。
请参阅https://docs.aws.amazon.com/awscloudformation/latest/userguide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-cfn-ec2-launchtemplatetemplate-launchtemplate-launchtemplatetata-iaminstanceprile and doctpsprofile and ytpps:///////////位https。aws.amazon.com/awscloudformation/latest/userguide/aws-properties-ec2-launchtemplate-iaminstanceprofile.html。
这应该有效:
PortalLaunchTemplate:
Type: 'AWS::EC2::LaunchTemplate'
Properties:
LaunchTemplateName: !Sub ${InstanceName}-launch-template
LaunchTemplateData:
ImageId: !Ref AmiId
...
IamInstanceProfile:
Arn: !GetAtt InstanceProfile.Arn
对我有用的是:
"IamInstanceProfile":{ "Arn":
{
"Fn::Sub":"arn:aws:iam::${AWS::AccountId}:instanceprofile/${name_of_Instance_profile}"
}
大概是因为它需要" arnn"值为字符串。