

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 einer anderen verwendet werden AWS Konto
<a name="pipelines-create-cross-account"></a>

Sie möchten möglicherweise eine Pipeline erstellen, die Ressourcen verwendet, die von einem anderen AWS -Konto erstellt oder verwaltet werden. Beispielsweise möchten Sie ein Konto für Ihre Pipeline und ein anderes Konto 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 auf demselben 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.
Cross-account Aktionen werden für die folgenden Aktionstypen nicht unterstützt:  
Jenkins-Build-Aktionen

Für dieses Beispiel müssen Sie einen zu verwendenden AWS Key Management Service (AWS KMS) -Schlüssel 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-ARN verwenden, um den Schlüssel zu identifizieren. Cross-account Bei Aktionen wird die Rolle des anderen Kontos (AccountB) verwendet. Wenn Sie also die Schlüssel-ID angeben, wird der Schlüssel des anderen Kontos (accounB) verwendet.

In dieser exemplarischen Vorgehensweise und ihren Beispielen {{AccountA}} wird das Konto dargestellt, das ursprünglich zum Erstellen der Pipeline verwendet wurde. Es hat Zugriff auf den Amazon S3-Bucket, der zum Speichern von Pipeline-Artefakten verwendet wird, sowie auf die von AWS CodePipeline verwendete Servicerolle. {{AccountB}}ist das Konto, das ursprünglich zur Erstellung der CodeDeploy Anwendung, Bereitstellungsgruppe und Servicerolle verwendet wurde, die von verwendet wurden CodeDeploy. 

