Durch Googeln fand ich this tutorial on accessing S3 from EC2 instance without credential file. Ich folgte seinen Anweisungen und bekam die gewünschte Instanz. Die aws-Webkonsolenseite sieht wie folgt aus: So geben Sie ec2-Instanz Zugriff auf s3 mit boto3
Allerdings möchte ich es nicht jedes Mal manuell über die Webkonsole machen. Wie kann ich solche EC2-Instanzen mit boto3 erstellen?
Ich versuchte
s = boto3.Session(profile_name='dev', region_name='us-east-1')
ec2 = s.resource('ec2')
rc = ec2.create_instances(ImageId='ami-0e297018',
InstanceType='t2.nano',
MinCount=1,
MaxCount=1,
KeyName='my-key',
IamInstanceProfile={'Name': 'harness-worker'},
)
wo harness-worker
mit Zugang zu S3 die IAM-Rolle ist, aber sonst nichts. Es wird auch in der ersten Annäherung mit der aws Webkonsole Tutorial verwendet.
Dann bekam ich Fehler sagen
ClientError: An error occurred (UnauthorizedOperation) when calling the RunInstances operation: You are not authorized to perform this operation.
Habe ich etwas offensichtlich falsch gemacht?
Das Profil dev
hat AmazonEC2FullAccess. Ohne die Zeile IamInstanceProfile={'Name': 'harness-worker'},
kann create_instances
Instanz erstellen.
Entschuldigung, ich bin neu bei Boto3 und AWS. Könntest du ein bisschen mehr darüber erklären, wie man es beheben kann? Vielen Dank. – nos
Sie haben eine Sortierung, wenn die IAM-Anmeldeinformationen von Ihrem Python-Skript als Schnittstelle zur AWS-API verwendet werden. Diese Anmeldeinformationen sind nicht berechtigt, neue EC2-Instanzen zu erstellen. Dies ist kein Problem mit Ihrem Code. Es handelt sich um ein Problem mit dem IAM-Konto oder -Profil, das Sie verwenden. –
Das Entwicklerprofil hat AmazonEC2FullAccess. Ohne die Zeile IamInstanceProfile = {'Name': 'harness-worker'} kann create_instances eine Instanz erstellen. – nos