

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Crea una EventBridge regola per un codice sorgente Amazon S3 (CLI)
<a name="create-cloudtrail-S3-source-cli"></a><a name="proc-cli-event-s3-createtrail"></a>

**Per creare un AWS CloudTrail percorso e abilitare la registrazione**

Per utilizzare il AWS CLI per creare una traccia, chiamate il **create-trail** comando, specificando:
+ Il nome del trail.
+ Il bucket nel quale hai già applicato le policy del bucket per AWS CloudTrail.

Per ulteriori informazioni, vedere [Creazione di un percorso con l'interfaccia a riga di AWS comando](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail-by-using-the-aws-cli.html).

1. Chiama il comando **create-trail** e includi i parametri `--name` e `--s3-bucket-name`.

   **Perché occorre apportare questa modifica?** Questo crea il trail CloudTrail richiesto per il bucket di origine S3.

   Il comando seguente utilizza `--name` e `--s3-bucket-name` per creare un trail denominato `my-trail` e un bucket denominato `amzn-s3-demo-source-bucket`.

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

1. Chiama il comando **start-logging** e includi il parametro `--name`.

   **Perché sto apportando questa modifica?** Questo comando avvia la CloudTrail registrazione per il bucket di origine e invia gli eventi a. EventBridge

   Esempio:

   Il comando seguente utilizza `--name` per avviare la registrazione su un trail denominato `my-trail`.

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

1. Chiama il comando **put-event-selectors** e includi i parametri `--trail-name` e `--event-selectors`. Usa i selettori di eventi per specificare che desideri che il tuo trail registri gli eventi di dati per il tuo bucket di origine e invii gli eventi alla regola. EventBridge 

   **Perché sto apportando questa modifica?** Questo comando filtra gli eventi.

   Esempio:

   Il comando seguente utilizza `--trail-name` e `--event-selectors` per specificare gli eventi dati per un bucket e un prefisso di origine denominati `amzn-s3-demo-source-bucket/myFolder`.

   ```
   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>

**Per creare una EventBridge regola con Amazon S3 come origine dell'evento e CodePipeline come destinazione e applicare la politica delle autorizzazioni**

1. Concedi le autorizzazioni EventBridge da utilizzare per CodePipeline richiamare la regola. Per ulteriori informazioni, consulta [Utilizzo delle politiche basate sulle risorse per Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-resource-based.html). EventBridge

   1. Usa l'esempio seguente per creare la politica di fiducia che EventBridge consenta di assumere il ruolo di servizio. Denominalo `trustpolicyforEB.json`.

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

****  

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

------

   1. Utilizza il seguente comando per creare il ruolo `Role-for-MyRule` e collegare la policy di attendibilità.

      **Perché occorre apportare questa modifica?** L'aggiunta di questa politica di fiducia al ruolo crea le autorizzazioni per EventBridge.

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

   1. Crea il JSON della policy delle autorizzazioni, come mostrato qui per la pipeline denominata `MyFirstPipeline`. Denomina la policy delle autorizzazioni `permissionspolicyforEB.json`.

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

****  

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

------

   1. Utilizza il comando seguente per collegare la nuova policy delle autorizzazioni `CodePipeline-Permissions-Policy-for-EB` al ruolo `Role-for-MyRule` che hai creato.

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

1. Richiama il comando **put-rule** e includi i parametri `--name`, `--event-pattern` e `--role-arn`.

   Il seguente comando di esempio crea una regola denominata `MyS3SourceRule`.

   ```
   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. Per aggiungere CodePipeline come destinazione, chiamate il **put-targets** comando e includete i `--targets` parametri `--rule` and.

   Il comando seguente specifica che per la regola denominata `MyS3SourceRule`, la destinazione `Id` è composta dal numero uno, per indicare che in un elenco di destinazioni per la regola questa è la destinazione 1. Il comando specifica anche un esempio di `ARN` per la pipeline. La pipeline si avvia quando si verifica una modifica nel repository.

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

1. (Facoltativo) Per configurare un trasformatore di ingresso con sostituzioni di origine per un ID immagine specifico, utilizzate il seguente codice JSON nel comando CLI. L'esempio seguente configura un override in cui:
   + `Source`In questo esempio`actionName`, è il valore dinamico, definito al momento della creazione della pipeline, non derivato dall'evento di origine.
   + `S3_OBJECT_VERSION_ID`In questo esempio`revisionType`, è il valore dinamico, definito al momento della creazione della pipeline, non derivato dall'evento di origine.
   + Il`revisionValue`, < *revisionValue* > in questo esempio, è derivato dalla variabile dell'evento source.

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

**Per modificare il parametro della PollForSourceChanges pipeline**
**Importante**  
Quando crei una pipeline con questo metodo, il parametro `PollForSourceChanges` è preimpostato su "true" se non viene impostato esplicitamente su "false". Quando aggiungi il rilevamento delle modifiche basato su eventi, devi aggiungere il parametro all'output e impostarlo su "false" per disabilitare il polling. In caso contrario, la pipeline si avvia due volte per una singola modifica dell'origine. Per informazioni dettagliate, vedi [Impostazioni valide per il `PollForSourceChanges` parametro](PollForSourceChanges-defaults.md).

1. Esegui il comando **get-pipeline** per copiare la struttura della pipeline in un file JSON. Ad esempio, per una pipeline denominata `MyFirstPipeline`, esegui il seguente comando: 

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

   Questo comando non restituisce alcun valore, ma nella directory in cui è stato eseguito dovrebbe comparire il file creato.

1. Apri il file JSON in qualsiasi editor di testo normale e modifica la fase di origine modificando il parametro `PollForSourceChanges` per un bucket denominato `amzn-s3-demo-source-bucket``false` come mostrato nell'esempio seguente.

   **Perché occorre apportare questa modifica?** L'impostazione del parametro su `false` disattiva i controlli periodici, in modo che sia possibile utilizzare solo il rilevamento delle modifiche basato su eventi.

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

1. Se stai utilizzando la struttura della pipeline recuperata tramite il comando **get-pipeline**, devi rimuovere le righe `metadata` dal file JSON. In caso contrario, il comando **update-pipeline** non è in grado di utilizzarlo. Rimuovi le righe `"metadata": { }` e i campi `"created"`, `"pipelineARN"` e `"updated"`.

   Ad esempio, rimuovere dalla struttura le seguenti righe:

   ```
   "metadata": {
       "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name",
       "created": "date",
       "updated": "date"
   },
   ```

   Salvare il file.

1. Per applicare le modifiche, eseguire il comando **update-pipeline**, specificando il file JSON della pipeline:
**Importante**  
Assicurarsi di includere `file://` prima del nome del file. Questo è obbligatorio in questo comando.

   ```
   aws codepipeline update-pipeline --cli-input-json file://pipeline.json
   ```

   Questo comando restituisce l'intera struttura della pipeline modificata.
**Nota**  
Il comando **update-pipeline** arresta la pipeline. Se è in corso di elaborazione una versione durante l'esecuzione del comando **update-pipeline**, tale elaborazione viene arrestata. Per elaborare tale versione utilizzando la pipeline aggiornata, devi avviare manualmente la pipeline. Utilizza il comando **start-pipeline-execution** per avviare manualmente la pipeline.