{{AccountA}}Um eine Pipeline für die Verwendung der von erstellten CodeDeploy Anwendung zu bearbeiten{{AccountB}}, {{AccountA}} müssen Sie: 
+ Fordern Sie den ARN oder die Konto-ID von an {{AccountB}} (in dieser exemplarischen Vorgehensweise lautet die {{AccountB}} ID{{012ID\_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 die Berechtigungen zur Verwendung dieses Schlüssels ({{CodePipeline\_Service\_Role}}) und{{AccountB}}. 
+ Erstellen Sie eine Amazon S3-Bucket-Richtlinie, die {{AccountB}} Zugriff auf den Amazon S3-Bucket gewährt (z. B.{{codepipeline-us-east-2-1234567890}}). 
+ Erstellen Sie eine Richtlinie, die es ermöglicht, eine von konfigurierte Rolle {{AccountA}} zu übernehmen{{AccountB}}, und hängen Sie diese Richtlinie an die Servicerolle an ({{CodePipeline\_Service\_Role}}).
+ Bearbeiten Sie die Pipeline so, dass sie den vom Kunden verwalteten AWS KMS Schlüssel anstelle des Standardschlüssels verwendet.

{{AccountB}}Um einer Pipeline, die in erstellt wurde, den Zugriff auf ihre Ressourcen zu ermöglichen{{AccountA}}, {{AccountB}} müssen Sie:
+ Fordern Sie den ARN oder die Konto-ID von an {{AccountA}} (in dieser exemplarischen Vorgehensweise lautet die {{AccountA}} ID{{012ID\_ACCOUNT\_A}}).
+ Erstellen Sie eine Richtlinie, die auf die [ Amazon EC2-Instance-Rolle angewendet wird CodeDeploy , für die der Zugriff auf den Amazon S3-Bucket () ](https://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-create-iam-instance-profile.html) {{codepipeline-us-east-2-1234567890}} konfiguriert ist.
+ Erstellen Sie eine Richtlinie, die auf die [ Amazon EC2-Instance-Rolle angewendet wird CodeDeploy , für die ](https://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-create-iam-instance-profile.html) konfiguriert wurde und die den Zugriff auf den vom AWS KMS Kunden verwalteten Schlüssel ermöglicht, der zum Verschlüsseln der Pipeline-Artefakte verwendet wird. {{AccountA}}
+ Konfigurieren und fügen Sie eine IAM-Rolle ({{CrossAccount\_Role}}) mit einer Vertrauensbeziehungsrichtlinie hinzu, die es der CodePipeline Servicerolle ermöglicht, die Rolle {{AccountA}} zu übernehmen.
+ Erstellen Sie eine Richtlinie, die den Zugriff auf die für die Pipeline benötigten Bereitstellungsressourcen ermöglicht, und fügen Sie sie an{{CrossAccount\_Role}}.
+ Erstellen Sie eine Richtlinie, die den Zugriff auf den Amazon S3-Bucket ({{codepipeline-us-east-2-1234567890}}) ermöglicht, und hängen Sie ihn an{{CrossAccount\_Role}}.

**Topics**
+ [Voraussetzung: Erstellen Sie eine AWS KMS Verschlüsselungsschlüssel](#pipelines-create-cross-account-create-key)
+ [Schritt 1: Einrichten von Kontorichtlinien und Rollen](#pipelines-create-cross-account-setup)
+ [Schritt 2: Bearbeiten der Pipeline](#pipelines-create-cross-account-create)

## Voraussetzung: Erstellen Sie eine AWS KMS Verschlüsselungsschlüssel
<a name="pipelines-create-cross-account-create-key"></a>

Customer-managed Schlüssel sind spezifisch für eine Region, genau 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, müssen Sie AWS KMS**

1. Melden Sie sich bei with AWS-Managementkonsole an {{AccountA}} und öffnen Sie die AWS KMS Konsole.

1. Wählen Sie links **Customer managed keys (Vom Kunden verwaltete Schlüssel)** aus.

1. 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.

1. 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 die Tags für den Schlüssel ein und wählen Sie dann **Next (Weiter)** aus.

1. 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**.

1. 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 AWS Konto hinzufügen aus**. Geben Sie die Konto-ID ein{{AccountB}}, um den ARN zu vervollständigen, und wählen Sie dann ** Weiter**.

1. Überprüfen Sie die Richtlinie in **Preview Key Policy (Vorschau der Schlüsselrichtlinie)** und wählen Sie dann **Finish (Beenden)** aus.

1. Wählen Sie aus der Liste der Schlüssel den Alias Ihres Schlüssels aus und kopieren Sie dessen ARN (z. B. **{{arn:aws:kms:us-east-2:012ID\_ACCOUNT\_A:key/2222222-3333333-4444-556677EXAMPLE}}**). Sie benötigen diese Informationen, wenn Sie Ihre Pipeline bearbeiten und Richtlinien konfigurieren.

## Schritt 1: Einrichten von Kontorichtlinien und Rollen
<a name="pipelines-create-cross-account-setup"></a>

Nachdem Sie den AWS KMS Schlüssel erstellt haben, müssen Sie Richtlinien erstellen und anhängen, die den kontoübergreifenden Zugriff ermöglichen. Dies erfordert Aktionen von beiden Seiten{{AccountA}}. {{AccountB}}

**Topics**
+ [Konfigurieren Sie Richtlinien und Rollen in dem Konto, das die Pipeline erstellen wird ({{Konto A}})](#pipelines-create-cross-account-setup-accounta)
+ [Konfigurieren Sie Richtlinien und Rollen in dem Konto, dem das gehört AWS Ressource ({{Konto B}})](#pipelines-create-cross-account-setup-accountb)

### Konfigurieren Sie Richtlinien und Rollen in dem Konto, das die Pipeline erstellen wird ({{Konto A}})
<a name="pipelines-create-cross-account-setup-accounta"></a>

Um eine Pipeline zu erstellen, die CodeDeploy Ressourcen verwendet, die mit einem anderen AWS Konto verknüpft sind, {{AccountA}} müssen Richtlinien sowohl für den Amazon S3-Bucket, in dem Artefakte gespeichert werden, als auch für die Servicerolle für CodePipeline konfiguriert werden.

**Um eine Richtlinie für den Amazon S3-Bucket zu erstellen, die Zugriff auf AccountB (Konsole) gewährt**

1. Melden Sie sich bei AWS-Managementkonsole with an {{AccountA}} und öffnen Sie die Amazon S3-Konsole unter [ https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Wählen Sie in der Liste der Amazon S3-Buckets den Amazon S3-Bucket aus, in dem Artefakte für Ihre Pipelines gespeichert werden. Dieser Bucket hat einen Namen. Dabei {{region}} handelt es sich um die AWS Region`codepipeline-{{region}}-{{1234567EXAMPLE}}`, in der Sie die Pipeline erstellt haben, und {{1234567EXAMPLE}} es handelt sich um eine zehnstellige Zufallszahl, die sicherstellt, dass der Bucket-Name eindeutig ist (z. B.). {{codepipeline-us-east-2-1234567890}}

1. Wählen Sie auf der Detailseite für den Amazon S3-Bucket die Option ** Properties ** aus.

1. Erweitern Sie im Eigenschaftenbereich das Feld **Permissions** und wählen Sie **Add bucket policy** aus.
**Anmerkung**  
Wenn Ihrem Amazon 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 [ Überblick über IAM-Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies_overview.html). 

1. Erstellen Sie im ** Bucket Policy ** Editor-Fenster eine Richtlinie, die den {{AccountB}} Zugriff auf die Pipeline-Artefakte ermöglicht und {{AccountB}} die Möglichkeit bietet, Ausgabeartefakte hinzuzufügen, wenn sie durch eine Aktion, z. B. eine benutzerdefinierte Quelle oder eine Build-Aktion, erstellt werden. 

1. Wählen Sie **Save** und schließen Sie dann den Richtlinien-Editor.

1. Wählen Sie ** Speichern**, um die Berechtigungen für den Amazon S3-Bucket zu speichern.

**Um eine Richtlinie für die Servicerolle für CodePipeline (Konsole) zu erstellen**

1. Melden Sie sich bei with AWS-Managementkonsole an {{AccountA}} und öffnen Sie die IAM-Konsole unter [ https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Wählen Sie im Navigationsbereich **Rollen**.

1. Wählen Sie in der Liste der Rollen unter **Role Name (Rollenname)** den Namen der Service-Rolle für CodePipeline aus.

1. Wählen Sie in der Registerkarte **Permissions (Berechtigungen)** die Option **Add inline policy (Inline-Richtlinie hinzufügen)**.

1. Wählen Sie die ** Registerkarte ** JSON und geben Sie die folgende Richtlinie ein, um die Übernahme der Rolle {{AccountB}} zu ermöglichen. Im folgenden Beispiel {{012ID\_ACCOUNT\_B}} ist das ARN für{{AccountB}}:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": "sts:AssumeRole",
           "Resource": [
               "arn:aws:iam::{{111122223333}}:role/*"
           ]
       }
   }
   ```

------

1. Wählen Sie **Richtlinie prüfen**. 

1. Geben Sie unter **Name** einen Namen für diese Richtlinie ein. Wählen Sie **Richtlinie erstellen** aus.

### Konfigurieren Sie Richtlinien und Rollen in dem Konto, dem das gehört AWS Ressource ({{Konto B}})
<a name="pipelines-create-cross-account-setup-accountb"></a>

Wenn Sie eine Anwendungs-, Bereitstellungs- und Bereitstellungsgruppe in erstellen CodeDeploy, erstellen Sie auch eine [ Amazon EC2-Instance-Rolle. ](https://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-create-iam-instance-profile.html) (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.) Damit eine in erstellte Pipeline {{AccountA}} die in erstellten CodeDeploy Ressourcen verwenden kann{{AccountB}}, müssen Sie: 
+ Konfigurieren Sie eine Richtlinie für die Instance-Rolle, die ihr den Zugriff auf den Amazon S3-Bucket ermöglicht, in dem Pipeline-Artefakte gespeichert sind.
+ Erstellen Sie eine zweite Rolle, die für den kontoübergreifenden Zugriff {{AccountB}} konfiguriert ist.

  Diese zweite Rolle muss nicht nur Zugriff auf den Amazon S3-Bucket 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öglicht, die Rolle {{AccountA}} 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 ihren Ressourcenbedarf zugeschnitten sind.

**Um eine Richtlinie für die Amazon EC2-Instance-Rolle zu erstellen, die für CodeDeploy (Konsole) konfiguriert ist**

1. Melden Sie sich bei AWS-Managementkonsole with an {{AccountB}} und öffnen Sie die IAM-Konsole unter. [ https://console.aws.amazon.com/iam/ ](https://console.aws.amazon.com/iam/)

1. Wählen Sie im Navigationsbereich **Rollen**.

1. Wählen Sie in der Rollenliste unter ** Rollenname den Namen der Servicerolle aus**, die als Amazon EC2-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 eines IAM-Instance-Profils für Ihre Amazon EC2-Instances. ](https://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-create-iam-instance-profile.html) 

1. Wählen Sie in der Registerkarte **Permissions (Berechtigungen)** die Option **Add inline policy (Inline-Richtlinie hinzufügen)**.

1. Wählen Sie die ** Registerkarte ** JSON und geben Sie die folgende Richtlinie ein, um Zugriff auf den Amazon S3-Bucket zu gewähren, der von {{AccountA}} zum Speichern von Artefakten für Pipelines verwendet wird (in diesem Beispiel): {{codepipeline-us-east-2-1234567890}}

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "s3:Get*"
          ],
          "Resource": [
            "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "s3:ListBucket"
          ],
          "Resource": [
            "arn:aws:s3:::{{amzn-s3-demo-bucket}}"
          ]
        }
      ]
    }
   ```

------

1. Wählen Sie **Richtlinie prüfen**. 

1. Geben Sie unter **Name** einen Namen für diese Richtlinie ein. Wählen Sie **Richtlinie erstellen** aus.

1. Erstellen Sie eine zweite Richtlinie, in der festgelegt **{{arn:aws:kms:us-east-1:012ID\_ACCOUNT\_A:key/2222222-3333333-4444-556677EXAMPLE}}** wird AWS KMS , wo der ARN des vom Kunden verwalteten Schlüssels angezeigt wird, der erstellt {{AccountA}} und so konfiguriert ist, dass er verwendet werden kann{{AccountB}}:

------
#### [ JSON ]

****  

   ```
   {
       "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:{{111122223333:key/2222222-3333333-4444-556677EXAMPLE}}"
               ]
           }
       ]
   }
   ```

------
**Wichtig**  
Sie müssen die Konto-ID von {{AccountA}} in dieser Richtlinie als Teil des Ressourcen-ARN für den AWS KMS Schlüssel verwenden, wie hier gezeigt, sonst funktioniert die Richtlinie nicht.

1. Wählen Sie **Richtlinie prüfen**. 

1. Geben Sie unter **Name** einen Namen für diese Richtlinie ein. Wählen Sie **Richtlinie erstellen** aus.

Erstellen Sie nun eine IAM-Rolle, die Sie für den kontoübergreifenden Zugriff verwenden können, und konfigurieren Sie sie so, dass die CodePipeline Servicerolle in die Rolle übernehmen {{AccountA}} kann. Diese Rolle muss Richtlinien enthalten, die den Zugriff auf die CodeDeploy Ressourcen und den Amazon S3-Bucket ermöglichen, in dem Artefakte gespeichert werden. {{AccountA}}

**So konfigurieren Sie die kontoübergreifende Rolle in IAM**

1. Melden Sie sich bei AWS-Managementkonsole with an {{AccountB}} und öffnen Sie die IAM-Konsole unter. [ https://console.aws.amazon.com/iam ](https://console.aws.amazon.com/iam)

1. Wählen Sie im Navigationsbereich **Rollen** aus. Wählen Sie **Create role** (Rolle erstellen) aus.

1. 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, in dem die Pipeline erstellt werden soll CodePipeline ({{AccountA}}), und wählen Sie dann ** Weiter: Berechtigungen ** aus.
**Wichtig**  
In diesem Schritt wird die Vertrauensbeziehungsrichtlinie zwischen {{AccountB}} und erstellt{{AccountA}}. Dadurch wird jedoch Root-Zugriff auf das Konto gewährt, und es wird CodePipeline empfohlen, den Bereich auf die CodePipeline Service-Rolle in zu reduzieren. {{AccountA}} Folgen Sie Schritt 16, um die Berechtigungen einzuschränken.

1. Wählen ** ** AmazonS3ReadOnlyAccess ** Sie unter Richtlinien ** zum Anhängen von Berechtigungen die Option 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.

1. 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 in IAM entspricht. Geben Sie der Rolle einen Namen, der ihren Zweck eindeutig beschreibt. Wählen Sie **Rolle erstellen** aus.

1. Wählen Sie aus der Rollenliste die Rolle aus, die Sie gerade erstellt haben (z. B.{{CrossAccount\_Role}}), um die ** ** Übersichtsseite für diese Rolle zu öffnen.

1. Wählen Sie in der Registerkarte **Permissions (Berechtigungen)** die Option **Add inline policy (Inline-Richtlinie hinzufügen)**. 

1. Wählen Sie die ** Registerkarte ** JSON und geben Sie die folgende Richtlinie ein, um den Zugriff auf CodeDeploy Ressourcen zu ermöglichen:

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "codedeploy:CreateDeployment",
           "codedeploy:GetDeployment",
           "codedeploy:GetDeploymentConfig",
           "codedeploy:GetApplicationRevision",
           "codedeploy:RegisterApplicationRevision"
         ],
         "Resource": "*"
       }
     ]
   }
   ```

------

1. Wählen Sie **Richtlinie prüfen**.

1. Geben Sie unter **Name** einen Namen für diese Richtlinie ein. Wählen Sie **Richtlinie erstellen** aus.

1. Wählen Sie in der Registerkarte **Permissions (Berechtigungen)** die Option **Add inline policy (Inline-Richtlinie hinzufügen)**.

1. Wählen Sie die ** Registerkarte ** JSON und geben Sie die folgende Richtlinie ein, damit diese Rolle Eingabeartefakte aus dem Amazon S3-Bucket abrufen und Ausgabeartefakte in den Amazon S3-Bucket einfügen kann{{AccountA}}:

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "s3:GetObject*",
            "s3:PutObject",
            "s3:PutObjectAcl"               
          ],
          "Resource": [
            "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
          ]
        }
      ]
   }
   ```

------

1. Wählen Sie **Richtlinie prüfen**.

1. Geben Sie unter **Name** einen Namen für diese Richtlinie ein. Wählen Sie **Richtlinie erstellen** aus.

1. Suchen Sie auf der ** Registerkarte ** Berechtigungen ** AmazonS3ReadOnlyAccess ** in der Liste der ** Richtlinien unter Richtlinienname ** und wählen Sie das Löschsymbol (**X**) neben der Richtlinie aus. Wählen Sie nach Aufforderung **Detach** aus.

1. Wählen Sie die ** Registerkarte ** Vertrauensbeziehung und dann Vertrauensrichtlinie ** bearbeiten aus**. Wählen Sie in der linken Spalte die ** Option Prinzipal ** hinzufügen aus. Wählen Sie ** als ** Principal-Typ die Option ** IAM-Rollen aus**, und geben Sie dann den ARN für die CodePipeline Servicerolle unter an{{AccountA}}. `arn:aws:iam::Account_A:root`Aus der Liste für **AWS Principals entfernen**, und wählen Sie dann Richtlinie ** aktualisieren aus. **

## Schritt 2: Bearbeiten der Pipeline
<a name="pipelines-create-cross-account-create"></a>

Sie können die CodePipeline Konsole nicht verwenden, um eine Pipeline zu erstellen oder zu bearbeiten, die Ressourcen verwendet, die einem anderen AWS Konto zugeordnet sind. Sie können die Konsole jedoch verwenden, um die allgemeine Struktur der Pipeline zu erstellen, und dann die verwenden, AWS CLI um die Pipeline 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 einer anderen zugeordnet sind AWS Konto (AWS CLI)**

1. Führen Sie an einem Terminal (Linux, macOS oder Unix) oder einer Befehlszeile (Windows) den **get-pipeline** Befehl in der Pipeline aus, zu der Sie Ressourcen hinzufügen möchten. Kopieren Sie die Ausgabe des Befehls in eine JSON-Datei. Für eine Pipeline mit dem Namen MyFirstPipeline geben Sie beispielsweise Folgendes ein:

   ```
   aws codepipeline get-pipeline --name {{MyFirstPipeline}} >{{pipeline.json}}
   ```

   Die Ausgabe wird an die Datei {{pipeline.json}} gesendet.

1. Öffnen Sie die JSON-Datei in einem beliebigen Texteditor. Fügen Sie anschließend `"type": "S3"` im Artefaktspeicher den KMS-Verschlüsselungsschlüssel, die ID und die Typinformationen hinzu. Dabei {{codepipeline-us-east-2-1234567890}} handelt es sich um den Namen des Amazon S3-Buckets, der zum Speichern von Artefakten für die Pipeline verwendet wird, und **{{arn:aws:kms:us-east-1:012ID\_ACCOUNT\_A:key/2222222-3333333-4444-556677EXAMPLE}}** um den ARN des kundenverwalteten Schlüssels, den Sie gerade erstellt haben:

   ```
   {
     "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"
       }
     },
   ```

1. Fügen Sie in einer Phase eine Bereitstellungsaktion hinzu, um die zugehörigen CodeDeploy Ressourcen zu verwenden{{AccountB}}, einschließlich der `roleArn` Werte für die von Ihnen erstellte kontoübergreifende Rolle (). {{CrossAccount\_Role}}

   Das folgende Beispiel zeigt JSON, das eine Bereitstellungsaktion mit dem Namen {{ExternalDeploy}} hinzufügt. Es verwendet die CodeDeploy Ressourcen, die {{AccountB}} in einer Phase mit dem Namen erstellt wurden{{Staging}}. Im folgenden Beispiel {{AccountB}} lautet der ARN für{{012ID\_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 ist nicht der JSON-Code für die gesamte Pipeline. Es handelt sich nur um die Struktur für die Aktion in einer Stufe.

1. 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 Fehler `"created"`, `"pipelineARN"` und `"updated"`).

   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.

1.  Führen Sie den Befehl **update-pipeline** aus, um die Änderungen zu übernehmen. Geben Sie die Pipeline-JSON-Datei dabei folgendermaßen an:
**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 einer anderen zugeordnet sind AWS Konto**

1. Führen Sie den Befehl an einem Terminal (Linux, macOS oder Unix) oder einer **start-pipeline-execution** Befehlszeile (Windows) aus und geben Sie dabei den Namen der Pipeline an, ähnlich dem Folgenden:

   ```
   aws codepipeline start-pipeline-execution --name MyFirstPipeline
   ```

   Weitere Informationen finden Sie unter [Manuelles Starten einer Pipeline](pipelines-rerun-manually.md).

1. Melden Sie sich bei with AWS-Managementkonsole an {{AccountA}} und öffnen Sie die CodePipeline Konsole unter [ http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

   Die Namen aller mit Ihrem AWS Konto verknüpften Pipelines werden angezeigt.

1. 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).

1. 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 mit an{{AccountB}}, um die Bereitstellungsdetails einzusehen CodeDeploy. 