No se puede crear la configuración de inicio debido a IamInstanceProfile no válido

No se puede crear la configuración de inicio debido a IamInstanceProfile no válido

Al intentar crear un elemento de configuración de inicio, aparece este error:

Problema de inicio de configuración: se produjo un error (ValidationError) al llamar a la operación: IamInstanceProfile no válido:AWS_EC2_INSTANCE_PROFILE_ROLE

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

Creé 2 políticas administradas localmente, las adjunté a un rol y asigné el rol a un perfil de instancia. (Parece que boto3 no permite ver las políticas administradas localmente en el Rol, solo las administradas por AWS, excepto cuando se intenta explícitamente):

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

Aquí está el rol con detalles de la política:

== Rol: EC2AppRole ==

{'RoleName': 'EC2AppRole', 'PolicyName': 'CloudWatchSendPolicy', 'PolicyDocument': {'Versión': '2012-10-17', 'Statement': [{'Action': ['autoscaling:Describe* ', 'vigilancia de la nube:', 'registros:', 'sns:'], 'Efecto': 'Permitir', 'Recurso': ''}]},

{'RoleName': 'EC2AppRole', 'PolicyName': 'AwsSecretsPolicy', 'PolicyDocument': {'Versión': '2012-10-17', 'Declaración': {'Efecto': 'Permitir', 'Acción' : ['secretsmanager:Describe*', 'secretsmanager:Get*', 'secretsmanager:List*'], 'Recurso': '*'}},

Los perfiles de instancia parecen estar bien:

== Perfil de instancia == {'Ruta': '/', '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()), 'Roles': [{'Ruta': '/', 'Nombre de rol': 'EC2AppRole' , 'RoleId': 'AROAXQXBO3GJ2AUOHJMVV', 'Arn': 'arn:aws:iam::516942649747:role/EC2AppRole', 'CreateDate': datetime.datetime(2020, 12, 24, 5, 30, 4, tzinfo= tzutc()), 'AssumeRolePolicyDocument': {'Versión': '2012-10-17', 'Declaración': [{'Efecto': 'Permitir', 'Principal': {'Servicio': 'ec2.amazonaws. com'}, 'Acción': 'sts:AssumeRole'}]}}]}

Lo siento, no sé cómo formatear correctamente esta publicación.

¿Alguna información que pueda compartir para ayudar a aclarar?

He probado todo lo que puedo decir en la llamada create_launch_configuration para que sea correcto.

Respuesta1

Utilice un camarero:

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

otime.sleep(x)

para asegurarse de que el recurso esté disponible.

(Esperará para aceptarlo por sí mismo): las pruebas iniciales sugieren que es un problema de espera.

información relacionada