Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erstellen Sie eine Pipeline CodePipeline , in der Ressourcen von einem anderen AWS Konto verwendet werden
Sie möchten möglicherweise eine Pipeline erstellen, die Ressourcen verwendet, die von einem anderen AWS -Konto erstellt oder verwaltet werden. Möglicherweise möchten Sie beispielsweise ein Konto für Ihre Pipeline und ein anderes für Ihre CodeDeploy Ressourcen verwenden.
Anmerkung
Beim Erstellen einer Pipeline mit Aktionen aus mehreren Konten müssen Sie Ihre Aktionen so konfigurieren, dass mit ihnen innerhalb der Einschränkungen von kontoübergreifenden Pipelines weiterhin auf Artefakte zugegriffen werden kann. Die folgenden Einschränkungen gelten für kontoübergreifende Aktionen:
-
Im Allgemeinen kann eine Aktion nur ein Artefakt verbrauchen, wenn:
-
Die Aktion befindet sich im selben Konto wie das Pipeline-Konto ODER
-
das Artefakt im Pipeline-Konto für eine Aktion in einem anderen Konto erstellt wurde ODER
-
Das Artefakt wurde durch eine frühere Aktion im selben Konto wie die Aktion erzeugt
Anders gesagt, ist es nicht möglich, ein Artefakt von einem Konto an ein anderes Konto zu übergeben, wenn keines der Konten ein Pipeline-Konto ist.
-
-
Für die folgenden Aktionstrypen werden keine kontoübergreifenden Aktionen unterstützt:
-
Jenkins-Build-Aktionen
-
In diesem Beispiel müssen Sie einen zu verwendenden Schlüssel AWS Key Management Service (AWS KMS) erstellen, den Schlüssel zur Pipeline hinzufügen und Kontorichtlinien und Rollen einrichten, um den kontoübergreifenden Zugriff zu ermöglichen. Für einen AWS KMS Schlüssel können Sie die Schlüssel-ID, den Schlüssel ARN oder den Alias ARN verwenden.
Anmerkung
Aliase werden nur in dem Konto erkannt, das den KMS Schlüssel erstellt hat. Bei kontoübergreifenden Aktionen können Sie nur die Schlüssel-ID oder den Schlüssel verwenden, um den Schlüssel ARN zu identifizieren. Bei kontoübergreifenden Aktionen wird die Rolle des anderen Kontos (AccountB) verwendet, sodass bei Angabe der Schlüssel-ID der Schlüssel des anderen Kontos (AccountB) verwendet wird.
In dieser exemplarischen Vorgehensweise und ihren Beispielen AccountA
ist das Konto, das ursprünglich zum Erstellen der Pipeline verwendet wurde. Es hat Zugriff auf den Amazon S3 S3-Bucket, der zum Speichern von Pipeline-Artefakten verwendet wird, und auf die Servicerolle, die von verwendet wird AWS CodePipeline. AccountB
ist das Konto, das ursprünglich zur Erstellung der CodeDeploy Anwendung, der Bereitstellungsgruppe und der Servicerolle verwendet wurde, die von verwendet wurden CodeDeploy.
Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. AccountA
um eine Pipeline zu bearbeiten, um die CodeDeploy Anwendung zu verwenden, die von erstellt wurde AccountB
, AccountA
muss:
-
Fordere die ARN oder Konto-ID von an
AccountB
(In dieser exemplarischen VorgehensweiseAccountB
ID ist012ID_ACCOUNT_B
). -
Erstellen oder verwenden Sie einen vom AWS KMS Kunden verwalteten Schlüssel in der Region für die Pipeline und gewähren Sie der Servicerolle Berechtigungen zur Verwendung dieses Schlüssels (
CodePipeline_Service_Role
) undAccountB
. -
Erstellen Sie eine Amazon S3 S3-Bucket-Richtlinie, die Folgendes gewährt
AccountB
Zugriff auf den Amazon S3 S3-Bucket (z. B.codepipeline-us-east-2-1234567890
). -
Erstellen Sie eine Richtlinie, die Folgendes ermöglicht
AccountA
um eine Rolle anzunehmen, die konfiguriert wurde vonAccountB
, und diese Richtlinie an die Servicerolle anzuhängen (CodePipeline_Service_Role
). -
Bearbeiten Sie die Pipeline so, dass der vom Kunden verwaltete AWS KMS Schlüssel anstelle des Standardschlüssels verwendet wird.
Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. AccountB
um den Zugriff auf ihre Ressourcen für eine Pipeline zu ermöglichen, die in erstellt wurde AccountA
, AccountB
muss:
-
Fordere die ARN oder Konto-ID von an
AccountA
(In dieser exemplarischen VorgehensweiseAccountA
ID ist012ID_ACCOUNT_A
). -
Erstellen Sie eine Richtlinie, die auf die CodeDeploy dafür konfigurierte EC2Amazon-Instance-Rolle angewendet wird und den Zugriff auf den Amazon S3-Bucket ermöglicht (
codepipeline-us-east-2-1234567890
). -
Erstellen Sie eine Richtlinie, die auf die EC2Amazon-Instance-Rolle angewendet wird CodeDeploy , für die konfiguriert wurde und die den Zugriff auf den vom AWS KMS Kunden verwalteten Schlüssel ermöglicht, der zur Verschlüsselung der Pipeline-Artefakte in verwendet wird
AccountA
. -
Eine IAM Rolle konfigurieren und anhängen (
CrossAccount_Role
) mit einer Vertrauensbeziehungsrichtlinie, die die CodePipeline Servicerolle inAccountA
um die Rolle zu übernehmen. -
Erstellen Sie eine Richtlinie, die den Zugriff auf die Bereitstellungsressourcen ermöglicht, die für die Pipeline benötigt werden, und hängen Sie sie an
CrossAccount_Role
. -
Erstellen Sie eine Richtlinie, die den Zugriff auf den Amazon S3 S3-Bucket ermöglicht (
codepipeline-us-east-2-1234567890
) und hängen Sie es anCrossAccount_Role
.
Themen
Voraussetzung: Erstellen eines AWS KMS -Verschlüsselungsschlüssels
Vom Kunden verwaltete Schlüssel sind regionsspezifisch, ebenso wie alle AWS KMS Schlüssel. Sie müssen Ihren vom Kunden verwalteten AWS KMS Schlüssel in derselben Region erstellen, in der die Pipeline erstellt wurde (z. B.us-east-2
).
Um einen vom Kunden verwalteten Schlüssel zu erstellen AWS KMS
-
Melden Sie sich AWS Management Console mit an
AccountA
und öffne die AWS KMS Konsole. -
Wählen Sie links Customer managed keys (Vom Kunden verwaltete Schlüssel) aus.
-
Klicken Sie auf Create key. Lassen Sie unter Configure key (Schlüssel konfigurieren) die Standardeinstellung Symmetric (Symmetrisch) ausgewählt und wählen Sie Next (Weiter) aus.
-
Geben Sie im Feld Alias einen Alias ein, der für diesen Schlüssel verwendet werden soll (z. B.
PipelineName-Key
). Geben Sie optional eine Beschreibung und Tags für diesen Schlüssel ein und wählen Sie dann Weiter. -
Wählen Sie unter Wichtige Administratorberechtigungen definieren die Rolle oder Rollen aus, die Sie als Administratoren für diesen Schlüssel verwenden möchten, und klicken Sie dann auf Weiter.
-
Wählen Sie unter Schlüsselverwendungsberechtigungen definieren unter Dieses Konto den Namen der Servicerolle für die Pipeline aus (z. B. CodePipeline _Service_Role). Wählen Sie unter Andere AWS Konten die Option Weiteres Konto hinzufügen aus. AWS Geben Sie die Konto-ID für ein
AccountB
um den Vorgang abzuschließenARN, und wählen Sie dann Weiter. -
Überprüfen Sie die Richtlinie in Preview Key Policy (Vorschau der Schlüsselrichtlinie) und wählen Sie dann Finish (Beenden) aus.
-
Wählen Sie aus der Schlüsselliste den Alias Ihres Schlüssels aus und kopieren Sie ARN ihn (z. B.
). Sie benötigen diese Informationen, wenn Sie Ihre Pipeline bearbeiten und Richtlinien konfigurieren.arn:aws:kms:us-east-2:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE
Schritt 1: Einrichten von Kontorichtlinien und Rollen
Nachdem Sie den AWS KMS Schlüssel erstellt haben, müssen Sie Richtlinien erstellen und anhängen, die den kontoübergreifenden Zugriff ermöglichen. Dazu sind Aktionen von beiden Seiten erforderlich AccountA
and AccountB
.
Themen
Konfigurieren Sie Richtlinien und Rollen in dem Konto, mit dem die Pipeline erstellt werden soll (AccountA
)
Um eine Pipeline zu erstellen, die CodeDeploy Ressourcen verwendet, die einem anderen AWS Konto zugeordnet sind, AccountA
muss Richtlinien sowohl für den Amazon S3 S3-Bucket, der zum Speichern von Artefakten verwendet wird, als auch für die Servicerolle für konfigurieren CodePipeline.
Um eine Richtlinie für den Amazon S3 S3-Bucket zu erstellen, der Zugriff auf AccountB (Konsole) gewährt
-
Melden Sie sich an mit AWS Management Console
AccountA
und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/. -
Wählen Sie in der Liste der Amazon S3 S3-Buckets den Amazon S3 S3-Bucket aus, in dem Artefakte für Ihre Pipelines gespeichert sind. Dieser Bucket ist benannt, wo
codepipeline-
region
-1234567EXAMPLE
region
ist die AWS Region, in der Sie die Pipeline erstellt haben und1234567EXAMPLE
ist eine zehnstellige Zufallszahl, die sicherstellt, dass der Bucket-Name eindeutig ist (z. B.codepipeline-us-east-2-1234567890
). -
Wählen Sie auf der Detailseite für den Amazon S3 S3-Bucket die Option Eigenschaften aus.
-
Erweitern Sie im Eigenschaftenbereich das Feld Permissions und wählen Sie Add bucket policy aus.
Anmerkung
Wenn Ihrem Amazon S3 S3-Bucket bereits eine Richtlinie zugeordnet ist, wählen Sie Bucket-Richtlinie bearbeiten aus. Danach können Sie die Anweisungen im folgenden Beispiel zur vorhandenen Richtlinie hinzufügen. Um eine neue Richtlinie hinzuzufügen, wählen Sie den Link und folgen Sie den Anweisungen im AWS Policy Generator. Weitere Informationen finden Sie unter IAMRichtlinien im Überblick.
-
Geben Sie die folgende Richtlinie in das Fenster Bucket Policy Editor ein. Das wird es ermöglichen
AccountB
Zugriff auf die Pipeline-Artefakte und wird gebenAccountB
die Möglichkeit, Ausgabeartefakte hinzuzufügen, wenn sie durch eine Aktion, z. B. eine benutzerdefinierte Quell- oder Build-Aktion, erstellt werden.Im folgenden Beispiel ARN ist der für
AccountB
ist012ID_ACCOUNT_B
. Der ARN für den Amazon S3 S3-Bucket istcodepipeline-us-east-2-1234567890
. Ersetzen Sie diese ARNs durch das ARN Konto, dem Sie Zugriff gewähren möchten, und das ARN für den Amazon S3 S3-Bucket:{ "Version": "2012-10-17", "Id": "SSEAndSSLPolicy", "Statement": [ { "Sid": "DenyUnEncryptedObjectUploads", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
codepipeline-us-east-2-1234567890
/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "aws:kms" } } }, { "Sid": "DenyInsecureConnections", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890
/*", "Condition": { "Bool": { "aws:SecureTransport": false } } }, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::012ID_ACCOUNT_B:root
" }, "Action": [ "s3:Get*", "s3:Put*" ], "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890
/*" }, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::012ID_ACCOUNT_B:root
" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890
" } ] } -
Wählen Sie Save und schließen Sie dann den Richtlinien-Editor.
-
Wählen Sie Speichern, um die Berechtigungen für den Amazon S3 S3-Bucket zu speichern.
Um eine Richtlinie für die Servicerolle für CodePipeline (Konsole) zu erstellen
-
Melden Sie sich AWS Management Console mit an
AccountA
und öffne die IAM Konsole unter https://console.aws.amazon.com/iam/. -
Wählen Sie im Navigationsbereich Rollen aus.
-
Wählen Sie in der Rollenliste unter Rollenname den Namen der Servicerolle für aus CodePipeline.
-
Wählen Sie in der Registerkarte Permissions (Berechtigungen) die Option Add inline policy (Inline-Richtlinie hinzufügen).
-
Wählen Sie die JSONRegisterkarte und geben Sie die folgende Richtlinie ein, um dies zuzulassen
AccountB
um die Rolle zu übernehmen. Im folgenden Beispiel012ID_ACCOUNT_B
ist der ARN fürAccountB
:{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::
012ID_ACCOUNT_B
:role/*" ] } } -
Wählen Sie Richtlinie prüfen.
-
Geben Sie unter Name einen Namen für diese Richtlinie ein. Wählen Sie Create Policy (Richtlinie erstellen) aus.
Konfigurieren Sie Richtlinien und Rollen in dem Konto, dem die AWS Ressource gehört (AccountB
)
Wenn Sie eine Anwendungs-, Bereitstellungs- und Bereitstellungsgruppe in erstellen CodeDeploy, erstellen Sie auch eine EC2Amazon-Instance-Rolle. (Diese Rolle wird für Sie erstellt, wenn Sie den Assistenten für die Ausführung der Bereitstellungsanleitung verwenden. Sie können sie jedoch auch manuell erstellen.) Für eine Pipeline, die in erstellt wurde AccountA
um CodeDeploy Ressourcen zu verwenden, die in erstellt wurden AccountB
, müssen Sie:
-
Konfigurieren Sie eine Richtlinie für die Instance-Rolle, die ihr den Zugriff auf den Amazon S3 S3-Bucket ermöglicht, in dem Pipeline-Artefakte gespeichert sind.
-
Erstellen Sie eine zweite Rolle in
AccountB
konfiguriert für kontoübergreifenden Zugriff.Diese zweite Rolle muss nicht nur Zugriff auf den Amazon S3 S3-Bucket in haben
AccountA
, sie muss auch eine Richtlinie enthalten, die den Zugriff auf die CodeDeploy Ressourcen ermöglicht, und eine Vertrauensbeziehungsrichtlinie, die es der CodePipeline Servicerolle ermöglichtAccountA
um die Rolle zu übernehmen.Anmerkung
Diese Richtlinien beziehen sich speziell auf die Einrichtung von CodeDeploy Ressourcen, die in einer Pipeline verwendet werden sollen, die mit einem anderen AWS Konto erstellt wurde. Für andere AWS Ressourcen sind Richtlinien erforderlich, die auf ihre jeweiligen Ressourcenanforderungen zugeschnitten sind.
Um eine Richtlinie für die EC2 Amazon-Instance-Rolle zu erstellen, die für CodeDeploy (Konsole) konfiguriert ist
-
Melden Sie sich AWS Management Console mit an
AccountB
und öffne die IAM Konsole unter https://console.aws.amazon.com/iam/. -
Wählen Sie im Navigationsbereich Rollen aus.
-
Wählen Sie in der Rollenliste unter Rollenname den Namen der Servicerolle aus, die als EC2 Amazon-Instance-Rolle für die CodeDeploy Anwendung verwendet wird. Der Rollenname kann unterschiedlich sein. Von einer Bereitstellungsgruppe kann mehr als eine Instance-Rolle verwendet werden. Weitere Informationen finden Sie unter Erstellen Sie ein IAM Instance-Profil für Ihre EC2 Amazon-Instances.
-
Wählen Sie in der Registerkarte Permissions (Berechtigungen) die Option Add inline policy (Inline-Richtlinie hinzufügen).
-
Wählen Sie die JSONRegisterkarte und geben Sie die folgende Richtlinie ein, um Zugriff auf den Amazon S3 S3-Bucket zu gewähren, der von verwendet wird
AccountA
um Artefakte für Pipelines zu speichern (in diesem Beispielcodepipeline-us-east-2-1234567890
):{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*" ], "Resource": [ "arn:aws:s3:::
codepipeline-us-east-2-1234567890
/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::codepipeline-us-east-2-1234567890
" ] } ] } -
Wählen Sie Richtlinie prüfen.
-
Geben Sie unter Name einen Namen für diese Richtlinie ein. Wählen Sie Create Policy (Richtlinie erstellen) aus.
-
Erstellen Sie eine zweite Richtlinie für den AWS KMS Speicherort
ARN des vom Kunden verwalteten Schlüssels, der in erstellt wurdearn:aws:kms:us-east-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE
AccountA
und so konfiguriert, dass es erlaubtAccountB
um es zu benutzen:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-east-1:
012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE
" ] } ] }Wichtig
Sie müssen die Konto-ID von verwenden
AccountA
in dieser Richtlinie als Teil der Ressource ARN für den AWS KMS Schlüssel, wie hier gezeigt, sonst funktioniert die Richtlinie nicht. -
Wählen Sie Richtlinie prüfen.
-
Geben Sie unter Name einen Namen für diese Richtlinie ein. Wählen Sie Create Policy (Richtlinie erstellen) aus.
Erstellen Sie nun eine IAM Rolle, die für den kontoübergreifenden Zugriff verwendet werden soll, und konfigurieren Sie sie so, dass die CodePipeline Servicerolle in AccountA
kann die Rolle übernehmen. Diese Rolle muss Richtlinien enthalten, die den Zugriff auf die CodeDeploy Ressourcen und den Amazon S3 S3-Bucket ermöglichen, in dem Artefakte gespeichert werden AccountA
.
Um die kontoübergreifende Rolle zu konfigurieren in IAM
-
Melden Sie sich mit an AWS Management Console
AccountB
und öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam. -
Wählen Sie im Navigationsbereich Rollen aus. Wählen Sie Rolle erstellen aus.
-
Wählen Sie unter Typ der vertrauenswürdigen Entität auswählen die Option Weiteres AWS -Konto aus. Geben Sie unter Konten angeben, die diese Rolle verwenden können, im Feld Konto-ID die AWS Konto-ID für das Konto ein, mit dem die Pipeline erstellt werden soll, in ( CodePipeline
AccountA
), und wählen Sie dann Weiter: Berechtigungen aus.Wichtig
In diesem Schritt wird die Vertrauensbeziehungsrichtlinie zwischen
AccountB
andAccountA
. Dadurch wird jedoch Zugriff auf das Konto auf Root-Ebene gewährt, und es wird CodePipeline empfohlen, diesen Zugriff auf die CodePipeline Servicerolle in zu beschränkenAccountA
. Folgen Sie Schritt 16, um die Berechtigungen einzuschränken. -
Wählen Sie unter Richtlinien zum Anhängen von Berechtigungen die Option ReadOnlyAccess AmazonS3 und dann Weiter: Tags aus.
Anmerkung
Dies ist nicht die Richtlinie, die Sie verwenden werden. Sie müssen eine Richtlinie auswählen, um den Assistenten abzuschließen.
-
Wählen Sie Weiter: Prüfen aus. Geben Sie im Feld Rollenname einen Namen für diese Rolle ein (z. B.
CrossAccount_Role
). Sie können dieser Rolle einen beliebigen Namen geben, solange sie den Benennungskonventionen unter entsprichtIAM. Geben Sie der Rolle einen Namen, der ihren Zweck eindeutig beschreibt. Wählen Sie Create Role aus. -
Wählen Sie aus der Rollenliste die Rolle aus, die Sie gerade erstellt haben (zum Beispiel
CrossAccount_Role
), um die Übersichtsseite für diese Rolle zu öffnen. -
Wählen Sie in der Registerkarte Permissions (Berechtigungen) die Option Add inline policy (Inline-Richtlinie hinzufügen).
-
Wählen Sie die JSONRegisterkarte und geben Sie die folgende Richtlinie ein, um den Zugriff auf CodeDeploy Ressourcen zu ermöglichen:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codedeploy:CreateDeployment", "codedeploy:GetDeployment", "codedeploy:GetDeploymentConfig", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision" ], "Resource": "*" } ] }
-
Wählen Sie Richtlinie prüfen.
-
Geben Sie unter Name einen Namen für diese Richtlinie ein. Wählen Sie Create Policy (Richtlinie erstellen) aus.
-
Wählen Sie in der Registerkarte Permissions (Berechtigungen) die Option Add inline policy (Inline-Richtlinie hinzufügen).
-
Wählen Sie die JSONRegisterkarte und geben Sie die folgende Richtlinie ein, damit diese Rolle Eingabeartefakte aus dem Amazon S3 S3-Bucket abrufen und Ausgabeartefakte in diesen ablegen kann
AccountA
:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject*", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::
codepipeline-us-east-2-1234567890
/*" ] } ] } -
Wählen Sie Richtlinie prüfen.
-
Geben Sie unter Name einen Namen für diese Richtlinie ein. Wählen Sie Create Policy (Richtlinie erstellen) aus.
-
Suchen Sie auf der Registerkarte Berechtigungen ReadOnlyAccess in der Liste der Richtlinien unter Richtlinienname nach AmazonS3 und wählen Sie das Löschsymbol (X) neben der Richtlinie aus. Wählen Sie nach Aufforderung Detach aus.
-
Wählen Sie die Registerkarte Vertrauensverhältnis und dann Vertrauensrichtlinie bearbeiten aus. Wählen Sie in der linken Spalte die Option Principal hinzufügen aus. Wählen Sie als Prinzipaltyp die Option IAMRollen aus, und geben Sie dann die ARN für die CodePipeline Servicerolle in
AccountA
. Entfernen Sie esarn:aws:iam::Account_A:root
aus der Liste für AWS Principals und wählen Sie dann Update policy aus.
Schritt 2: Bearbeiten der Pipeline
Sie können die CodePipeline Konsole nicht verwenden, um eine Pipeline zu erstellen oder zu bearbeiten, die Ressourcen verwendet, die mit einem anderen AWS Konto verknüpft sind. Sie können jedoch die Konsole verwenden, um die allgemeine Struktur der Pipeline zu erstellen und dann die Pipeline AWS CLI zu bearbeiten und diese Ressourcen hinzuzufügen. Alternativ können Sie die Struktur einer vorhandenen Pipeline verwenden und dieser die Ressourcen manuell hinzufügen.
Um die Ressourcen hinzuzufügen, die einem anderen AWS Konto zugeordnet sind (AWS CLI)
-
Führen Sie an einem Terminal (Linux, macOS oder Unix) oder einer Befehlszeile (Windows) den get-pipeline Befehl für die Pipeline aus, zu der Sie Ressourcen hinzufügen möchten. Kopieren Sie die Befehlsausgabe in eine JSON Datei. Für eine Pipeline mit dem Namen würden Sie MyFirstPipeline beispielsweise etwas Ähnliches wie das Folgende eingeben:
aws codepipeline get-pipeline --name
MyFirstPipeline
>pipeline.json
Die Ausgabe wird gesendet an
pipeline.json
file. -
Öffnen Sie die JSON Datei in einem beliebigen Klartexteditor. Fügen Sie anschließend
"type": "S3"
im Artefaktspeicher die Informationen KMSencryptionKey, die ID und den Typ hinzucodepipeline-us-east-2-1234567890
ist der Name des Amazon S3 S3-Buckets, der zum Speichern von Artefakten für die Pipeline verwendet wird, und
ist der Name ARN des kundenverwalteten Schlüssels, den Sie gerade erstellt haben:arn:aws:kms:us-east-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE
{ "artifactStore”: { "location": "
codepipeline-us-east-2-1234567890
", "type": "S3", "encryptionKey": { "id": "arn:aws:kms:us-east-1:012ID_ACCOUNT_A:key/2222222-3333333-4444-556677EXAMPLE
", "type": "KMS" } }, -
Fügen Sie eine Bereitstellungsaktion in einer Phase hinzu, um die zugehörigen CodeDeploy Ressourcen zu verwenden
AccountB
, einschließlich derroleArn
Werte für die kontenübergreifende Rolle, die Sie erstellt haben (CrossAccount_Role
).Das folgende Beispiel zeigtJSON, dass eine Bereitstellungsaktion mit dem Namen hinzugefügt wird
ExternalDeploy
. Es verwendet die CodeDeploy Ressourcen, die in erstellt wurdenAccountB
in einer Phase mit dem NamenStaging
. Im folgenden Beispiel ist der ARN fürAccountB
ist012ID_ACCOUNT_B
:, { "name": "Staging", "actions": [ { "inputArtifacts": [ { "name": "MyAppBuild" } ], "name": "
ExternalDeploy
", "actionTypeId": { "category": "Deploy", "owner": "AWS", "version": "1", "provider": "CodeDeploy" }, "outputArtifacts": [], "configuration": { "ApplicationName": "AccountBApplicationName
", "DeploymentGroupName": "AccountBApplicationGroupName
" }, "runOrder": 1, "roleArn": "arn:aws:iam::012ID_ACCOUNT_B
:role/CrossAccount_Role
" } ] }Anmerkung
Dies gilt nicht JSON für die gesamte Pipeline, sondern nur für die Struktur der Aktion in einer Phase.
-
Sie müssen die
metadata
-Zeilen aus der Datei entfernen, damit der Befehl update-pipeline sie verwenden kann. Entfernen Sie den Abschnitt aus der Pipeline-Struktur in der JSON Datei (die"metadata": { }
Zeilen und die"updated"
Felder"created"
"pipelineARN"
, und).Entfernen Sie z. B. die folgenden Zeilen aus der Struktur:
"metadata": { "pipelineArn": "arn:aws:codepipeline:
region
:account-ID
:pipeline-name
", "created": "date
", "updated": "date
" }Speichern Sie die Datei.
-
Um Ihre Änderungen zu übernehmen, führen Sie den update-pipeline Befehl aus und geben Sie dabei die JSON Pipeline-Datei an, ähnlich wie im Folgenden:
Wichtig
Achten Sie darauf, dass
file://
vor dem Dateinamen steht. Dies ist bei diesem Befehl erforderlich.aws codepipeline update-pipeline --cli-input-json file://
pipeline.json
Dieser Befehl gibt die gesamte Struktur der bearbeiteten Pipeline zurück.
Um die Pipeline zu testen, die Ressourcen verwendet, die einem anderen AWS Konto zugeordnet sind
-
Führen Sie den Befehl an einem Terminal (Linux, macOS oder Unix) oder einer Befehlszeile (Windows) aus und geben Sie dabei den Namen der Pipeline an, ähnlich wie im Folgenden: start-pipeline-execution
aws codepipeline start-pipeline-execution --name MyFirstPipeline
Weitere Informationen finden Sie unter Manuelles Starten einer Pipeline.
-
Melden Sie sich AWS Management Console bei der an
AccountA
und öffnen Sie die CodePipeline Konsole unter http://console.aws.amazon.com/codesuite/codepipeline/home. Die Namen aller mit Ihrem AWS Konto verknüpften Pipelines werden angezeigt.
-
Wählen Sie im Feld Name den Namen der Pipeline, die Sie soeben bearbeitet haben. Auf diese Weise wird eine detaillierte Ansicht der Pipeline geöffnet (einschließlich des Status der einzelnen Aktionen in den einzelnen Stufen der Pipeline).
-
Sehen Sie sich den Fortschritt in der Pipeline an. Warten Sie auf eine Erfolgsmeldung für die Aktion, die die mit einem anderen AWS Konto verknüpfte Ressource verwendet.
Anmerkung
Sie erhalten eine Fehlermeldung, wenn Sie versuchen, Details für die Aktion anzuzeigen, während Sie angemeldet sind
AccountA
. Melden Sie sich ab und melden Sie sich dann an mitAccountB
um die Bereitstellungsdetails in einzusehen CodeDeploy.