
Beim Versuch, ein Startkonfigurationselement zu erstellen, erhalte ich diese Fehlermeldung:
Problem beim Starten der Konfiguration: Beim Aufrufen der Operation ist ein Fehler (ValidationError) aufgetreten: Ungültiges IamInstanceProfile:AWS_EC2_INSTANCE_PROFILE_ROLE
Ausführen dieses Codetyps mit 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,
)
Ich habe 2 lokal verwaltete Richtlinien erstellt, sie einer Rolle zugeordnet und die Rolle einem Instanzprofil zugewiesen. (Offenbar erlaubt boto3 nicht die Anzeige lokal verwalteter Richtlinien in der Rolle, sondern nur verwalteter AWS-Richtlinien, außer wenn man es ausdrücklich versucht):
print(iam_client.get_role_policy(RoleName="EC2AppRole",PolicyName="CloudWatchSendPolicy"))
print(iam_client.get_role_policy(RoleName="EC2AppRole",PolicyName="AwsSecretsPolicy"))
Hier ist die Rolle mit Richtliniendetails:
== Rolle: EC2AppRole ==
{'Rollenname': 'EC2AppRole', 'Richtlinienname': 'CloudWatchSendPolicy', 'Richtliniendokument': {'Version': '2012-10-17', 'Anweisung': [{'Aktion': ['autoscaling:Beschreiben*', 'cloudwatch:', 'Protokolle:', 'sns:'], 'Effekt': 'Erlauben', 'Ressource': ''}]},
{'Rollenname': 'EC2AppRole', 'Richtlinienname': 'AwsSecretsPolicy', 'Richtliniendokument': {'Version': '2012-10-17', 'Anweisung': {'Effekt': 'Zulassen', 'Aktion': ['secretsmanager:Beschreiben*', 'secretsmanager:Abrufen*', 'secretsmanager:Liste*'], 'Ressource': '*'}},
Die Instanzprofile scheinen in Ordnung zu sein:
== Instanzprofil == {'Pfad': '/', 'Instanzprofilname': 'AWS_EC2_INSTANCE_PROFILE_ROLE', 'Instanzprofil-ID': 'AIPAXQXBO3GJ2LGTKDJ3L', 'Arn': 'arn:aws:iam::516942649747:instance-profile/AWS_EC2_INSTANCE_PROFILE_ROLE', 'Erstellungsdatum': datetime.datetime(2020, 12, 24, 5, 30, 4, tzinfo=tzutc()), 'Rollen': [{'Pfad': '/', 'Rollenname': 'EC2AppRole', 'Rollen-ID': 'AROAXQXBO3GJ2AUOHJMVV', 'Arn': 'arn:aws:iam::516942649747:role/EC2AppRole', 'Erstellungsdatum': datetime.datetime(2020, 12, 24, 5, 30, 4, tzinfo=tzutc()), 'AssumeRolePolicyDocument': {'Version': '2012-10-17', 'Anweisung': [{'Effekt': 'Zulassen', 'Auftraggeber': {'Dienst': 'ec2.amazonaws.com'}, 'Aktion': 'sts:AssumeRole'}]}}]}
Es tut mir leid, ich weiß nicht, wie ich diesen Beitrag richtig formatieren soll.
Gibt es Informationen, die ich zur Aufklärung beitragen kann?
Ich habe alles im Aufruf „create_launch_configuration“ getestet und bin zu dem Schluss gekommen, dass alles korrekt ist, soweit ich das beurteilen kann.
Antwort1
Verwenden Sie einen Kellner:
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iam.html#waiters
odertime.sleep(x)
um sicherzustellen, dass die Ressource verfügbar ist.
(Warten auf die Selbstakzeptanz) – Erste Tests lassen darauf schließen, dass es sich um ein Warteproblem handelt.