Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Wie stelle ich mithilfe von CodePipeline und einer vordefinierten ACL Artefakte in Amazon S3 in einem anderen AWS-Konto bereit?
Ich möchte Artefakte in einem Amazon Simple Storage Service (Amazon S3)-Bucket in einem anderen Konto bereitstellen, indem ich AWS CodePipeline mit einem Amazon S3-Anbieter für Bereitstellungsaktion und einer vordefinierte Zugriffssteuerungsliste (ACL) verwende.
Behebung
Hinweis: Das folgende Beispielverfahren setzt Folgendes voraus:
- Du hast zwei AWS-Konten: Ein Entwicklungskonto und ein Produktionskonto.
- Der Eingabe-Bucket im Entwicklungskonto heißt codepipeline-input-bucket (mit aktivierter Versionierung).
- Der Standardartefact-Bucket im Entwicklungskonto heißt codepipeline-us-east-1-0123456789.
- Der Ausgabe-Bucket im Produktionskonto wird codepipeline-output-bucket.
- Du stellst Artefakte aus dem Entwicklungskonto in einen S3-Bucket im Produktionskonto bereit.
- Du verwendest eine vordefinierte ACL, um dem Bucket-Eigentümer im Produktionskonto Zugriff auf die Objekte zu gewähren, die dem Entwicklungskonto gehören.
Hinweis: Informationen zur Bereitstellung von Artefakten und zum Festlegen des Produktionskontos als Objekteigentümer findest du unter Wie stelle ich mithilfe von CodePipeline Artefakte in Amazon S3 in einem anderen Konto bereit?
Erstelle eine CodePipeline im Entwicklungskonto
1. Öffne die CodePipeline-Konsole. Wähle dann Create pipeline.
2. Gib unter Pipeline-Name einen Namen für deine Pipeline ein. Zum Beispiel: crossaccountdeploy.
Hinweis: Das Textfeld Rollenname wird automatisch mit dem Dienstrollennamen AWSCodePipelineServiceRole-us-east-1-crossaccountdeploy gefüllt. Du kannst auch eine andere, bestehende Servicerolle wählen.
3. Erweitere den Abschnitt Erweiterte Einstellungen.
4. Wähle für den Artefaktspeicher die Option Standardspeicherort.
Hinweis: Du kannst Benutzerdefinierter Standort auswählen, wenn dies für deinen Anwendungsfall erforderlich ist.
5. Wähle für den **Verschlüsselungsschlüssel **die Option Standardschlüssel von AWS.
6.Wähle Weiter aus.
7. Wähle auf der Seite Quellphase hinzufügen für Quellanbieter die Option Amazon S3.
8. Gib für Bucket den Namen deines S3-Buckets für die Entwicklungseingabe ein. Zum Beispiel: codepipeline-input-bucket.
Wichtig: Für den Eingabe-Bucket muss die Versionierung aktiviert sein, um mit CodePipeline zu arbeiten.
9. Gib für den S3-Objektschlüssel sample-website.zip ein.
Wichtig: Um eine AWS-Beispielwebsite anstelle deiner eigenen Website zu verwenden, sieh dir das Tutorial an: Erstelle eine Pipeline, die Amazon S3 als Bereitstellungsanbieter verwendet. Suche dann in den Voraussetzungen von **1 nach „Beispiel für eine statische Website“: Stelle statische Website-Dateien im Amazon **S3-Abschnitt bereit.
10. Wähle für Optionen zur Änderungserkennung die Option Amazon CloudWatch Events (empfohlen).
11. Wähle Next (Weiter).
12. Wähle auf der Seite Build-Phase hinzufügen die Option Build-Phase Überspringen. Wähle dann Überspringen.
13. Wähle auf der Seite Bereitstellungsphase hinzufügen für Bereitstellungsanbieter die Option Amazon S3.
14. Wähle für Region die AWS-Region aus, in der sich dein S3-Ausgabe-Bucket befindet. Zum Beispiel: USA Ost (Nord-Virginia).
15. Gib für Bucket den Namen deines S3-Buckets für die Produktionsausgabe ein. Zum Beispiel: codepipeline-output-bucket.
16. Aktiviere das Kontrollkästchen Datei vor der Bereitstellung extrahieren.
Hinweis: Gib bei Bedarf einen Pfad für den Bereitstellungspfad ein.
17. Erweitere Zusätzliche Konfiguration.
18. Wähle für Vordefinierte ACL die Option bucket-owner-full-control.
Hinweis: Die bucket-owner-full-control gewährt dem Bucket-Eigentümer im Produktionskonto vollen Zugriff auf die Objekte, die dem Entwicklungskonto gehören und bereitgestellt werden. Weitere Informationen findest du unter Canned ACL.
19. Wähle Weiter.
20. Wähle Pipeline erstellen. Die Pipeline läuft, aber die Quellphase schlägt fehl. Der folgende Fehler wird angezeigt: „Das Objekt mit dem Schlüssel 'sample-website.zip' existiert nicht.“
Im Abschnitt Lade die Beispielwebsite in den Eingabe-Bucket dieses Artikels hoch, wird beschrieben, wie dieser Fehler behoben werden kann.
Konfiguriere eine CodePipeline-Servicerolle mit einer AWS-Richtlinie für Identity and Access Management (IAM), die S3-Zugriff für den Output-Bucket des Produktionskontos hinzufügt
1. Öffne die IAM-Konsole im Entwicklungskonto.
2. Wähle im Navigationsbereich Metrics. Wähle Richtlinie erstellen.
3. Wähle die Registerkarte JSON. Gib dann die folgende Richtlinie in den JSON-Editor ein:
Wichtig: Ersetze codepipeline-output-bucket durch den Namen deines S3-Buckets für die Produktionsausgabe.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::codepipeline-output-bucket/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::codepipeline-output-bucket" } ] }
4. Wähle Richtlinie überprüfen.
5. Gib unter Name einen Namen für die Richtlinie ein. Zum Beispiel: prodbucketaccess.
6. Wähle Richtlinie erstellen.
7. Wähle im Navigationsbereich Rollen.
8. Wähle aus der Rollenliste AWSCodePipelineServiceRole-us-east-1-crossaccountdeploy. Dies ist die CodePipeline-Servicerolle.
Hinweis: Du kannst deine eigene Servicerolle verwenden, falls dies für deinen Anwendungsfall erforderlich ist.
9. Wähle Richtlinien anhängen.
10. Wähle die Richtlinie aus, die du erstellt hast (prodbucketaccess). Wähle dann Richtlinie anhängen, um CodePipeline Zugriff auf den S3-Bucket für die Produktionsausgabe zu gewähren.
Konfiguriere den Output-Bucket im Produktionskonto, um den Zugriff vom Entwicklungskonto aus zu ermöglichen
1. Öffne die Amazon S3-Konsole im Produktionskonto.
2. Wähle in der Liste mit den Bucket-Namen deinen S3-Bucket für die Produktionsausgabe. Zum Beispiel: codepipeline-output-bucket.
3. Wähle Berechtigungen. Wähle Bucket-Richtlinie.
4. Gib im Texteditor die folgende Richtlinie ein und wähle dann Speichern aus:
Wichtig: Ersetze dev-account-id durch die AWS-Konto-ID deiner Entwicklungsumgebung. Ersetze codepipeline-output-bucket durch den Namen deines S3-Buckets für die Produktionsausgabe.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::dev-account-id:root" }, "Action": "s3:Put*", "Resource": "arn:aws:s3:::codepipeline-output-bucket/*" }, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::dev-account-id:root" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::codepipeline-output-bucket" } ] }
Lade die Beispielwebsite in den Eingabe-Bucket hoch
1. Öffne die Amazon S3-Konsole im Entwicklungskonto.
2. Wähle in der Liste der Bucket-Namen deinen S3-Bucket für die Entwicklungseingabe. Zum Beispiel: codepipeline-input-bucket.
3. Wähle Upload. Wähle dann Dateien hinzufügen.
4. Wähle die heruntergeladene Datei sample-website.zip.
5. Wähle Upload, um die Pipeline auszuführen. Wenn die Pipeline läuft, passiert Folgendes:
- Die Quellaktion wählt die Datei **sample-website.zip **aus dem S3-Bucket für die Entwicklungseingabe (codepipeline-input-bucket). Anschließend platziert die Quellaktion die Zip-Datei als Quellartefakt im Standardartefact-Bucket des Entwicklungskontos (codepipeline-us-east-1-0123456789).
- In der Bereitstellungsaktion verwendet die CodePipeline-Dienstrolle (AWSCodePipelineServiceRole-us-east-1-crossaccountdeploy) ihren Zugriff für die Bereitstellung im S3-Bucket der Produktionsausgabe (codepipeline-output-bucket). Die Deploy-Aktion wendet auch die vordefinierte ACL bucket-owner-full-control.
Hinweis: Das Entwicklungskonto ist der Besitzer der extrahierten Objekte im S3-Bucket für die Produktionsausgabe (codepipeline-output-bucket). Der Bucket-Besitzer im Produktionskonto hat auch vollen Zugriff auf die bereitgestellten Artefakte.

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 4 Monaten
- AWS OFFICIALAktualisiert vor 3 Jahren