Não é possível criar configuração de inicialização devido a IamInstanceProfile inválido

Não é possível criar configuração de inicialização devido a IamInstanceProfile inválido

Ao tentar criar um item de configuração de inicialização, recebo este erro:

Problema de inicialização do Config: ocorreu um erro (ValidationError) ao chamar a operação: IamInstanceProfile inválido:AWS_EC2_INSTANCE_PROFILE_ROLE

executando este tipo de código com 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,
            )

Criei 2 políticas gerenciadas localmente e as anexei a uma função e atribuí a função a um perfil de instância. (Parece que o boto3 não permite a visualização de políticas gerenciadas localmente na função, apenas as gerenciadas pela AWS, exceto quando tentar explicitamente):

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

Aqui está a função com detalhes da política:

== Função: EC2AppRole ==

{'RoleName': 'EC2AppRole', 'PolicyName': 'CloudWatchSendPolicy', 'PolicyDocument': {'Version': '2012-10-17', 'Statement': [{'Action': ['autoscaling:Describe* ', 'cloudwatch:', 'Histórico:', 'sns:'], 'Efeito': 'Permitir', 'Recurso': ''}]},

{'RoleName': 'EC2AppRole', 'PolicyName': 'AwsSecretsPolicy', 'PolicyDocument': {'Versão': '2012-10-17', 'Declaração': {'Effect': 'Permitir', 'Ação' : ['secretsmanager:Describe*', 'secretsmanager:Get*', 'secretsmanager:List*'], 'Resource': '*'}},

Os perfis de instância parecem OK:

== Perfil da instância == {'Caminho': '/', 'InstanceProfileName': 'AWS_EC2_INSTANCE_PROFILE_ROLE', 'InstanceProfileId': 'AIPAXQXBO3GJ2LGTKDJ3L', 'Arn': 'arn:aws:iam::516942649747:instance-profile/AWS_EC2_INSTANCE_PROFILE_RO LE ', 'CreateDate': datetime.datetime(2020, 12, 24, 5, 30, 4, tzinfo=tzutc()), 'Roles': [{'Path': '/', 'RoleName': 'EC2AppRole' , 'RoleId': 'AROAXQXBO3GJ2AUOHJMVV', 'Arn': 'arn:aws:iam::516942649747:role/EC2AppRole', 'CreateDate': datetime.datetime(2020, 12, 24, 5, 30, 4, tzinfo= tzutc()), 'AssumeRolePolicyDocument': {'Versão': '2012-10-17', 'Declaração': [{'Efeito': 'Permitir', 'Principal': {'Serviço': 'ec2.amazonaws. com'}, 'Ação': 'sts:AssumeRole'}]}}]}

Desculpe, não sei como formatar corretamente esta postagem.

Alguma informação que eu possa compartilhar para ajudar a esclarecer?

Testei tudo na chamada create_launch_configuration para estar correto da melhor maneira possível.

Responder1

Use um garçom:

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

outime.sleep(x)

para garantir que o recurso esteja disponível.

(Vou esperar para aceitar) - Os testes iniciais sugerem que é um problema de espera.

informação relacionada