Wie kann ich meiner Amazon EC2-Instance Zugriff auf einen Amazon S3-Bucket in einem anderen AWS-Konto gewähren?
Ich möchte eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance verwenden, um in einem anderen AWS-Konto auf meinen Amazon Simple Storage Service (Amazon S3)-Bucket zuzugreifen.
Lösung
Um kontoübergreifenden Zugriff von einer EC2-Instance auf einen S3-Bucket zu gewähren, richte eine Vertrauensbeziehung zwischen zwei AWS-Konten ein. Verwende AWS Identity and Access Management (IAM)-Rollen, um die Beziehung zu erstellen. Erstelle vom Bucket-Owner-Konto aus eine Rolle, die S3-Berechtigungen gewährt. Erstelle vom Konto des EC2-Instance-Owners aus eine Rolle, die die Rolle des Bucket-Owners für den Zugriff auf den Bucket übernehmen kann.
Rolle aus dem Bucket-Owner-Konto erstellen
Gehe wie folgt vor, um eine Identity and Access Management (IAM)-Rolle aus dem Bucket-Owner-Konto zu erstellen:
-
Verwende das Bucket-Owner-Konto, um dich bei der AWS-Managementkonsole anzumelden.
-
Öffne die IAM-Konsole.
-
Wähle im Navigationsbereich Rollen und dann Rolle erstellen aus.
-
Wähle für Typ der vertrauenswürdigen Entität die Option AWS-Konto aus.
-
Wähle Anderes AWS-Konto aus und gib dann die Konto-ID des EC2-Instance-Owner-Kontos ein.
Hinweis: Wähle Externe ID erforderlich oder MFA erforderlich nicht aus, es sei denn, deine Sicherheitsanforderungen erfordern diese Optionen. -
Wähle Nächster Schritt aus.
-
Hänge eine IAM-Richtlinie an die Rolle an, die den Zugriff auf Amazon S3 delegiert, und wähle dann Weiter aus. Die folgende IAM-Richtlinie gewährt beispielsweise s3:GetObject -Zugriff auf Objekte im Bucket:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] } ] }Hinweis: Ersetze DOC-EXAMPLE-BUCKET durch den Namen deines Buckets. Ändere außerdem die IAM-Richtlinie auf der Grundlage der Amazon S3-Berechtigungen auf Bucket- und Objektebene, die du für deinen Anwendungsfall benötigst.
-
Gib unter Rollenname einen Namen für die Rolle ein.
-
(Optional) Füge der Rolle Tags hinzu.
-
Wähle Rolle erstellen aus.
Im Bucket-Owner-Konto den Amazon-Ressourcennamen (ARN) der IAM-Rolle suchen
Gehe wie folgt vor, um den ARN der IAM-Rolle zu ermitteln:
- Wähle im Navigationsbereich der IAM-Konsole die Option Rollen aus.
- Wähle die IAM-Rolle aus, die du erstellt hast.
- Beachte den Wert, der für Rollen-ARN aufgeführt ist.
Vom Konto des EC2-Instance-Owners aus eine weitere Rolle erstellen und an die Instance anhängen
Gehe wie folgt vor, um ein weiteres Instance-Profil aus dem EC2-Instance-Owner-Konto zu erstellen und es an die Instance anzuhängen:
- Verwende das Konto des EC2-Instance-Owners, um dich bei der AWS-Managementkonsole anzumelden.
- Öffne die IAM-Konsole.
- Wähle im Navigationsbereich Rollen und dann Rolle erstellen aus.
- Wähle für Typ der vertrauenswürdigen Entität die Option AWS-Service aus.
- Wähle für Service oder Anwendungsfall die Option EC2 und dann deinen Anwendungsfall aus.
- Wähle Nächster Schritt aus.
- Wähle auf der Seite Berechtigungen hinzufügen die Option Weiter aus.
- Gib unter Rollenname einen Namen für die Rolle ein.
- (Optional) Füge der Rolle Tags hinzu.
- Wähle Rolle erstellen aus.
- Wähle aus der Liste der Rollen die Rolle aus, die du gerade erstellt hast.
- Wähle für Berechtigungen hinzufügen die Option Inline-Richtlinie erstellen aus.
- Wähle für den Richtlinieneditor die Option JSON aus und gib dann die folgende Richtlinie ein:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111111111111:role/ROLENAME" }] }
Hinweis: Ersetze arn:aws:iam::111111111111:role/ROLENAME durch den ARN der IAM-Rolle, die du im Bucket-Owner-Konto erstellt hast.
- Wähle Nächster Schritt aus.
- Gib unter Name einen Namen für die Richtlinie ein und wähle dann Richtlinie erstellen aus.
- Hänge die IAM-Rolle an die Instance an, die du für den Zugriff auf den Amazon S3-Bucket verwendest.
Von der Amazon EC2-Instance ein Profil für die Rolle in der CLI-Konfigurationsdatei erstellen
Hinweis: Wenn du SSH und Session Manager verwendest, um eine Verbindung zu deinen Instances herzustellen, musst du diese Schritte sowohl für den EC2-Benutzer als auch für den SSM-Benutzer ausführen. Session Manager ist ein Tool innerhalb von AWS Systems Manager.
Gehe wie folgt vor, um ein Profil für die Rolle in der CLI-Konfigurationsdatei von der Instance aus zu erstellen:
-
Stelle eine Verbindung mit der Instance her. Weitere Informationen findest du unter Mithilfe von SSH eine Verbindung zu deiner Linux-Instance herstellen oder Mithilfe von RDP eine Verbindung zu deiner Windows-Instance herstellen.
-
Um festzustellen, ob das Verzeichnis bereits einen Ordner mit dem Namen ~/.aws hat, führe den folgenden ls-Befehl aus, um das Instance-Verzeichnis aufzulisten:
ls -l ~/.aws -
Wenn du den Ordner ~/.aws findest, fahre mit dem nächsten Schritt fort. Wenn du keinen ~/.aws-Ordner findest, führe den folgenden mkdir-Befehl aus, um den Ordner zu erstellen:
mkdir ~/.aws/ -
Verwende im Ordner ~/.aws einen Texteditor, um eine Datei zu erstellen. Nenne die Datei config.
-
Gib in der Datei den folgenden Text ein, um ein Profil für die Rolle zu definieren:
[profile enterprofilename] role_arn = arn:aws:iam::111111111111:role/ROLENAME credential_source = Ec2InstanceMetadataHinweis: Ersetze enterprofilename durch deinen Wert. Ersetze arn:aws:iam::111111111111:role/ROLENAME durch den ARN der Rolle, die du im Bucket-Owner-Konto erstellt hast.
-
Speichere die Datei.
Sicherstellen, dass das Instance-Profil die Rolle übernehmen kann
Um zu überprüfen, ob die Rolle deiner Instance die Rolle im Bucket-Owner-Konto übernehmen kann, stelle eine Verbindung zur Instance her und führe dann den folgenden Befehl aus:
aws sts get-caller-identity --profile profilename
Hinweis: Ersetze profilname durch den Namen der Rolle, die du der Instance angehängt hast.
Der Befehl gibt eine Antwort zurück, die der folgenden ähnelt:
"Account": "11111111111", "UserId": "AROAEXAMPLEID:sessionName", "Arn": "arn:aws:sts::111111111111:assumed-role/ROLENAME/sessionName"
Vergewissere dich, dass der Wert für „Arn“ mit dem ARN der Rolle übereinstimmt, die du im Bucket-Owner-Konto erstellt hast.
Zugriff auf den Amazon S3 Bucket überprüfen
Um zu überprüfen, ob deine Instance auf den S3 Bucket zugreifen kann, stelle eine Verbindung mit der Instance her und führe dann den folgenden Listenbefehl aus:
aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile profilename
Hinweis: Ersetze DOC-EXAMPLE-BUCKET durch den Namen deines Buckets und ersetze profilename durch den Namen, den du in der Konfigurationsdatei konfiguriert hast.
Wenn deine Instance erfolgreich auf den Bucket zugreifen kann, erhältst du eine Antwort ähnlich der folgenden:
PRE Hello/ 2018-08-15 16:16:51 89 index.html
Ähnliche Informationen
IAM-Tutorial: Delegiere den Zugriff über AWS-Konten mithilfe von IAM-Rollen
- Themen
- Storage
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 10 Monaten
AWS OFFICIALAktualisiert vor 3 Jahren