由於 IamInstanceProfile 無效,無法建立啟動配置

由於 IamInstanceProfile 無效,無法建立啟動配置

嘗試建立啟動配置項目時,我收到此錯誤:

啟動設定問題:呼叫操作時發生錯誤 (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)

以確保資源可用。

(將等待自我接受) - 初步測試表明這是一個等待問題。

相關內容