尝试创建启动配置项时出现此错误:
启动配置问题:调用操作时发生错误(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)
以确保资源可用。
(将等待自我接受)——初步测试表明这是一个等待的问题。