我正在尝试使用以下代码通过ansible创建:
– name: Create EC2 Instance(s)
ec2:
region: “{{ vpc_region }}”
instance_profile_name: “{{ instance_profile_name }}”
group: “{{ ec2_security_group_name }}”
keypair: “{{ ec2_key_name }}”
…..
仍然总是输出以下内容:
任务[扫描仪:创建EC2实例] ************************************ ****
致命:[127.0.0.1]:失败! => {“已更改”:false,“failed”:true,“msg”:“实例创建失败=> InvalidParameterValue:参数iamInstanceProfile.name的值(my-role-for-ansible)无效。无效的IAM实例配置文件名称“}
虽然我认为我在AWS中为我的用户定义了正确的策略,如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt14844231360000",
"Effect": "Allow",
"Action": [
"iam:PassRole"
],
"Resource": [
"arn:aws:iam::11111111:role/my-role-for-ansible"
]
}
]
}
以上是否有问题?
答案 0 :(得分:1)
在我的情况下,Packer抛出此错误,这是因为不存在匹配角色。
一次AWS文档实际上是有帮助的:https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html
答案 1 :(得分:0)
之所以会这样,是因为您必须创建一个额外的IAM角色,一个实例配置文件。
您可以在启动时将IAM实例配置文件附加到Amazon EC2实例,也可以将其附加到先前启动的实例。有关更多信息,请参见Instance Profiles。
我通过遵循the console instructions section of these AWS docs.
解决了此问题关键部分是上述说明的第9步(上面已链接):
在“创建角色”页面上,选择AWS服务,然后从选择 将使用此角色列表的服务,请选择EC2。
一旦您将角色与特定的服务类型(在我的情况下为EC2)相关联,便一切正常。
答案 2 :(得分:0)
RootInstanceProfile:
Type: 'AWS::IAM::InstanceProfile'
Properties:
Path: /
Roles:
- !Ref RootRole
RootRole:
Type: 'AWS::IAM::Role'
ec2:
IamInstanceProfile: !Ref RootInstanceProfile
如果您使用 cloudformation 创建所有内容,则需要一个角色,但您不能直接引用该角色。您必须创建一个引用角色的实例配置文件。然后在 ec2 属性中,您可以在 IamInstanceProfile 属性中引用实例配置文件。