
嘗試建立啟動配置項目時,我收到此錯誤:
啟動設定問題:呼叫操作時發生錯誤 (ValidationError):Invalid 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':{'版本':'2012-10-17','聲明':[{'操作':['自動縮放:描述* ', '雲觀察:', '紀錄:', 'sns:'], '效果': '允許', '資源': ''}]},
{'RoleName': 'EC2AppRole', 'PolicyName': 'AwsSecretsPolicy', 'PolicyDocument': {'版本': '2012-10-17', '聲明': {'效果': '允許', '操作' : ['secretsmanager:描述*', 'secretsmanager:取得*', 'secretsmanager:列表*'], '資源': '*'}},
實例設定檔似乎沒問題:
== 實例設定檔== {'Path': '/', 'InstanceProfileName': 'AWS_EC2_INSTANCE_PROFILE_ROLE', 'InstanceProfileId': 'AIPAXQXBO3GJ2LGTKDJ3L', 'Arn': 'arn:aws:proc/ AWS_EC2_INSTANCE_PROFILE_ROLE ', 'CreateDate': datetime.datetime(2020, 12, 24, 5, 30, 4, tzinfo=tzutc()), '角色': [{'Path': '/', 'RoleName': 'EC222222222 ' , 'RoleId': 'AROAXQXBO3GJ2AUOHJMVV', 'Arn': 'arn:aws:iam::516942649747:role/EC2AppRole', 'CreateDate': datetime.datetime(2020, 12, 244, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 430, 4 = tzutc()), 'AssumeRolePolicyDocument': {'版本': '2012-10-17', '宣告': [{'效果': '允許', '主體': {'服務': 'ec2.amazonaws . com'}, '操作': 'sts:AssumeRole'}]}}]}
抱歉,我不知道如何正確地格式化這篇文章。
我可以分享任何資訊來幫助澄清嗎?
我已經測試了 create_launch_configuration 呼叫中的所有內容,據我所知都是正確的。
答案1
使用服務生:
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iam.html#waiters
或者time.sleep(x)
以確保資源可用。
(將等待自我接受) - 初步測試表明這是一個等待問題。