由于 IamInstanceProfile 无效,无法创建启动配置

由于 IamInstanceProfile 无效,无法创建启动配置

尝试创建启动配置项时出现此错误:

启动配置问题:调用操作时发生错误(ValidationError):无效的 IamInstanceProfile:AWS_EC2_INSTANCE_PROFILE_ROLE

使用 boto 3 执行以下类型的代码:

self.as_client.create_launch_configuration(
                KeyName=f"{self.vpcid}-{self.profile_name}.pem",
                IamInstanceProfile=self.inst_prof_name,
                ImageId=self.ec2_inst.ami,
                InstanceType=self.ec2_inst.type,
                LaunchConfigurationName=self.ec2_inst.lc_name,
                SecurityGroups=[x.id for x in self.sec_groups.values()],
                UserData=userdata,
            )

我创建了 2 个本地管理策略并将它们附加到角色,然后将该角色分配给实例配置文件。(似乎 boto3 不允许查看角色中的本地管理策略,只能查看管理的 AWS 策略,除非明确尝试):

print(iam_client.get_role_policy(RoleName="EC2AppRole",PolicyName="CloudWatchSendPolicy"))
print(iam_client.get_role_policy(RoleName="EC2AppRole",PolicyName="AwsSecretsPolicy"))

以下是包含政策详细信息的角色:

== 角色:EC2AppRole ==

{'RoleName':'EC2AppRole','PolicyName':'CloudWatchSendPolicy','PolicyDocument':{'Version':'2012-10-17','Statement':[{'Action':['autoscaling:Describe*','cloudwatch:', '日志:', 'sns:'], '效果': '允许', '资源': ''}]},

{'RoleName':'EC2AppRole','PolicyName':'AwsSecretsPolicy','PolicyDocument':{'Version':'2012-10-17','Statement':{'Effect':'Allow','Action':['secretsmanager:Describe*','secretsmanager:Get*','secretsmanager:List*'],'Resource':'*'}},

实例配置文件似乎没问题:

== 实例配置文件 == {'Path': '/', 'InstanceProfileName': 'AWS_EC2_INSTANCE_PROFILE_ROLE', 'InstanceProfileId': 'AIPAXQXBO3GJ2LGTKDJ3L', 'Arn': 'arn:aws:iam::516942649747:instance-profile/AWS_EC2_INSTANCE_PROFILE_ROLE', 'CreateDate': datetime.datetime(2020, 12, 24, 5, 30, 4, tzinfo=tzutc()), '角色': [{'Path': '/', 'RoleName': 'EC2AppRole', 'RoleId': 'AROAXQXBO3GJ2AUOHJMVV', 'Arn': 'arn:aws:iam :: 516942649747:role / EC2AppRole','CreateDate':datetime.datetime(2020、12、24、5、30、4、tzinfo = tzutc()),'AssumeRolePolicyDocument':{'Version':'2012-10-17','Statement':[{'Effect':'Allow','Principal':{'Service':'ec2.amazonaws.com'},'Action':'sts:AssumeRole'}]}}]}

抱歉,我不知道如何正确地格式化这篇文章。

我可以分享任何信息来帮助澄清吗?

我已经测试了 create_launch_configuration 调用中的所有内容,以确保其正确无误。

答案1

使用服务员:

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iam.html#waiters

或者time.sleep(x)

以确保资源可用。

(将等待自我接受)——初步测试表明这是一个等待的问题。

相关内容