

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

# Raccogli informazioni sui bucket Amazon S3 utilizzando AWS le integrazioni dei servizi SDK
<a name="tutorial-gather-s3-info"></a>

Questo tutorial mostra come eseguire un'[integrazione AWS SDK](supported-services-awssdk.md) con Amazon Simple Storage Service. La macchina a stati che crei in questo tutorial raccoglie informazioni sui tuoi bucket Amazon S3, quindi elenca i bucket insieme alle informazioni sulla versione per ogni bucket nella regione corrente. 

## Passaggio 1: crea la macchina a stati
<a name="aws-sdk-create-state-machine"></a>

Utilizzando la console Step Functions, creerai una macchina a stati che include uno `Task` stato per elencare tutti i bucket Amazon S3 nell'account e nella regione correnti. Quindi, aggiungerai un altro `Task` stato che richiama l'`[HeadBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html)`API per verificare se il bucket restituito è accessibile nella regione corrente. Se il bucket non è accessibile, la chiamata `HeadBucket` API restituisce l'errore. `S3.S3Exception` Includerai un `Catch` blocco per catturare questa eccezione e uno `Pass` stato come stato di fallback.

1. Apri la [console Step Functions](https://console.aws.amazon.com/states/home), scegli **Macchine a stati** dal menu, quindi scegli **Crea macchina a stati**.

1. Scegliete **Crea da vuoto**.

1. Assegna un nome alla tua macchina a stati, quindi scegli **Continua** per modificare la tua macchina a stati in Workflow Studio.

1. Per questo tutorial, scriverai la definizione [Lingua degli Stati di Amazon](concepts-amazon-states-language.md) (ASL) della tua macchina a stati in. [Editor del codice](workflow-studio.md#wfs-interface-code-editor) Per fare ciò, scegli **Codice.**

1. Rimuovi il codice boilerplate esistente e incolla la seguente definizione di macchina a stati.

   ```
   {
     "Comment": "A description of my state machine",
     "StartAt": "ListBuckets",
     "States": {
       "ListBuckets": {
         "Type": "Task",
         "Parameters": {},
         "Resource": "arn:aws:states:::aws-sdk:s3:listBuckets",
         "Next": "Map"
       },
       "Map": {
         "Type": "Map",
         "ItemsPath": "$.Buckets",
         "ItemProcessor": {
           "ProcessorConfig": {
             "Mode": "INLINE"
           },
           "StartAt": "HeadBucket",
           "States": {
             "HeadBucket": {
               "Type": "Task",
               "ResultPath": null,
               "Parameters": {
                 "Bucket.$": "$.Name"
               },
               "Resource": "arn:aws:states:::aws-sdk:s3:headBucket",
               "Catch": [
                 {
                   "ErrorEquals": [
                     "S3.S3Exception"
                   ],
                   "ResultPath": null,
                   "Next": "Pass"
                 }
               ],
               "Next": "GetBucketVersioning"
             },
             "GetBucketVersioning": {
               "Type": "Task",
               "End": true,
               "Parameters": {
                 "Bucket.$": "$.Name"
               },
               "ResultPath": "$.BucketVersioningInfo",
               "Resource": "arn:aws:states:::aws-sdk:s3:getBucketVersioning"
             },
             "Pass": {
               "Type": "Pass",
               "End": true,
               "Result": {
                 "Status": "Unknown"
               },
               "ResultPath": "$.BucketVersioningInfo"
             }
           }
         },
         "End": true
       }
     }
   }
   ```

1. Specificate un nome per la vostra macchina a stati. Per fare ciò, scegli l'icona di modifica accanto al nome della macchina a stati predefinita di **MyStateMachine**. Quindi, nella **configurazione della macchina a stati**, specifica un nome nella casella **Nome macchina a stati**.

   Per questo tutorial, inserisci il nome **Gather-S3-Bucket-Info-Standard**.

1. (Facoltativo) Nella **configurazione della macchina a stati**, specificate altre impostazioni del flusso di lavoro, come il tipo di macchina a stati e il relativo ruolo di esecuzione.

   Conserva tutte le selezioni predefinite nelle **impostazioni della macchina a stati**.

   Se [in precedenza hai creato un ruolo IAM](procedure-create-iam-role.md) con le autorizzazioni corrette per la tua macchina a stati e desideri utilizzarlo, in **Autorizzazioni** seleziona **Scegli un ruolo esistente**, quindi seleziona un ruolo dall'elenco. Oppure seleziona **Inserisci un ruolo ARN** e quindi fornisci un ARN per quel ruolo IAM.

1. Nella finestra di dialogo **Conferma creazione del ruolo**, scegli **Conferma** per continuare.

   Puoi anche scegliere **Visualizza le impostazioni del ruolo** per tornare alla **configurazione della macchina a stati**.
**Nota**  
Se elimini il ruolo IAM creato da Step Functions, Step Functions non può ricrearlo in un secondo momento. Allo stesso modo, se modifichi il ruolo (ad esempio, rimuovendo Step Functions dai principi nella policy IAM), Step Functions non può ripristinare le impostazioni originali in un secondo momento. 

   Nel [passaggio 2](#aws-sdk-add-iam-permissions), aggiungerai le autorizzazioni mancanti al ruolo della macchina a stati.

## Passaggio 2: aggiungi le autorizzazioni necessarie per il ruolo IAM
<a name="aws-sdk-add-iam-permissions"></a>

Per raccogliere informazioni sui bucket Amazon S3 nella tua regione attuale, devi fornire alla tua macchina a stati le autorizzazioni necessarie per accedere ai bucket Amazon S3.

1. Nella pagina della macchina a stati, scegli **ARN del ruolo IAM** per aprire la pagina **Ruoli** per il ruolo della macchina a stati.

1. Scegli **Aggiungi autorizzazioni**, quindi seleziona **Crea policy inline**.

1. Scegli la scheda **JSON**, quindi incolla le seguenti autorizzazioni nell'editor JSON.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "s3:ListAllMyBuckets",
                   "s3:ListBucket",
                   "s3:GetBucketVersioning"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

1. Scegliere **Esamina policy**.

1. In **Rivedi policy**, per **Nome** della policy inserisci **s3-bucket-permissions**.

1. Scegli **Crea policy**.

## Passaggio 3: Esegui l'esecuzione di una macchina a stati standard
<a name="aws-sdk-run-standard"></a>

1. **Nella pagina **Gather-S3-Bucket-Info-Standard, scegli Avvia** esecuzione.**

1. Nella finestra di dialogo **Avvia esecuzione, effettuate le seguenti operazioni**:

   1. (Facoltativo) Inserite un nome di esecuzione personalizzato per sovrascrivere il valore predefinito generato.
**Nomi e log non ASCII**  
Step Functions accetta nomi per macchine a stati, esecuzioni, attività ed etichette che contengono caratteri non ASCII. Poiché tali caratteri impediranno ad Amazon CloudWatch di registrare i dati, consigliamo di utilizzare solo caratteri ASCII per tenere traccia delle metriche di Step Functions.

   1. Selezionare **Start execution (Avvia esecuzione)**.

   1. La console Step Functions ti indirizza a una pagina intitolata con il tuo ID di esecuzione. Questa pagina è nota come pagina dei *dettagli di esecuzione*. In questa pagina è possibile esaminare i risultati dell'esecuzione man mano che l'esecuzione procede o dopo il suo completamento.

      Per esaminare i risultati dell'esecuzione, scegliete i singoli stati nella **vista Grafico**, quindi scegliete le singole schede [Dettagli del passaggio](concepts-view-execution-details.md#exec-details-intf-step-details) nel riquadro per visualizzare i dettagli di ogni stato, inclusi rispettivamente input, output e definizione. Per i dettagli sulle informazioni sull'esecuzione che è possibile visualizzare nella pagina *Dettagli di esecuzione*, vedere[Panoramica dei dettagli di esecuzione](concepts-view-execution-details.md#exec-details-interface-overview).

## Fase 4: Eseguire l'esecuzione di una macchina a stati Express
<a name="aws-sdk-run-express"></a>

1. Creare una macchina a stati Express utilizzando la definizione della macchina a stati fornita nel [passaggio 1](#aws-sdk-create-state-machine). Assicurati di includere anche le autorizzazioni necessarie per i ruoli IAM, come spiegato nella [Fase 2](#aws-sdk-add-iam-permissions).
**Suggerimento**  
Per distinguerla dalla macchina Standard creata in precedenza, denominate la macchina a stati Express come**Gather-S3-Bucket-Info-Express**.

1. **Nella pagina **Gather-S3-Bucket-Info-Standard, scegliete Avvia** esecuzione.**

1. Nella finestra di dialogo **Avvia esecuzione, effettuate le seguenti operazioni**:

   1. (Facoltativo) Inserite un nome di esecuzione personalizzato per sovrascrivere il valore predefinito generato.
**Nomi e log non ASCII**  
Step Functions accetta nomi per macchine a stati, esecuzioni, attività ed etichette che contengono caratteri non ASCII. Poiché tali caratteri impediranno ad Amazon CloudWatch di registrare i dati, consigliamo di utilizzare solo caratteri ASCII per tenere traccia delle metriche di Step Functions.

   1. Selezionare **Start execution (Avvia esecuzione)**.

   1. La console Step Functions ti indirizza a una pagina intitolata con il tuo ID di esecuzione. Questa pagina è nota come pagina dei *dettagli di esecuzione*. In questa pagina è possibile esaminare i risultati dell'esecuzione man mano che l'esecuzione procede o dopo il suo completamento.

      Per esaminare i risultati dell'esecuzione, scegliete i singoli stati nella **vista Grafico**, quindi scegliete le singole schede [Dettagli del passaggio](concepts-view-execution-details.md#exec-details-intf-step-details) nel riquadro per visualizzare i dettagli di ogni stato, inclusi rispettivamente input, output e definizione. Per i dettagli sulle informazioni sull'esecuzione che è possibile visualizzare nella pagina *Dettagli di esecuzione*, vedere[Panoramica dei dettagli di esecuzione](concepts-view-execution-details.md#exec-details-interface-overview).