

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.

# Verbindung zu Amazon S3 S3-Quellaktionen herstellen, die EventBridge und verwenden AWS CloudTrail
<a name="create-cloudtrail-S3-source"></a>

Die Anweisungen in diesem Abschnitt enthalten die Schritte zum Erstellen der S3-Quellaktion, die AWS CloudTrail Ressourcen verwendet, die Sie erstellen und verwalten müssen. Um die S3-Quellaktion zu verwenden, für EventBridge die keine zusätzlichen AWS CloudTrail Ressourcen erforderlich sind, verwenden Sie die CLI-Anweisungen unter[Migrieren Sie Abfrage-Pipelines mit einer für Ereignisse aktivierten S3-Quelle](update-change-detection.md#update-change-detection-S3-event).

**Wichtig**  
Dieses Verfahren enthält die Schritte zum Erstellen der S3-Quellaktion, die AWS CloudTrail Ressourcen verwendet, die Sie erstellen und verwalten müssen. Das Verfahren zum Erstellen dieser Aktion ohne AWS CloudTrail Ressourcen ist in der Konsole nicht verfügbar. Informationen zur Verwendung der CLI finden Sie unter[Migrieren Sie Abfrage-Pipelines mit einer für Ereignisse aktivierten S3-Quelle](update-change-detection.md#update-change-detection-S3-event).

Um eine Amazon S3 S3-Quellaktion hinzuzufügen CodePipeline, wählen Sie entweder: 
+ Verwenden Sie den Assistenten „**Pipeline erstellen**“ ([Erstellen Sie eine benutzerdefinierte Pipeline (Konsole)](pipelines-create.md#pipelines-create-console)) oder die **Aktionsseite „Bearbeiten**“ der CodePipeline Konsole, um die Option **S3-Anbieter** auszuwählen. Die Konsole erstellt eine EventBridge Regel und einen CloudTrail Trail, die Ihre Pipeline starten, wenn sich die Quelle ändert.
+ Verwenden Sie den AWS CLI , um die Aktionskonfiguration für die `S3` Aktion hinzuzufügen und zusätzliche Ressourcen wie folgt zu erstellen:
  + Verwenden Sie die `S3` Beispiel-Aktionskonfiguration in[Referenz zur Amazon S3 S3-Quellaktion](action-reference-S3.md), um Ihre Aktion zu erstellen, wie unter gezeigt[Erstellen einer Pipeline (CLI)](pipelines-create.md#pipelines-create-cli).
  + Die Methode zur Erkennung von Änderungen startet die Pipeline standardmäßig durch Abfragen der Quelle. Sie sollten die regelmäßigen Prüfungen deaktivieren und die Regel und das Protokoll zur Änderungserkennung manuell erstellen. Verwenden Sie eine der folgenden Methoden:[Eine EventBridge Regel für eine Amazon S3 S3-Quelle (Konsole) erstellen](create-cloudtrail-S3-source-console.md),[Eine EventBridge Regel für eine Amazon S3 S3-Quelle (CLI) erstellen](create-cloudtrail-S3-source-cli.md), oder[Eine EventBridge Regel für eine Amazon S3 S3-Quelle erstellen (CloudFormation Vorlage)](create-cloudtrail-S3-source-cfn.md).

AWS CloudTrail ist ein Service, der Ereignisse in Ihrem Amazon S3 S3-Quell-Bucket protokolliert und filtert. Der Trail sendet die gefilterten Quelländerungen an die EventBridge Regel. Die EventBridge Regel erkennt die Quellenänderung und startet dann Ihre Pipeline. 

**Voraussetzungen:**
+ Wenn Sie keinen Trail erstellen, verwenden Sie einen vorhandenen AWS CloudTrail Trail, um Ereignisse in Ihrem Amazon S3 S3-Quell-Bucket zu protokollieren und gefilterte Ereignisse an die EventBridge Regel zu senden.
+ Erstellen oder verwenden Sie einen vorhandenen S3-Bucket, in dem die Protokolldateien gespeichert werden AWS CloudTrail können. AWS CloudTrail muss über die erforderlichen Berechtigungen verfügen, um Protokolldateien an einen Amazon S3 S3-Bucket zu liefern. Der Bucket kann nicht als [Zahlung durch den Anforderer](https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html)-Bucket konfiguriert werden. Wenn Sie im Rahmen der Erstellung oder Aktualisierung eines Trails in der Konsole einen Amazon S3 S3-Bucket erstellen, AWS CloudTrail fügt die erforderlichen Berechtigungen für Sie einem Bucket hinzu. Weitere Informationen finden Sie unter [Amazon S3 S3-Bucket-Richtlinie für CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create-s3-bucket-policy-for-cloudtrail.html).

# Eine EventBridge Regel für eine Amazon S3 S3-Quelle (Konsole) erstellen
<a name="create-cloudtrail-S3-source-console"></a>

Bevor Sie eine Regel in einrichten EventBridge, müssen Sie einen AWS CloudTrail Trail erstellen. Weitere Informationen finden Sie unter [Erstellen eines Trails in der Konsole](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-a-trail-using-the-console-first-time.html).

**Wichtig**  
Wenn Sie die Konsole verwenden, um Ihre Pipeline zu erstellen oder zu bearbeiten, werden Ihre EventBridge Regel und Ihr AWS CloudTrail Trail für Sie erstellt.

**So erstellen Sie einen Trail**

1. Öffnen Sie die AWS CloudTrail Konsole.

1. Wählen Sie im Navigationsbereich **Trails** aus.

1. Wählen Sie **Create Trail (Trail erstellen)** aus. Geben Sie unter **Trail name (Trail-Name)** einen Namen für Ihren Trail ein.

1. Erstellen oder geben Sie unter **Storage location** (Speicherort) den Bucket an, der zum Speichern der Protokolldateien verwendet werden soll. Standardmäßig werden Amazon-S3-Buckets und -Objekte als privat eingestuft. Nur der Besitzer der Ressource (das AWS Konto, das den Bucket erstellt hat) kann auf den Bucket und seine Objekte zugreifen. Der Bucket muss über eine Ressourcenrichtlinie verfügen, die AWS CloudTrail Berechtigungen für den Zugriff auf die Objekte im Bucket gewährt.

1. Geben Sie unter **Trail-Protokoll-Bucket und -Ordner** einen Amazon S3 S3-Bucket und das Objektpräfix (Ordnername) an, um Datenereignisse für alle Objekte im Ordner zu protokollieren. Sie können jedem Trail 250 Amazon S3-Objekte hinzufügen. Geben Sie die erforderlichen Informationen zum Verschlüsselungsschlüssel ein und wählen Sie **Weiter**.

1. Wählen Sie als **Ereignistyp** die Option **Verwaltungsereignisse** aus.

1. Wählen Sie für **Verwaltungsereignisse** die Option **Schreiben** aus. Der Trail zeichnet Amazon S3 S3-API-Aktivitäten auf Objektebene (z. B. `GetObject` und`PutObject`) für den angegebenen Bucket und das angegebene Präfix auf.

1. Wählen Sie **Write (Schreiben)** aus. 

1. Wenn Sie mit dem Trail zufrieden sind, wählen Sie **Create** Trail.

**Um eine EventBridge Regel zu erstellen, die auf Ihre Pipeline mit einer Amazon S3 S3-Quelle abzielt**

1. Öffnen Sie die EventBridge Amazon-Konsole unter [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. Wählen Sie im Navigationsbereich **Regeln** aus. Lassen Sie den Standardbus ausgewählt oder wählen Sie einen Event-Bus. Wählen Sie **Regel erstellen** aus.

1. **Geben Sie im Feld Name einen Namen für Ihre Regel ein.**

1. Wählen Sie unter **Regeltyp** die Option **Regel mit einem Ereignismuster aus**. Wählen Sie **Weiter** aus.

1. Wählen Sie unter **Ereignisquelle AWS ** **Ereignisse oder EventBridge Partnerereignisse** aus.

1. Wählen Sie unter **Beispiel-Ereignistyp** die Option **AWS Ereignisse** aus.

1. Geben Sie im **Feld Beispielereignisse** S3 als Schlüsselwort ein, nach dem gefiltert werden soll. Wählen Sie **AWS API-Aufruf über CloudTrail**.

1. Wählen Sie unter **Erstellungsmethode** die Option **Kundenmuster (JSON-Editor)** aus.

   Fügen Sie das unten angegebene Ereignismuster ein. Stellen Sie sicher, dass Sie den Bucket-Namen und den S3-Objektschlüssel (oder den Schlüsselnamen) hinzufügen, mit denen das Objekt im Bucket eindeutig identifiziert wird`requestParameters`. In diesem Beispiel wird eine Regel für einen Bucket mit dem Namen `amzn-s3-demo-source-bucket` und dem Objektschlüssel von erstellt`my-files.zip`. Wenn Sie das Fenster **Edit (Bearbeiten)** zum Angeben von Ressourcen verwenden, wird Ihre Regel für die Verwendung eines benutzerdefinierten Ereignismusters aktualisiert.

   Im Folgenden finden Sie ein Beispiel-Ereignismuster, das Sie kopieren und einfügen können:

   ```
   {
       "source": [
           "aws.s3"
       ],
       "detail-type": [
           "AWS API Call via CloudTrail"
       ],
       "detail": {
           "eventSource": [
               "s3.amazonaws.com"
           ],
           "eventName": [
               "CopyObject",
               "CompleteMultipartUpload",
               "PutObject"
           ],
           "requestParameters": {
               "bucketName": [
                   "amzn-s3-demo-source-bucket"
               ],
               "key": [
                   "my-files.zip"
               ]
           }
       }
   }
   ```

1. Wählen Sie **Weiter** aus.

1. Wählen Sie **unter Zieltypen** die Option **AWS Dienst** aus.

1. **Wählen Sie unter Ziel** auswählen die Option aus **CodePipeline**. Geben Sie im Feld **Pipeline-ARN** den Pipeline-ARN für die Pipeline ein, die mit dieser Regel gestartet werden soll.
**Anmerkung**  
Um den Pipeline-ARN zu erhalten, führen Sie den Befehl **get-pipeline** aus. Der Pipeline-ARN wird in der Ausgabe angezeigt. Er wird in folgendem Format erstellt:   
arn:aws:codepipeline::: *region* *account* *pipeline-name*  
Pipeline-Beispiel-ARN:  
arn:aws:codepipeline:us-east- 2:80398 BEISPIEL: MyFirstPipeline 

1. So erstellen oder spezifizieren Sie eine IAM-Dienstrolle, die EventBridge Berechtigungen zum Aufrufen des mit Ihrer Regel verknüpften Ziels gewährt (in diesem Fall lautet das Ziel): EventBridge CodePipeline 
   + Wählen Sie **Neue Rolle für diese spezifische Ressource erstellen** aus, um eine Servicerolle zu erstellen, die Ihnen EventBridge Berechtigungen für den Start Ihrer Pipeline-Ausführung erteilt.
   + Wählen Sie **Bestehende Rolle verwenden** aus, um eine Servicerolle einzugeben, die Ihnen EventBridge Berechtigungen für den Start Ihrer Pipeline-Ausführungen erteilt.

1. (Optional) Um Quellüberschreibungen mit einer bestimmten Bild-ID anzugeben, verwenden Sie den Eingangstransformator, um die Daten als JSON-Parameter zu übergeben. Sie können den Eingangstransformator auch verwenden, um Pipeline-Variablen zu übergeben.
   + Erweitern Sie **Additional settings** (Zusätzliche Einstellungen).

     Wählen **Sie unter Zieleingabe konfigurieren** die Option **Eingangstransformator konfigurieren** aus.

     Wählen Sie im Dialogfenster **Enter my own** aus. **Geben Sie in das Feld Eingabepfad** die folgenden Schlüssel-Wert-Paare ein.

     ```
     {"revisionValue": "$.detail.object.version-id"}
     ```
   + Geben Sie im Feld **Vorlage** die folgenden Schlüssel-Wert-Paare ein.

     ```
                                     
                                     {
         "sourceRevisions": [
             {
                 "actionName": "Source",
                 "revisionType": "S3_OBJECT_VERSION_ID",
                 "revisionValue": "<revisionValue>"
             }
         ],
          "variables": [
             {
                 "name": "Variable_Name",
                 "value": "Variable_Value"
             }
         ]
     }
     ```
   + Wählen Sie **Bestätigen** aus.

1. Wählen Sie **Weiter** aus.

1. **Wählen Sie auf der Seite „**Tags**“ die Option Weiter aus.**

1. **Überprüfen Sie auf der Seite Überprüfen und erstellen** die Regelkonfiguration. Wenn Sie mit der Regel zufrieden sind, klicken Sie auf **Create rule (Regel erstellen)**.

# Eine EventBridge Regel für eine Amazon S3 S3-Quelle (CLI) erstellen
<a name="create-cloudtrail-S3-source-cli"></a><a name="proc-cli-event-s3-createtrail"></a>

**Um einen AWS CloudTrail Trail zu erstellen und die Protokollierung zu aktivieren**

Um mit dem einen Trail AWS CLI zu erstellen, rufen Sie den **create-trail** Befehl auf und geben Sie Folgendes an:
+ Den Trail-Namen.
+ Der Bucket, auf den Sie bereits die Bucket-Richtlinie für AWS CloudTrail angewendet haben.

Weitere Informationen finden Sie unter [Erstellen eines Pfads mit der AWS Befehlszeilenschnittstelle](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail-by-using-the-aws-cli.html).

1. Rufen Sie den Befehl **create-trail** auf und beziehen Sie die Parameter `--name` und `--s3-bucket-name` ein.

   **Warum nehme ich diese Änderung vor?** Dadurch wird der für Ihren S3-Quell-Bucket erforderliche CloudTrail-Trail erstellt.

   Der folgende Befehl verwendet `--name` und `--s3-bucket-name` zum Erstellen eines Trails mit dem Namen `my-trail` und eines Buckets mit dem Namen `amzn-s3-demo-source-bucket`.

   ```
   aws cloudtrail create-trail --name my-trail --s3-bucket-name amzn-s3-demo-source-bucket
   ```

1. Rufen Sie den Befehl **start-logging** auf und beziehen Sie den `--name`-Parameter ein.

   **Warum nehme ich diese Änderung vor?** Dieser Befehl startet die CloudTrail Protokollierung für Ihren Quell-Bucket und sendet Ereignisse an EventBridge.

   Beispiel:

   Im folgenden Befehl wird `--name` verwendet, um die Protokollierung auf einem Trail mit der Bezeichnung `my-trail` zu starten.

   ```
   aws cloudtrail start-logging --name my-trail
   ```

1. Rufen Sie den Befehl **put-event-selectors** auf und beziehen Sie die Parameter `--trail-name` und `--event-selectors` ein. Verwenden Sie Event-Selektoren, um anzugeben, dass Ihr Trail Datenereignisse für Ihren Quell-Bucket protokollieren und die Ereignisse an die EventBridge Regel senden soll.

   **Warum nehme ich diese Änderung vor?** Dieser Befehl filtert Ereignisse.

   Beispiel:

   Im folgenden Beispielbefehl werden `--trail-name` und `--event-selectors` verwendet, um die Verwaltung von Datenereignissen für einen Quell-Bucket und einen Präfix namens `amzn-s3-demo-source-bucket/myFolder` anzugeben.

   ```
   aws cloudtrail put-event-selectors --trail-name my-trail --event-selectors '[{ "ReadWriteType": "WriteOnly", "IncludeManagementEvents":false, "DataResources": [{ "Type": "AWS::S3::Object", "Values": ["arn:aws:s3:::amzn-s3-demo-source-bucket/myFolder/file.zip"] }] }]'
   ```<a name="proc-cli-event-s3-createrule"></a>

**Um eine EventBridge Regel mit Amazon S3 als Ereignisquelle und CodePipeline als Ziel zu erstellen und die Berechtigungsrichtlinie anzuwenden**

1. Erteilen Sie Berechtigungen EventBridge , die CodePipeline zum Aufrufen der Regel verwendet werden können. Weitere Informationen finden Sie unter [Verwenden ressourcenbasierter Richtlinien für Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-resource-based.html). EventBridge

   1. Verwenden Sie das folgende Beispiel, um die Vertrauensrichtlinie zu erstellen, damit EventBridge Sie die Servicerolle übernehmen können. Geben Sie ihr den Namen `trustpolicyforEB.json`.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "events.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

   1. Verwenden Sie den folgenden Befehl, um die `Role-for-MyRule`-Rolle zu erstellen und die Vertrauensrichtlinie anzufügen.

      **Warum nehme ich diese Änderung vor?** Durch das Hinzufügen dieser Vertrauensrichtlinie zur Rolle werden Berechtigungen für erstellt EventBridge.

      ```
      aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
      ```

   1. Erstellen Sie die JSON-Datei der Berechtigungsrichtlinie wie hier für die Pipeline mit dem Namen `MyFirstPipeline` gezeigt. Geben Sie der Berechtigungsrichtlinie den Namen `permissionspolicyforEB.json`.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "codepipeline:StartPipelineExecution"
                  ],
                  "Resource": [
                      "arn:aws:codepipeline:us-west-2:111122223333:MyFirstPipeline"
                  ]
              }
          ]
      }
      ```

------

   1. Führen Sie den folgenden Befehl aus, um der erstellten `Role-for-MyRule`-Rolle die neue `CodePipeline-Permissions-Policy-for-EB`-Berechtigungsrichtlinie anzufügen.

      ```
      aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
      ```

1. Rufen Sie den Befehl „**put-rule**“ auf und beziehen Sie die Parameter „`--name`“, „`--event-pattern`“ und „`--role-arn`“ ein.

   Mit dem folgenden Beispielbefehl wird eine Regel mit dem Namen „`MyS3SourceRule`“ erstellt.

   ```
   aws events put-rule --name "MyS3SourceRule" --event-pattern "{\"source\":[\"aws.s3\"],\"detail-type\":[\"AWS API Call via CloudTrail\"],\"detail\":{\"eventSource\":[\"s3.amazonaws.com\"],\"eventName\":[\"CopyObject\",\"PutObject\",\"CompleteMultipartUpload\"],\"requestParameters\":{\"bucketName\":[\"amzn-s3-demo-source-bucket\"],\"key\":[\"my-key\"]}}}
    --role-arn "arn:aws:iam::ACCOUNT_ID:role/Role-for-MyRule"
   ```

1. Um das Objekt CodePipeline als Ziel hinzuzufügen, rufen Sie den **put-targets** Befehl auf und geben Sie die `--targets` Parameter `--rule` und an.

   Der folgende Befehl legt fest, dass für die Regel mit dem Namen `MyS3SourceRule` die Ziel-`Id` aus der Nummer 1 besteht. Dies bedeutet, dass in einer Liste mit Zielen für die Regel dies Ziel 1 ist. Der Befehl gibt zudem ein Beispiel `ARN` für die Pipeline an. Die Pipeline startet, wenn Änderungen im Repository auftreten.

   ```
   aws events put-targets --rule MyS3SourceRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline
   ```

1. (Optional) Um einen Eingangstransformator mit Quellüberschreibungen für eine bestimmte Bild-ID zu konfigurieren, verwenden Sie den folgenden JSON-Code in Ihrem CLI-Befehl. Im folgenden Beispiel wird eine Überschreibung konfiguriert, wobei:
   + `Source`In diesem Beispiel handelt es sich um den dynamischen Wert, der bei der Pipelineerstellung definiert wurde und nicht aus dem Quellereignis abgeleitet wurde. `actionName`
   + `S3_OBJECT_VERSION_ID`In diesem Beispiel handelt es sich um den dynamischen Wert, der bei der Pipelineerstellung definiert wurde und nicht aus dem Quellereignis abgeleitet wurde. `revisionType`
   + In diesem Beispiel wird < *revisionValue* > von der Quellereignisvariablen abgeleitet. `revisionValue`

   ```
   {
       "Rule": "my-rule",
       "Targets": [
           {
               "Id": "MyTargetId",
               "Arn": "ARN",
               "InputTransformer": {
                   "InputPathsMap": {
                       "revisionValue": "$.detail.object.version-id"
                   },
                   "InputTemplate": {
                       "sourceRevisions": {
                           "actionName": "Source",
                           "revisionType": "S3_OBJECT_VERSION_ID",
                           "revisionValue": "<revisionValue>"
                       }
                   }
               }
           }
       ]
   }
   ```<a name="proc-cli-flag-s3"></a>

**Um den PollForSourceChanges Parameter Ihrer Pipeline zu bearbeiten**
**Wichtig**  
Wenn Sie eine Pipeline mit dieser Methode erstellen, ist der Parameter `PollForSourceChanges` standardmäßig „true“, wenn er nicht ausdrücklich auf „false“ gesetzt wird. Wenn Sie ereignisbasierte Erkennung hinzufügen, müssen Sie den Parameter Ihrer Ausgabe hinzufügen und Ihn auf „false“ setzen, um die Abfrage zu deaktivieren. Andernfalls wird Ihre Pipeline bei einer einzigen Quelländerung zweimal gestartet. Details hierzu finden Sie unter [Gültige Einstellungen für den `PollForSourceChanges` Parameter](PollForSourceChanges-defaults.md).

1. Führen Sie den Befehl **get-pipeline** zum Kopieren der Pipeline-Struktur in eine JSON-Datei aus. Geben Sie für eine Pipeline mit dem Namen `MyFirstPipeline` den folgenden Befehl ein: 

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

   Dieser Befehl gibt nichts zurück. Die erstellte Datei sollte jedoch in dem Verzeichnis auftauchen, in dem Sie den Befehl ausgeführt haben.

1. Öffnen Sie die JSON-Datei in einem Texteditor und bearbeiten Sie die Quellphase, indem Sie den Parameter `PollForSourceChanges` für einen Bucket mit dem Namen `amzn-s3-demo-source-bucket`in `false` ändern wie in diesem Beispiel gezeigt.

   **Warum nehme ich diese Änderung vor?** Durch Festlegen dieses Parameters in `false` werden periodische Prüfungen deaktiviert. Sie können daher nur die ereignisbasierte Erkennung von Änderungen verwenden.

   ```
   "configuration": {
       "S3Bucket": "amzn-s3-demo-source-bucket",
       "PollForSourceChanges": "false",
       "S3ObjectKey": "index.zip"
   },
   ```

1. Wenn Sie mit einer Pipeline-Struktur arbeiten, die Sie mit dem Befehl **get-pipeline** abgerufen haben, müssen Sie die `metadata`-Zeilen aus der JSON-Datei entfernen. Andernfalls kann der **update-pipeline**-Befehl sie nicht nutzen. Entfernen Sie die `"metadata": { }`-Zeilen und die Felder `"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. Um Ihre Änderungen zu übernehmen, führen Sie den Befehl **update-pipeline** aus und geben Sie die Pipeline-JSON-Datei 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.
**Anmerkung**  
Der Befehl **update-pipeline** stoppt die Pipeline. Wenn eine Revision über die Pipeline ausgeführt wird, wenn Sie den Befehl **update-pipeline** ausführen, wird diese Ausführung gestoppt. Sie müssen die Ausführung der Pipeline manuell starten, um die Revision über die aktualisierte Pipeline auszuführen. Verwenden Sie den **start-pipeline-execution**-Befehl, um Ihre Pipeline manuell zu starten.

# Eine EventBridge Regel für eine Amazon S3 S3-Quelle erstellen (CloudFormation Vorlage)
<a name="create-cloudtrail-S3-source-cfn"></a>

Um eine Regel CloudFormation zu erstellen, aktualisieren Sie Ihre Vorlage wie hier gezeigt.<a name="proc-cfn-event-s3-createrule"></a>

**Um eine EventBridge Regel mit Amazon S3 als Ereignisquelle und CodePipeline als Ziel zu erstellen und die Berechtigungsrichtlinie anzuwenden**

1. Verwenden Sie in der Vorlage unter die `AWS::IAM::Role` CloudFormation Ressource`Resources`, um die IAM-Rolle zu konfigurieren, mit der Ihr Ereignis Ihre Pipeline starten kann. Dieser Eintrag erstellt eine Rolle mit zwei Richtlinien:
   + Die erste Richtlinie ermöglicht die Übernahme der Rolle.
   + Die zweite Richtlinie stellt Berechtigungen zum Starten der Pipeline bereit.

   **Warum nehme ich diese Änderung vor?** Durch das Hinzufügen einer `AWS::IAM::Role` Ressource können CloudFormation Sie Berechtigungen für EventBridge erstellen. Diese Ressource wird Ihrem CloudFormation Stack hinzugefügt.

------
#### [ YAML ]

   ```
     EventRole:
       Type: AWS::IAM::Role
       Properties:
         AssumeRolePolicyDocument:
           Version: 2012-10-17		 	 	 
           Statement:
             -
               Effect: Allow
               Principal:
                 Service:
                   - events.amazonaws.com
               Action: sts:AssumeRole
         Path: /
         Policies:
           -
             PolicyName: eb-pipeline-execution
             PolicyDocument:
               Version: 2012-10-17		 	 	 
               Statement:
                 -
                   Effect: Allow
                   Action: codepipeline:StartPipelineExecution
                   Resource: !Join [ '', [ 'arn:aws:codepipeline:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref AppPipeline ] ]
   
   
   ...
   ```

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

   ```
     "EventRole": {
       "Type": "AWS::IAM::Role",
       "Properties": {
         "AssumeRolePolicyDocument": {
           "Version": "2012-10-17",		 	 	 
           "Statement": [
             {
               "Effect": "Allow",
               "Principal": {
                 "Service": [
                   "events.amazonaws.com"
                 ]
               },
               "Action": "sts:AssumeRole"
             }
           ]
         },
         "Path": "/",
         "Policies": [
           {
             "PolicyName": "eb-pipeline-execution",
             "PolicyDocument": {
               "Version": "2012-10-17",		 	 	 
               "Statement": [
                 {
                   "Effect": "Allow",
                   "Action": "codepipeline:StartPipelineExecution",
                   "Resource": {
                     "Fn::Join": [
                       "",
                       [
                         "arn:aws:codepipeline:",
                         {
                           "Ref": "AWS::Region"
                         },
                         ":",
                         {
                           "Ref": "AWS::AccountId"
                         },
                         ":",
                         {
                           "Ref": "AppPipeline"
                         }
                       ]
                     ]
   
   ...
   ```

------

1. Verwenden Sie die `AWS::Events::Rule` CloudFormation Ressource, um eine EventBridge Regel hinzuzufügen. Dieses Ereignismuster erzeugt ein Ereignis`CopyObject`, `PutObject` das Ihren `CompleteMultipartUpload` Amazon S3 S3-Quell-Bucket überwacht. Fügen Sie darüber hinaus ein Ziel für Ihre Pipeline ein. Wenn `CopyObject`, `PutObject` oder `CompleteMultipartUpload` auftritt, ruft diese Rolle `StartPipelineExecution` in Ihrer Ziel-Pipeline auf.

   **Warum nehme ich diese Änderung vor?** Durch das Hinzufügen der `AWS::Events::Rule` Ressource kann CloudFormation das Ereignis erstellt werden. Diese Ressource wird Ihrem CloudFormation Stack hinzugefügt.

------
#### [ YAML ]

   ```
     EventRule:
       Type: AWS::Events::Rule
       Properties:
         EventPattern:
           source:
             - aws.s3
           detail-type:
             - 'AWS API Call via CloudTrail'
           detail:
             eventSource:
               - s3.amazonaws.com
             eventName:
               - CopyObject
               - PutObject
               - CompleteMultipartUpload
             requestParameters:
               bucketName:
                 - !Ref SourceBucket
               key:
                 - !Ref SourceObjectKey
         Targets:
           -
             Arn:
               !Join [ '', [ 'arn:aws:codepipeline:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref AppPipeline ] ]
             RoleArn: !GetAtt EventRole.Arn
             Id: codepipeline-AppPipeline
   
   
   ...
   ```

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

   ```
     "EventRule": {
       "Type": "AWS::Events::Rule",
       "Properties": {
         "EventPattern": {
           "source": [
             "aws.s3"
           ],
           "detail-type": [
             "AWS API Call via CloudTrail"
           ],
           "detail": {
             "eventSource": [
               "s3.amazonaws.com"
             ],
             "eventName": [
               "CopyObject",
               "PutObject",
               "CompleteMultipartUpload"
             ],
             "requestParameters": {
               "bucketName": [
                 {
                   "Ref": "SourceBucket"
                 }
               ],
               "key": [
                 {
                   "Ref": "SourceObjectKey"
                 }
               ]
             }
           }
         },
         "Targets": [
           {
             "Arn": {
               "Fn::Join": [
                 "",
                 [
                   "arn:aws:codepipeline:",
                   {
                     "Ref": "AWS::Region"
                   },
                   ":",
                   {
                     "Ref": "AWS::AccountId"
                   },
                   ":",
                   {
                     "Ref": "AppPipeline"
                   }
                 ]
               ]
             },
             "RoleArn": {
               "Fn::GetAtt": [
                 "EventRole",
                 "Arn"
               ]
             },
             "Id": "codepipeline-AppPipeline"
           }
         ]
       }
     }
   },
   
   ...
   ```

------

1. Fügen Sie diesen Ausschnitt zu Ihrer ersten Vorlage hinzu, um Stack-übergreifende Funktionalität zu ermöglichen:

------
#### [ YAML ]

   ```
   Outputs:
     SourceBucketARN:
       Description: "S3 bucket ARN that Cloudtrail will use"
       Value: !GetAtt SourceBucket.Arn
       Export:
         Name: SourceBucketARN
   ```

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

   ```
     "Outputs" : {
       "SourceBucketARN" : {
         "Description" : "S3 bucket ARN that Cloudtrail will use",
         "Value" : { "Fn::GetAtt": ["SourceBucket", "Arn"] },
         "Export" : {
           "Name" : "SourceBucketARN"
         }
       }
   
   ...
   ```

------

1. (Optional) Verwenden Sie den folgenden YAML-Snippet, um einen Eingangstransformator mit Quellüberschreibungen für eine bestimmte Bild-ID zu konfigurieren. Im folgenden Beispiel wird eine Überschreibung konfiguriert, wobei:
   + `Source`In diesem Beispiel handelt es sich um den dynamischen Wert, der bei der Pipelineerstellung definiert wurde und nicht aus dem Quellereignis abgeleitet wurde. `actionName`
   + `S3_OBJECT_VERSION_ID`In diesem Beispiel handelt es sich um den dynamischen Wert, der bei der Pipelineerstellung definiert wurde und nicht aus dem Quellereignis abgeleitet wurde. `revisionType`
   + In diesem Beispiel wird < *revisionValue* > von der Quellereignisvariablen abgeleitet. `revisionValue`

   ```
   ---
   Rule: my-rule
   Targets:
   - Id: MyTargetId
     Arn: pipeline-ARN
     InputTransformer:
       InputPathsMap:
         revisionValue: "$.detail.object.version-id"
       InputTemplate:
         sourceRevisions:
           actionName: Source
           revisionType: S3_OBJECT_VERSION_ID
           revisionValue: '<revisionValue>'
   ```

1. Speichern Sie Ihre aktualisierte Vorlage auf Ihrem lokalen Computer und öffnen Sie die CloudFormation Konsole. 

1. Wählen Sie Ihren Stack aus und klicken Sie auf **Create Change Set for Current Stack (Änderungssatz für laufenden Stack erstellen)**. 

1. Laden Sie Ihre aktualisierte Vorlage hoch und zeigen Sie dann die in CloudFormation aufgeführten Änderungen an. Dies sind die Änderungen, die am Stack vorgenommen werden. Ihre neuen Ressourcen sollten in der Liste angezeigt werden.

1. Wählen Sie **Ausführen**.<a name="proc-cfn-flag-s3"></a>

**Um den PollForSourceChanges Parameter Ihrer Pipeline zu bearbeiten**
**Wichtig**  
Wenn Sie eine Pipeline mit dieser Methode erstellen, ist der Parameter `PollForSourceChanges` standardmäßig „true“, wenn er nicht ausdrücklich auf „false“ gesetzt wird. Wenn Sie ereignisbasierte Erkennung hinzufügen, müssen Sie den Parameter Ihrer Ausgabe hinzufügen und Ihn auf „false“ setzen, um die Abfrage zu deaktivieren. Andernfalls wird Ihre Pipeline bei einer einzigen Quelländerung zweimal gestartet. Details hierzu finden Sie unter [Gültige Einstellungen für den `PollForSourceChanges` Parameter](PollForSourceChanges-defaults.md).
+ Ändern Sie in der Vorlage `PollForSourceChanges` in `false`. Wenn Sie `PollForSourceChanges` nicht in Ihre Pipeline-Definition einbezogen haben, fügen Sie das Objekt hinzu und legen es auf `false` fest.

  **Warum nehme ich diese Änderung vor?** Durch Ändern von `PollForSourceChanges` in `false` werden periodische Prüfungen deaktiviert. Sie können daher nur die ereignisbasierte Erkennung von Änderungen verwenden.

------
#### [ YAML ]

  ```
            Name: Source
            Actions: 
              - 
                Name: SourceAction
                ActionTypeId: 
                  Category: Source
                  Owner: AWS
                  Version: 1
                  Provider: S3
                OutputArtifacts: 
                  - Name: SourceOutput
                Configuration: 
                  S3Bucket: !Ref SourceBucket
                  S3ObjectKey: !Ref SourceObjectKey
                  PollForSourceChanges: false
                RunOrder: 1
  ```

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

  ```
   {
      "Name": "SourceAction",
      "ActionTypeId": {
        "Category": "Source",
        "Owner": "AWS",
        "Version": 1,
        "Provider": "S3"
      },
      "OutputArtifacts": [
        {
          "Name": "SourceOutput"
        }
      ],
      "Configuration": {
        "S3Bucket": {
          "Ref": "SourceBucket"
        },
        "S3ObjectKey": {
          "Ref": "SourceObjectKey"
        },
        "PollForSourceChanges": false
      },
      "RunOrder": 1
    }
  ```

------<a name="proc-cfn-event-s3-createtrail"></a>

**Um eine zweite Vorlage für die CloudTrail Ressourcen Ihrer Amazon S3 S3-Pipeline zu erstellen**
+ Verwenden Sie in einer separaten Vorlage unter`Resources`, die `AWS::CloudTrail::Trail` CloudFormation Ressourcen `AWS::S3::Bucket``AWS::S3::BucketPolicy`, und, um eine einfache Bucket-Definition und einen Trail für bereitzustellen CloudTrail.

  **Warum nehme ich diese Änderung vor?** Angesichts des aktuellen Limits von fünf Trails pro Konto muss der CloudTrail Trail separat erstellt und verwaltet werden. (Siehe [Grenzwerte unter AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/WhatIsCloudTrail-Limits.html).) Sie können jedoch viele Amazon S3 S3-Buckets in einen einzigen Trail aufnehmen, sodass Sie den Trail einmal erstellen und dann bei Bedarf Amazon S3 S3-Buckets für andere Pipelines hinzufügen können. Fügen Sie den folgenden Code in Ihre zweite Beispielvorlagendatei ein.

------
#### [ YAML ]

  ```
  ###################################################################################
  # Prerequisites: 
  #   - S3 SourceBucket and SourceObjectKey must exist
  ###################################################################################
  
  Parameters:
    SourceObjectKey:
      Description: 'S3 source artifact'
      Type: String
      Default: SampleApp_Linux.zip
  
  Resources:
    AWSCloudTrailBucketPolicy:
      Type: AWS::S3::BucketPolicy
      Properties:
        Bucket: !Ref AWSCloudTrailBucket
        PolicyDocument:
          Version: 2012-10-17		 	 	 
          Statement:
            -
              Sid: AWSCloudTrailAclCheck
              Effect: Allow
              Principal:
                Service:
                  - cloudtrail.amazonaws.com
              Action: s3:GetBucketAcl
              Resource: !GetAtt AWSCloudTrailBucket.Arn
            -
              Sid: AWSCloudTrailWrite
              Effect: Allow
              Principal:
                Service:
                  - cloudtrail.amazonaws.com
              Action: s3:PutObject
              Resource: !Join [ '', [ !GetAtt AWSCloudTrailBucket.Arn, '/AWSLogs/', !Ref 'AWS::AccountId', '/*' ] ]
              Condition: 
                StringEquals:
                  s3:x-amz-acl: bucket-owner-full-control
    AWSCloudTrailBucket:
      Type: AWS::S3::Bucket
      DeletionPolicy: Retain
    AwsCloudTrail:
      DependsOn:
        - AWSCloudTrailBucketPolicy
      Type: AWS::CloudTrail::Trail
      Properties:
        S3BucketName: !Ref AWSCloudTrailBucket
        EventSelectors:
          -
            DataResources:
              -
                Type: AWS::S3::Object
                Values:
                  - !Join [ '', [ !ImportValue SourceBucketARN, '/', !Ref SourceObjectKey ] ]
            ReadWriteType: WriteOnly
            IncludeManagementEvents: false
        IncludeGlobalServiceEvents: true
        IsLogging: true
        IsMultiRegionTrail: true
  
  
  ...
  ```

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

  ```
  {
    "Parameters": {
      "SourceObjectKey": {
        "Description": "S3 source artifact",
        "Type": "String",
        "Default": "SampleApp_Linux.zip"
      }
    },
    "Resources": {
      "AWSCloudTrailBucket": {
        "Type": "AWS::S3::Bucket",
          "DeletionPolicy": "Retain"
      },
      "AWSCloudTrailBucketPolicy": {
        "Type": "AWS::S3::BucketPolicy",
        "Properties": {
          "Bucket": {
            "Ref": "AWSCloudTrailBucket"
          },
          "PolicyDocument": {
            "Version": "2012-10-17",		 	 	 
            "Statement": [
              {
                "Sid": "AWSCloudTrailAclCheck",
                "Effect": "Allow",
                "Principal": {
                  "Service": [
                    "cloudtrail.amazonaws.com"
                  ]
                },
                "Action": "s3:GetBucketAcl",
                "Resource": {
                  "Fn::GetAtt": [
                    "AWSCloudTrailBucket",
                    "Arn"
                  ]
                }
              },
              {
                "Sid": "AWSCloudTrailWrite",
                "Effect": "Allow",
                "Principal": {
                  "Service": [
                    "cloudtrail.amazonaws.com"
                  ]
                },
                "Action": "s3:PutObject",
                "Resource": {
                  "Fn::Join": [
                    "",
                    [
                      {
                        "Fn::GetAtt": [
                          "AWSCloudTrailBucket",
                          "Arn"
                        ]
                      },
                      "/AWSLogs/",
                      {
                        "Ref": "AWS::AccountId"
                      },
                      "/*"
                    ]
                  ]
                },
                "Condition": {
                  "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control"
                  }
                }
              }
            ]
          }
        }
      },
      "AwsCloudTrail": {
        "DependsOn": [
          "AWSCloudTrailBucketPolicy"
        ],
        "Type": "AWS::CloudTrail::Trail",
        "Properties": {
          "S3BucketName": {
            "Ref": "AWSCloudTrailBucket"
          },
          "EventSelectors": [
            {
              "DataResources": [
                {
                  "Type": "AWS::S3::Object",
                  "Values": [
                    {
                      "Fn::Join": [
                        "",
                        [
                          {
                            "Fn::ImportValue": "SourceBucketARN"
                          },
                          "/",
                          {
                            "Ref": "SourceObjectKey"
                          }
                        ]
                      ]
                    }
                  ]
                }
              ],
              "ReadWriteType": "WriteOnly",
              "IncludeManagementEvents": false
            }
          ],
          "IncludeGlobalServiceEvents": true,
          "IsLogging": true,
          "IsMultiRegionTrail": true
        }
      }
    }
  }
  
  ...
  ```

------