

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

# Integrazione di servizi ottimizzati con Step Functions
<a name="integrate-optimized"></a>

Il flusso di lavoro può richiamare servizi ottimizzati direttamente utilizzando il `Resource` campo di uno `Task` stato. I seguenti argomenti spiegano i parametri e APIs la request/response sintassi supportati in Amazon States Language per il coordinamento AWS dei servizi. 

A seconda del tipo di flusso di lavoro e della disponibilità, i flussi di lavoro richiamano i servizi utilizzando uno dei tre modelli di integrazione dei servizi:
+ [Richiedi una risposta (impostazione predefinita)](connect-to-resource.md#connect-default): attendi la risposta HTTP, quindi passa allo stato successivo
+ [Run a Job (`.sync`)](connect-to-resource.md#connect-sync) - attendi il completamento del lavoro
+ [Wait for Callback (`.waitForTaskToken`)](connect-to-resource.md#connect-wait-token): sospende un workflow finché non viene restituito un task token

**I flussi di lavoro standard e i flussi di lavoro Express supportano le stesse **integrazioni** ma non gli stessi modelli di integrazione.** 
+  *I **flussi di lavoro standard** supportano le integrazioni Request Response.* Alcuni servizi supportano *Run a Job (.sync)* o *Wait for Callback (. waitForTaskToken)* ed entrambi in alcuni casi. Consulta la seguente tabella di integrazioni ottimizzate per i dettagli. 
+  **Express Workflows** supporta solo le integrazioni *Request Response*. 

 Per aiutarti a decidere tra i due tipi, vedi. [Scelta del tipo di flusso di lavoro in Step Functions](choosing-workflow-type.md) 



**AWSIntegrazioni SDK in Step Functions**


| Servizio integrato | Richiesta e risposta | Esegui un Job - *.sync* | *Attendi la richiamata -. waitForTaskToken* | 
| --- | --- | --- | --- | 
| [Oltre duecento servizi](supported-services-awssdk.md#supported-services-awssdk-list) | Standard ed Express | Non supportato | Standard | 

**Integrazioni ottimizzate in Step Functions**


| Servizio integrato | Richiesta e risposta | Esegui un Job - *.sync* | *Attendi la richiamata -. waitForTaskToken* | 
| --- | --- | --- | --- | 
| [Amazon API Gateway](connect-api-gateway.md) | Standard ed Express | Non supportato | Standard | 
| [Amazon Athena](connect-athena.md) | Standard ed Express | Standard | Non supportato | 
| [AWS Batch](connect-batch.md) | Standard ed Express | Standard | Non supportato | 
| [Amazon Bedrock](connect-bedrock.md) | Standard ed Express | Standard | Standard | 
| [AWS CodeBuild](connect-codebuild.md) | Standard ed Express | Standard | Non supportato | 
| [Amazon DynamoDB](connect-ddb.md) | Standard ed Express | Non supportato | Non supportato | 
| [Amazon ECS/Fargate](connect-ecs.md) | Standard ed Express | Standard | Standard | 
| [Amazon EKS](connect-eks.md) | Standard ed Express | Standard | Standard | 
| [Amazon EMR](connect-emr.md) | Standard ed Express | Standard | Non supportato | 
| [Amazon EMR on EKS](connect-emr-eks.md) | Standard ed Express | Standard | Non supportato | 
| [Amazon EMR Serverless](connect-emr-serverless.md) | Standard ed Express | Standard | Non supportato | 
| [Amazon EventBridge](connect-eventbridge.md) | Standard ed Express | Non supportato | Standard | 
| [AWS Glue](connect-glue.md) | Standard ed Express | Standard | Non supportato | 
| [AWS Glue DataBrew](connect-databrew.md) | Standard ed Express | Standard | Non supportato | 
| [AWS Lambda](connect-lambda.md) | Standard ed Express | Non supportato | Standard | 
| [AWS Elemental MediaConvert](connect-mediaconvert.md) | Standard ed Express | Standard | Non supportato | 
| [Amazon SageMaker AI](connect-sagemaker.md) | Standard ed Express | Standard | Non supportato | 
| [Amazon SNS](connect-sns.md) | Standard ed Express | Non supportato | Standard | 
| [Amazon SQS](connect-sqs.md) | Standard ed Express | Non supportato | Standard | 
| [AWS Step Functions](connect-stepfunctions.md) | Standard ed Express | Standard | Standard | 

# Crea API Gateway REST APIs con Step Functions
<a name="connect-api-gateway"></a>

Scopri come usare Amazon API Gateway per creare, pubblicare, gestire e monitorare HTTP e REST APIs con Step Functions. Per l'integrazione con API Gateway, definisci uno `Task` stato in Step Functions che richiama direttamente un endpoint API Gateway HTTP o API Gateway REST, senza scrivere codice o fare affidamento su altre infrastrutture. Una definizione di `Task` stato include tutte le informazioni necessarie per la chiamata API. È inoltre possibile selezionare diversi metodi di autorizzazione.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

**Caratteristiche principali dell'integrazione con Optimized API Gateway**  
`apigateway:invoke:`non ha equivalenti nell'integrazione dei servizi AWS SDK. Invece, il servizio Optimized API Gateway chiama direttamente l'endpoint API Gateway.

## Supporto della funzionalità API Gateway
<a name="connect-api-gateway-support"></a>

L'integrazione di Step Functions API Gateway supporta alcune funzionalità di API Gateway, ma non tutte. Per un elenco più dettagliato delle funzionalità supportate, consulta quanto segue. 
+ Supportato dalle integrazioni API REST di Step Functions API Gateway e API Gateway HTTP:
  + **Autorizzatori**: IAM (utilizzando [Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)), No Auth, Lambda Authorizers (basati su parametri di richiesta e basati su token con intestazione personalizzata)
  + Tipi di API**:** regionali
  + **Gestione delle API**: nomi di dominio API Gateway API, fase dell'API, percorso, parametri di interrogazione, corpo della richiesta
+ Supportato dall'integrazione dell'API HTTP Step Functions API Gateway. L'integrazione dell'API REST di Step Functions API Gateway che offre l'opzione per l'ottimizzazione per Edge APIs non è supportata.
+ Non supportato dall'integrazione con Step Functions API Gateway:
  +  **Autorizzatori**: Amazon Cognito, Native Open ID Connect OAuth /2.0, intestazione di autorizzazione per autorizzatori Lambda basati su token 
  +  Tipi di API**:** private 
  +  **Gestione delle API**: nomi di dominio personalizzati 

Per ulteriori informazioni su API Gateway e i relativi HTTP e REST APIs, consulta quanto segue.
+  La pagina dei [concetti di Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-basic-concept.html). 
+  [Scegliere tra HTTP APIs e REST APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-vs-rest.html) nella guida per sviluppatori di API Gateway. 

## Formato della richiesta
<a name="connect-api-gateway-requests"></a>

Quando create la definizione `Task` dello stato, Step Functions convalida i parametri, crea l'URL necessario per eseguire la chiamata, quindi chiama l'API. La risposta include il codice di stato HTTP, le intestazioni e il corpo della risposta. Il formato della richiesta ha parametri obbligatori e facoltativi.

### Parametri di richiesta obbligatori
<a name="connect-api-gateway-requests-required"></a>
+ `ApiEndpoint`
  + Tipo: `String`
  + Il nome host di un URL API Gateway. Il formato è `<API ID>.execute-api.region.amazonaws.com`.

    L'ID API può contenere solo una combinazione dei seguenti caratteri alfanumerici: `0123456789abcdefghijklmnopqrstuvwxyz`
+ `Method`
  + Tipo: `Enum`
  + Il metodo HTTP, che deve essere uno dei seguenti: 
    + `GET`
    + `POST`
    + `PUT`
    + `DELETE`
    + `PATCH`
    + `HEAD`
    + `OPTIONS`

### Parametri di richiesta opzionali
<a name="connect-api-gateway-requests-optional"></a>
+ `Headers`
  + Tipo: `JSON`
  + Le intestazioni HTTP consentono un elenco di valori associati alla stessa chiave.
+ `Stage`
  + Tipo: `String`
  + Il nome della fase in cui viene distribuita l'API in API Gateway. È facoltativo per qualsiasi API HTTP che utilizza lo `$default` stage. 
+ `Path`
  + Tipo: `String`
  + Parametri di percorso che vengono aggiunti dopo l'endpoint dell'API. 
+ `QueryParameters`
  + Tipo: `JSON`
  + Le stringhe di query consentono solo un elenco di valori associati alla stessa chiave. 
+ `RequestBody`
  + Tipo: `JSON` or `String`
  + Il corpo della richiesta HTTP. Il suo tipo può essere un `JSON` oggetto o`String`. `RequestBody`è supportato solo per `PATCH` i metodi `PUT` HTTP`POST`, e.
+ `AllowNullValues`
  + Tipo: `BOOLEAN` — valore predefinito: `false`
  + Con l'impostazione predefinita, tutti i valori **nulli** nello stato di input della richiesta **non** verranno inviati all'API. Nell'esempio seguente, il `category` campo **non** verrà incluso nella richiesta, a meno che non `AllowNullValues` sia impostato su `true` nella definizione della macchina a stati.

    ```
    {
        "NewPet": {
            "type": "turtle",
            "price": 123,
            "category": null
        }
    }
    ```
**Nota**  
Per impostazione predefinita, i campi con valori **nulli** nello stato di input della richiesta **non** verranno inviati all'API. Puoi forzare l'invio di valori nulli all'API impostando su `true` nella definizione della macchina `AllowNullValues` a stati.
+ `AuthType`
  + Tipo: `JSON`
  + Il metodo di autenticazione. Il metodo predefinito è`NO_AUTH`. I valori consentiti sono: 
    + `NO_AUTH`
    + `IAM_ROLE`
    + `RESOURCE_POLICY`

    Per ulteriori informazioni, vedere **Autenticazione e autorizzazione**.

**Nota**  
Per motivi di sicurezza, le seguenti chiavi di intestazione HTTP non sono attualmente consentite:  
Qualsiasi cosa preceduta da, o. `X-Forwarded` `X-Amz` `X-Amzn`
`Authorization`
`Connection`
`Content-md5`
`Expect`
`Host`
`Max-Forwards`
`Proxy-Authenticate`
`Server`
`TE`
`Transfer-Encoding`
`Trailer`
`Upgrade`
`Via`
`Www-Authenticate`

Il seguente esempio di codice mostra come richiamare API Gateway utilizzando Step Functions.

```
{
    "Type": "Task", 
    "Resource":"arn:aws:states:::apigateway:invoke", 
    "Arguments": {
        "ApiEndpoint": "example.execute-api.us-east-1.amazonaws.com",
        "Method": "GET", 
        "Headers": { 
            "key": ["value1", "value2"] 
        },
        "Stage": "prod",
        "Path": "bills",
        "QueryParameters": {
            "billId": ["123456"]
        },
        "RequestBody": {},
        "AuthType": "NO_AUTH"
    } 
}
```

## Autenticazione e autorizzazione
<a name="connect-api-gateway-auth"></a>

È possibile utilizzare i seguenti metodi di autenticazione:
+ **Nessuna autorizzazione**: chiama l'API direttamente senza alcun metodo di autorizzazione.
+ **Ruolo IAM**: con questo metodo, Step Functions assume il ruolo di macchina a stati, firma la richiesta con [Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) (SigV4), quindi chiama l'API.
+ **Politica delle risorse**: Step Functions autentica la richiesta e quindi chiama l'API. È necessario allegare una politica delle risorse all'API che specifichi quanto segue:

  1. La macchina a stati che invocherà API Gateway.
**Importante**  
È necessario specificare la macchina a stati per limitarne l'accesso. Se non lo fai, verrà concesso l'accesso a qualsiasi macchina a stati che autentica la sua richiesta API Gateway con l'autenticazione **delle policy delle risorse sulla** tua API.

  1. That Step Functions è il servizio che chiama API Gateway:`"Service": "states.amazonaws.com"`.

  1. La risorsa a cui desideri accedere, tra cui:
     + Tipo *region*.
     + *account-id*Nella regione specificata.
     + Tipo *api-id*.
     + Tipo *stage-name*.
     + Il *HTTP-VERB* (metodo).
     + Tipo *resource-path-specifier*.

  Per un esempio di politica delle risorse, consulta [le politiche IAM per Step Functions e API Gateway](#api-gateway-iam). 

  Per ulteriori informazioni sul formato delle risorse, consulta [Formato delle risorse delle autorizzazioni per l'esecuzione dell'API in API Gateway nella](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html#api-gateway-iam-policy-resource-format-for-executing-api) Guida per sviluppatori di API Gateway.
**Nota**  
Le policy relative alle risorse sono supportate solo per l'API REST.

## Modelli di integrazione dei servizi
<a name="connect-api-gateway-patterns"></a>

L'integrazione con API Gateway supporta due modelli di integrazione dei servizi: 
+ [Richiesta e risposta](connect-to-resource.md#connect-default), che è il modello di integrazione predefinito. Consente a Step Functions di passare alla fase successiva immediatamente dopo aver ricevuto una risposta HTTP.
+ [Attendi una richiamata con Task Token](connect-to-resource.md#connect-wait-token)(`.waitForTaskToken`), che attende la restituzione di un task token con un payload. Per usare il `.waitForTaskToken` pattern, aggiungi. waitForTaskSimbolo alla fine del campo **Risorsa** della definizione dell'attività, come mostrato nell'esempio seguente: 

  ```
  {
      "Type": "Task", 
      "Resource":"arn:aws:states:::apigateway:invoke.waitForTaskToken", 
      "Arguments": {
          "ApiEndpoint": "example.execute-api.us-east-1.amazonaws.com",
          "Method": "POST", 
          "Headers": { 
              "TaskToken": "{% $states.context.Task.Token %}"
          },
          "Stage": "prod",
          "Path": "bills/add",
          "QueryParameters": {},
          "RequestBody": {
              "billId": "my-new-bill"
          },
          "AuthType": "IAM_ROLE"
      } 
  }
  ```

## Formato di output
<a name="connect-api-gateway-output"></a>

Vengono forniti i seguenti parametri di output:


| Name | Tipo | Description | 
| --- | --- | --- | 
| ResponseBody | JSON o String | Il corpo della risposta della chiamata API. | 
| Headers | JSON | Le intestazioni di risposta. | 
| StatusCode | Integer | Il codice di stato HTTP per la risposta. | 
| StatusText | String | Il testo dello stato della risposta. | 

Un esempio di risposta:

```
{
    "ResponseBody": {
        "myBills": []
    },
    "Headers": { 
        "key": ["value1", "value2"]
    }, 
    "StatusCode": 200,
    "StatusText": "OK" 
}
```

## Gestione degli errori
<a name="connect-api-gateway-errors"></a>

Quando si verifica un errore, `cause` viene restituito un `error` and come segue: 
+ Se il codice di stato HTTP è disponibile, l'errore verrà restituito nel formato`ApiGateway.<HTTP Status Code>`.
+ Se il codice di stato HTTP non è disponibile, l'errore verrà restituito nel formato`ApiGateway.<Exception>`.

In entrambi i casi, `cause` viene restituito come stringa.

L'esempio seguente mostra una risposta in cui si è verificato un errore:

```
{
    "error": "ApiGateway.403", 
    "cause": "{\"message\":\"Missing Authentication Token\"}"
}
```

**Nota**  
Un codice di stato `2XX` indica l'esito positivo e non verrà restituito alcun errore. Tutti gli altri codici di stato o le eccezioni generate genereranno un errore.

## Politiche IAM per le chiamate verso Amazon API Gateway
<a name="api-gateway-iam"></a>

I seguenti modelli di esempio mostrano come AWS Step Functions generare le politiche IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

*Risorse:*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "execute-api:Invoke"
            ],
            "Resource": [
                "arn:aws:execute-api:us-east-1:123456789012:ENDPOINT/STAGE/GET/pets",
                "arn:aws:execute-api:us-east-1:123456789012:ENDPOINT/STAGE/POST/pets"
            ],
            "Effect": "Allow"
        }
    ]
}
```

Il seguente esempio di codice mostra una politica delle risorse per chiamare API Gateway.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "states.amazonaws.com"
            },
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-east-1:123456789012:myApi-id/stage-name/HTTP-VERB/resource-path-specifier",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": [
                        "<SourceStateMachineArn>"
                    ]
                }
            }
        }
    ]
}
```

# Esegui le query Athena con Step Functions
<a name="connect-athena"></a>

Puoi integrarti AWS Step Functions con Amazon Athena per avviare e interrompere l'esecuzione delle query e ottenere risultati delle query con Step Functions. Utilizzando Step Functions, puoi eseguire query di dati ad hoc o pianificate e recuperare risultati destinati ai tuoi data lake S3. Athena è un servizio serverless, perciò non occorre installare o gestire alcuna infrastruttura e vengono addebitati solo i costi relativi all'esecuzione delle query. Questa pagina elenca gli Athena supportati APIs e fornisce `Task` uno stato di esempio per avviare una query Athena.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

**Caratteristiche principali dell'integrazione con Optimized Athena**  
Il modello di [Esegui un processo (.sync)](connect-to-resource.md#connect-sync) integrazione è supportato.
Non esistono ottimizzazioni specifiche per il modello di [Richiesta e risposta](connect-to-resource.md#connect-default) integrazione.
Il modello di [Attendi una richiamata con Task Token](connect-to-resource.md#connect-wait-token) integrazione non è supportato.

Per l'integrazione AWS Step Functions con Amazon Athena, utilizzi l'integrazione del servizio Athena fornita. APIs

L'integrazione APIs del servizio è la stessa della corrispondente Athena APIs. Non tutti APIs supportano tutti i modelli di integrazione, come illustrato nella tabella seguente.


| "Hello, World\$1" | Richiesta e risposta | Esegui un processo (.sync) | 
| --- | --- | --- | 
| StartQueryExecution | Supportata | Supportato | 
| StopQueryExecution | Supportata | Non supportato | 
| GetQueryExecution | Supportata | Non supportato | 
| GetQueryResults | Supportata | Non supportato | 

Quanto segue include uno stato Task che avvia una query Athena.

```
"Start an Athena query": {
  "Type": "Task",
  "Resource": "arn:aws:states:::athena:startQueryExecution.sync",
  "Arguments": {
    "QueryString": "SELECT * FROM \"myDatabase\".\"myTable\" limit 1",
    "WorkGroup": "primary",
    "ResultConfiguration": {
       "OutputLocation": "s3://amzn-s3-demo-bucket"
    }
  },
  "Next": "Get results of the query"
}
```

## Amazon APIs Athena ottimizzato:
<a name="connect-athena-api"></a>
+ [https://docs.aws.amazon.com/athena/latest/APIReference/API_StartQueryExecution.html](https://docs.aws.amazon.com/athena/latest/APIReference/API_StartQueryExecution.html)
+ [https://docs.aws.amazon.com/athena/latest/APIReference/API_StopQueryExecution.html](https://docs.aws.amazon.com/athena/latest/APIReference/API_StopQueryExecution.html)
+ [https://docs.aws.amazon.com/athena/latest/APIReference/API_GetQueryExecution.html](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetQueryExecution.html)
+ [https://docs.aws.amazon.com/athena/latest/APIReference/API_GetQueryResults.html](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetQueryResults.html)

**Quota per i dati di input o di risultato**  
Quando si inviano o si ricevono dati tra servizi, l'input o il risultato massimo per un'attività è di 256 KB di dati come stringa con codifica UTF-8. Per informazioni, consulta [Quote relative alle esecuzioni di macchine a stati](service-quotas.md#service-limits-state-machine-executions).

## Politiche IAM per le chiamate ad Amazon Athena
<a name="athena-iam"></a>

I seguenti modelli di esempio mostrano come AWS Step Functions generare le politiche IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

**Nota**  
Oltre alle policy IAM, potresti dover utilizzare per AWS Lake Formation concedere l'accesso ai dati in servizi, come Amazon S3 e. AWS Glue Data Catalog Per ulteriori informazioni, consulta [Utilizzare Athena per interrogare i dati registrati con](https://docs.aws.amazon.com/athena/latest/ug/security-athena-lake-formation.html). AWS Lake Formation 

### `StartQueryExecution`
<a name="athena-iam-startqueryexecution"></a>

*Risorse statiche*

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:startQueryExecution",
            "athena:stopQueryExecution",
            "athena:getQueryExecution",
            "athena:getDataCatalog",
            "athena:GetWorkGroup",
            "athena:BatchGetQueryExecution",
            "athena:GetQueryResults",
            "athena:ListQueryExecutions"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/myWorkGroup",
            "arn:aws:athena:us-east-1:123456789012:datacatalog/*"
        ]
    },
        {
        "Effect": "Allow",
        "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket",
            "s3:ListBucketMultipartUploads",
            "s3:ListMultipartUploadParts",
            "s3:AbortMultipartUpload",
            "s3:CreateBucket",
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "glue:CreateDatabase",
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:UpdateDatabase",
            "glue:DeleteDatabase",
            "glue:CreateTable",
            "glue:UpdateTable",
            "glue:GetTable",
            "glue:GetTables",
            "glue:DeleteTable",
            "glue:BatchDeleteTable",
            "glue:BatchCreatePartition",
            "glue:CreatePartition",
            "glue:UpdatePartition",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:BatchGetPartition",
            "glue:DeletePartition",
            "glue:BatchDeletePartition"
        ],
        "Resource": [
            "arn:aws:glue:us-east-1:123456789012:catalog",
            "arn:aws:glue:us-east-1:123456789012:database/*",
            "arn:aws:glue:us-east-1:123456789012:table/*",
            "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "lakeformation:GetDataAccess"
        ],
        "Resource": [
            "*"
        ]
    }
]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:startQueryExecution",
            "athena:getDataCatalog"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/myWorkGroup",
            "arn:aws:athena:us-east-1:123456789012:datacatalog/*"
        ]
    },
        {
        "Effect": "Allow",
        "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket",
            "s3:ListBucketMultipartUploads",
            "s3:ListMultipartUploadParts",
            "s3:AbortMultipartUpload",
            "s3:CreateBucket",
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "glue:CreateDatabase",
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:UpdateDatabase",
            "glue:DeleteDatabase",
            "glue:CreateTable",
            "glue:UpdateTable",
            "glue:GetTable",
            "glue:GetTables",
            "glue:DeleteTable",
            "glue:BatchDeleteTable",
            "glue:BatchCreatePartition",
            "glue:CreatePartition",
            "glue:UpdatePartition",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:BatchGetPartition",
            "glue:DeletePartition",
            "glue:BatchDeletePartition"
        ],
        "Resource": [
            "arn:aws:glue:us-east-1:123456789012:catalog",
            "arn:aws:glue:us-east-1:123456789012:database/*",
            "arn:aws:glue:us-east-1:123456789012:table/*",
            "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "lakeformation:GetDataAccess"
        ],
        "Resource": [
            "*"
        ]
    }
]
}
```

------

*Risorse dinamiche*

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:startQueryExecution",
            "athena:stopQueryExecution",
            "athena:getQueryExecution",
            "athena:getDataCatalog",
            "athena:GetWorkGroup",
            "athena:BatchGetQueryExecution",
            "athena:GetQueryResults",
            "athena:ListQueryExecutions"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/*",
            "arn:aws:athena:us-east-1:123456789012:datacatalog/*"
        ]
    },
        {
        "Effect": "Allow",
        "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket",
            "s3:ListBucketMultipartUploads",
            "s3:ListMultipartUploadParts",
            "s3:AbortMultipartUpload",
            "s3:CreateBucket",
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "glue:CreateDatabase",
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:UpdateDatabase",
            "glue:DeleteDatabase",
            "glue:CreateTable",
            "glue:UpdateTable",
            "glue:GetTable",
            "glue:GetTables",
            "glue:DeleteTable",
            "glue:BatchDeleteTable",
            "glue:BatchCreatePartition",
            "glue:CreatePartition",
            "glue:UpdatePartition",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:BatchGetPartition",
            "glue:DeletePartition",
            "glue:BatchDeletePartition"
        ],
        "Resource": [
            "arn:aws:glue:us-east-1:123456789012:catalog",
            "arn:aws:glue:us-east-1:123456789012:database/*",
            "arn:aws:glue:us-east-1:123456789012:table/*",
            "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "lakeformation:GetDataAccess"
        ],
        "Resource": [
            "*"
        ]
    }
]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:startQueryExecution",
            "athena:getDataCatalog"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/*",
            "arn:aws:athena:us-east-1:123456789012:datacatalog/*"
        ]
    },
        {
        "Effect": "Allow",
        "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket",
            "s3:ListBucketMultipartUploads",
            "s3:ListMultipartUploadParts",
            "s3:AbortMultipartUpload",
            "s3:CreateBucket",
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "glue:CreateDatabase",
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:UpdateDatabase",
            "glue:DeleteDatabase",
            "glue:CreateTable",
            "glue:UpdateTable",
            "glue:GetTable",
            "glue:GetTables",
            "glue:DeleteTable",
            "glue:BatchDeleteTable",
            "glue:BatchCreatePartition",
            "glue:CreatePartition",
            "glue:UpdatePartition",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:BatchGetPartition",
            "glue:DeletePartition",
            "glue:BatchDeletePartition"
        ],
        "Resource": [
            "arn:aws:glue:us-east-1:123456789012:catalog",
            "arn:aws:glue:us-east-1:123456789012:database/*",
            "arn:aws:glue:us-east-1:123456789012:table/*",
            "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "lakeformation:GetDataAccess"
        ],
        "Resource": [
            "*"
        ]
    }
]
}
```

------

### `StopQueryExecution`
<a name="athena-iam-stopqueryexecution"></a>

*Risorse*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:stopQueryExecution"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/*"
        ]
    }
    ]
}
```

### `GetQueryExecution`
<a name="athena-iam-getqueryexecution"></a>

*Risorse*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:getQueryExecution"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/*"
        ]
    }
    ]
}
```

### `GetQueryResults`
<a name="athena-iam-getqueryresults"></a>

*Risorse*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:getQueryResults"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "s3:GetObject"
        ],
        "Resource": [
            "arn:aws:s3:::*"
        ]
    }
    ]
}
```

# Esegui AWS Batch carichi di lavoro con Step Functions
<a name="connect-batch"></a>

Puoi integrare Step Functions con AWS Batch per eseguire carichi di lavoro di elaborazione in batch nel AWS cloud. Questa pagina elenca gli `Task` stati supportati AWS Batch APIs e fornisce un esempio per eseguire un'operazione di elaborazione in batch.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

**Caratteristiche principali dell'integrazione ottimizzata AWS Batch**  
Il modello di [Esegui un processo (.sync)](connect-to-resource.md#connect-sync) integrazione è disponibile.
Tieni presente che non esistono ottimizzazioni specifiche per i modelli [Richiesta e risposta](connect-to-resource.md#connect-default) di [Attendi una richiamata con Task Token](connect-to-resource.md#connect-wait-token) integrazione.

Di seguito viene illustrato un esempio di `Task` stato in cui viene inviato un AWS Batch lavoro e ne attende il completamento. Molti degli argomenti mostrati sono opzionali.

```
"Submit Batch Job": {
    "Type": "Task",
    "Resource": "arn:aws:states:::batch:submitJob.sync",
    "Arguments": {
        "JobName": "BATCH_NAME",
        "JobQueue": "BATCH_QUEUE_ARN",
        "JobDefinition": "BATCH_JOB_DEFINITION_ARN",
        "ArrayProperties": {
        "Size": 10
        },
        "ContainerOverrides": {
        "ResourceRequirements": [
            {
            "Type": "VCPU",
            "Value": "4"
            }
        ]
        },
        "DependsOn": [
        {
            "JobId": "myJobId",
            "Type": "SEQUENTIAL"
        }
        ],
        "PropagateTags": true,
        "Arguments": {
        "Key1": "value1",
        "Key2": 100
        },
        "RetryStrategy": {
        "Attempts": 1
        },
        "Tags": {
        "Tag": "TAG"
        },
        "Timeout": {
        "AttemptDurationSeconds": 10
        }
    }
}
```

## Ottimizzato AWS BatchAPIs:
<a name="connect-batch-api"></a>
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html)

**I parametri in Step Functions sono espressi in PascalCase**  
Anche se l'API del servizio nativo è in CamelCase, ad esempio l'`startSyncExecution`azione API, si specificano parametri PascalCase in, ad esempio:. `StateMachineArn`

## Politiche IAM per le chiamate AWS Batch
<a name="batch-iam"></a>

I seguenti modelli di esempio mostrano come AWS Step Functions generare le politiche IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

Poiché gli ID dei job per `SubmitJob` e `TerminateJob` vengono generati e quindi sono noti solo in fase di esecuzione, non è possibile creare una policy che limiti l'accesso in base a una risorsa specifica. 

**Suggerimento per un accesso granulare**  
Per aggiungere un accesso granulare a `SubmitJob` e`TerminateJob`, prendi in considerazione l'utilizzo di tag per i lavori e la creazione di una politica che limiti l'accesso in base ai tag. Inoltre, la coda dei lavori, la definizione e le risorse consumabili possono essere limitate all'`SubmitJob`utilizzo di risorse note.

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "batch:SubmitJob",
                "batch:DescribeJobs",
                "batch:TerminateJob"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
               "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForBatchJobsRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "batch:SubmitJob"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# Richiama e personalizza i modelli Amazon Bedrock con Step Functions
<a name="connect-bedrock"></a>

Puoi integrare Step Functions con Amazon Bedrock per richiamare un modello Amazon Bedrock specifico e creare un processo di ottimizzazione per personalizzare un modello. Questa pagina elenca Amazon Bedrock ottimizzato APIs e fornisce uno `Task` stato di esempio per estrarre il risultato di una chiamata del modello.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

**Suggerimento**  
Per implementare un flusso di lavoro di esempio che si integra conAmazon Bedrock, consulta. [Esegui il concatenamento dei prompt AI con Amazon Bedrock](sample-bedrock-prompt-chaining.md)

## Amazon Bedrockintegrazione dei servizi APIs
<a name="connect-bedrock-custom-apis"></a>

Per l'integrazione AWS Step Functions conAmazon Bedrock, puoi usare quanto segue APIs. Questi APIs sono simili ai corrispondenti Amazon Bedrock APIs, tranne per il fatto che *InvokeModel*hanno campi di richiesta aggiuntivi.

**API Amazon Bedrock - [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)**  
Crea un processo di messa a punto per personalizzare un modello base. Puoi richiamare l'API di integrazione Step Functions con i modelli di integrazione **CreateModelCustomizationJob**for *Request Response CreateModelCustomizationJob* **o.sync** for *Run a Job (.sync)*. Non ci sono differenze nei campi per le chiamate API.

**API Amazon Bedrock - [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)**  
Richiama il Amazon Bedrock modello specificato per eseguire l'inferenza utilizzando l'input fornito nel corpo della richiesta. Si utilizza `InvokeModel` per eseguire l'inferenza per modelli di testo, modelli di immagini e modelli di incorporamento.

Il corpo della richiesta dell'API di integrazione del Amazon Bedrock servizio *InvokeModel*include i seguenti parametri aggiuntivi.
+ `Body`— specifica i dati di input nel formato specificato nell'intestazione della richiesta di tipo di contenuto. `Body`contiene parametri specifici per il modello di destinazione.

  Se si utilizza l'`InvokeModel`API, è necessario specificare il `Body` parametro. Step Functionsnon convalida l'input fornito. `Body`

  Quando si specifica l'`Body`utilizzo dell'integrazione Amazon Bedrock ottimizzata, è possibile specificare un payload fino a 256 KB. Se il tuo payload supera i 256 KiB, ti consigliamo di utilizzarlo. `Input`
+ `Input`— Specifica la fonte da cui recuperare i dati di input. Questo campo opzionale è specifico per l'integrazione Amazon Bedrock ottimizzata con. Step Functions In questo campo è possibile specificare un`S3Uri`.

  È possibile specificare `Body` nei Parametri o`Input`, ma non entrambi.

  Quando si specifica `Input` senza specificare`ContentType`, il tipo di contenuto dell'origine dati di input diventa il valore per`ContentType`.
+ `Output`— Speciifica la destinazione in cui viene scritta la risposta API. Questo campo opzionale è specifico per l'integrazione Amazon Bedrock ottimizzata conStep Functions. In questo campo è possibile specificare un`S3Uri`.

  Se si specifica questo campo, il corpo della risposta dell'API viene sostituito con un riferimento alla Amazon S3 posizione dell'output originale.

L'esempio seguente mostra la sintassi di InvokeModel API for Amazon Bedrock integration.

```
{
    "ModelId": String,  // required
    "Accept": String,  // default: application/json
    "ContentType": String,  // default: application/json
    "Input": {  // not from Bedrock API
        "S3Uri": String
    },  
    "Output": {  // not from Bedrock API
        "S3Uri": String
    } 
}
```

## Definizione dello stato dell'attività per l'integrazione Amazon Bedrock
<a name="connect-bedrock-task-definition"></a>

La seguente definizione dello stato dell'attività mostra come è possibile eseguire l'integrazione con le macchine Amazon Bedrock a stati. Questo esempio mostra uno stato Task che estrae il risultato completo dell'invocazione del modello specificata dal percorso,. `result_one` Questo si basa sui [parametri di inferenza](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters.html) per i modelli di base. Questo esempio utilizza il modello di linguaggio di grandi dimensioni (LLM) di Cohere Command.

```
{
  "Type": "Task",
  "Resource": "arn:aws:states:::bedrock:invokeModel",
  "Arguments": {
    "ModelId": "cohere.command-text-v14",
    "Body": {
      "prompt": "{% states.input.prompt_one %}",
      "max_tokens": 20
    },
    "ContentType": "application/json",
    "Accept": "*/*"
  },
  "End": true
}
```

## IAM policies for calling Amazon Bedrock
<a name="bedrock-iam"></a>

Quando crei una macchina a stati utilizzando la console, crea Step Functions automaticamente un ruolo di esecuzione per la tua macchina a stati con i privilegi minimi richiesti. Questi IAM ruoli generati automaticamente sono validi per il momento Regione AWS in cui si crea la macchina a stati.

Quando si creano IAM politiche, si consiglia di non includere caratteri jolly nelle politiche. Come best practice in materia di sicurezza, è consigliabile limitare il più possibile le policy. È consigliabile utilizzare politiche dinamiche solo quando determinati parametri di input non sono noti durante il runtime.

I seguenti modelli di esempio mostrano come AWS Step Functions generare le policy IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

### IAMesempi di policy per Amazon Bedrock l'integrazione
<a name="bedrock-iam-policy-eg"></a>

La sezione seguente descrive le IAM autorizzazioni necessarie in base all'Amazon BedrockAPI utilizzata per uno specifico modello di base o fornito. Questa sezione contiene anche esempi di politiche che garantiscono l'accesso completo.

Ricordati di sostituire il *italicized* testo con informazioni specifiche sulla tua risorsa.
+ [IAMesempio di politica per accedere a un modello di base specifico utilizzando InvokeModel](#bedrock-policy-invoke-foundation-model)
+ [IAMesempio di policy per accedere a uno specifico modello predisposto utilizzando InvokeModel](#bedrock-policy-invoke-provisioned-model)
+ [Esempio di IAM policy di accesso completo da utilizzare InvokeModel](#bedrock-policy-invokemodel-full-access)
+ [IAMesempio di policy per accedere a uno specifico modello di base come modello base](#bedrock-policy-foundation-model)
+ [IAMesempio di policy per accedere a un modello personalizzato specifico come modello base](#bedrock-policy-custom-model)
+ [Esempio di IAM politica di accesso completo per utilizzare CreateModelCustomizationJob .sync](#bedrock-policy-createmodel-full-access)
+ [IAMesempio di policy per accedere a un modello di base specifico utilizzando CreateModelCustomizationJob .sync](#bedrock-policy-createmodel-sync-foundation-model)
+ [IAMesempio di policy per accedere a un modello personalizzato utilizzando .sync CreateModelCustomizationJob](#bedrock-policy-createmodel-sync-custom-model)
+ [Esempio di IAM politica di accesso completo per utilizzare .sync CreateModelCustomizationJob](#bedrock-policy-createmodel-sync-full-access)

#### IAMesempio di politica per accedere a un modello di base specifico utilizzando InvokeModel
<a name="bedrock-policy-invoke-foundation-model"></a>

Di seguito è riportato un esempio di IAM policy per una macchina a stati che accede a un modello di base specifico denominato `amazon.titan-text-express-v1` utilizzando l'azione [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)API.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "InvokeModel1",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-text-express-v1"
            ]
        }
    ]
}
```

#### IAMesempio di policy per accedere a uno specifico modello predisposto utilizzando InvokeModel
<a name="bedrock-policy-invoke-provisioned-model"></a>

Di seguito è riportato un esempio di IAM policy per una macchina a stati che accede a uno specifico modello fornito denominato `c2oi931ulksx` utilizzando l'[InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)azione API.

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Sid": "InvokeModel1",
      "Action": [
        "bedrock:InvokeModel"
      ],
      "Resource": [
        "arn:aws:bedrock:us-east-1:123456789012:provisioned-model/c2oi931ulksx"
      ]
    }
  ]
}
```

#### Esempio di IAM policy di accesso completo da utilizzare InvokeModel
<a name="bedrock-policy-invokemodel-full-access"></a>

Di seguito è riportato un esempio di IAM policy per una macchina a stati che fornisce l'accesso completo quando si utilizza l'azione [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)API.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "InvokeModel1",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:provisioned-model/*"
            ]
        }
    ]
}
```

#### IAMesempio di policy per accedere a uno specifico modello di base come modello base
<a name="bedrock-policy-foundation-model"></a>

Di seguito è riportato un esempio di IAM policy per una macchina a stati per accedere a un modello di base specifico `amazon.titan-text-express-v1` denominato modello base utilizzando l'azione [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)API.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-text-express-v1",
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ] 
}
```

#### IAMesempio di policy per accedere a un modello personalizzato specifico come modello base
<a name="bedrock-policy-custom-model"></a>

Di seguito è riportato un esempio di IAM policy per una macchina a stati per accedere a un modello personalizzato specifico come modello base utilizzando l'azione [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)API.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRoleName"            
            ]
        }
    ] 
}
```

#### Esempio di IAM politica di accesso completo per utilizzare CreateModelCustomizationJob .sync
<a name="bedrock-policy-createmodel-full-access"></a>

Di seguito è riportato un esempio di IAM policy per una macchina a stati che fornisce l'accesso completo quando si utilizza l'azione [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)API.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ] 
}
```

#### IAMesempio di policy per accedere a un modello di base specifico utilizzando CreateModelCustomizationJob .sync
<a name="bedrock-policy-createmodel-sync-foundation-model"></a>

Di seguito è riportato un esempio di IAM policy per una macchina a stati per accedere a un modello di base specifico denominato `amazon.titan-text-express-v1` utilizzando l'azione [CreateModelCustomizationJobAPI.sync.](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-text-express-v1",
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "bedrock:GetModelCustomizationJob",
                "bedrock:StopModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob3",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ]
}
```

#### IAMesempio di policy per accedere a un modello personalizzato utilizzando .sync CreateModelCustomizationJob
<a name="bedrock-policy-createmodel-sync-custom-model"></a>

Di seguito è riportato un esempio di IAM policy per una macchina a stati per accedere a un modello personalizzato utilizzando l'azione API [CreateModelCustomizationJob.sync.](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "bedrock:GetModelCustomizationJob",
                "bedrock:StopModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob3",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ]
}
```

#### Esempio di IAM politica di accesso completo per utilizzare .sync CreateModelCustomizationJob
<a name="bedrock-policy-createmodel-sync-full-access"></a>

Di seguito è riportato un esempio di IAM policy per una macchina a stati che fornisce l'accesso completo quando si utilizza l'azione [CreateModelCustomizationJobAPI.sync.](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "bedrock:GetModelCustomizationJob",
                "bedrock:StopModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob3",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ]
}
```

# Gestisci le AWS CodeBuild build con Step Functions
<a name="connect-codebuild"></a>

Puoi integrare Step Functions con AWS CodeBuild per avviare, interrompere e gestire le build. Questa pagina elenca i supporti CodeBuild APIs che è possibile utilizzare con Step Functions.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

Con l'integrazione di Step Functions con, AWS CodeBuild puoi utilizzare Step Functions per attivare, interrompere e gestire le build e condividere i report di compilazione. Utilizzando Step Functions, è possibile progettare ed eseguire pipeline di integrazione continua per la convalida delle modifiche software per le applicazioni.

**Caratteristiche principali dell'integrazione ottimizzata CodeBuild**  
Il modello di [Esegui un processo (.sync)](connect-to-resource.md#connect-sync) integrazione è supportato.
Dopo aver chiamato `StopBuild` or`StopBuildBatch`, il batch di build o build non è immediatamente eliminabile finché non viene completato un lavoro interno CodeBuild per finalizzare lo stato della build o delle build.   
Se si tenta di utilizzare `BatchDeleteBuilds` o `DeleteBuildBatch` durante questo periodo, è possibile che la build o il batch di compilazione non vengano eliminati.   
Le integrazioni di servizio ottimizzate per `BatchDeleteBuilds` e `DeleteBuildBatch` includono un nuovo tentativo interno per semplificare il caso d'uso dell'eliminazione immediatamente dopo l'interruzione.

Non tutti APIs supportano tutti i modelli di integrazione, come illustrato nella tabella seguente.


| "Hello, World\$1" | Richiesta e risposta | Esegui un processo (.sync) | 
| --- | --- | --- | 
| StartBuild | Supportata | Supportato | 
| StopBuild | Supportata | Non supportato | 
| BatchDeleteBuilds | Supportata | Non supportato | 
| BatchGetReports | Supportata | Non supportato | 
| StartBuildBatch | Supportato | Supportato | 
| StopBuildBatch | Supportata | Non supportato | 
| RetryBuildBatch | Supportato | Supportato | 
| DeleteBuildBatch | Supportata | Non supportato | 

**I parametri in Step Functions sono espressi in PascalCase**  
Anche se l'API del servizio nativo è in CamelCase, ad esempio l'`startSyncExecution`azione API, si specificano parametri PascalCase in, ad esempio:. `StateMachineArn`

## Ottimizzato CodeBuild APIs
<a name="connect-codebuild-api"></a>
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StartBuild.html#API_StartBuild_RequestSyntax](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StartBuild.html#API_StartBuild_RequestSyntax)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StopBuild.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StopBuild.html)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_BatchDeleteBuilds.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_BatchDeleteBuilds.html)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_BatchGetReports.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_BatchGetReports.html)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StartBuildBatch.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StartBuildBatch.html)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StopBuildBatch.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StopBuildBatch.html)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_RetryBuildBatch.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_RetryBuildBatch.html)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_DeleteBuildBatch.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_DeleteBuildBatch.html)

**Nota**  
Quando si utilizza JSONPath, è possibile utilizzare l'operatore di discesa ricorsiva (`..`) per fornire parametri per. `BatchDeleteBuilds` Con l'array restituito, potete trasformare il `Arn` campo da `StartBuild` in un `Ids` parametro plurale, come mostrato nell'esempio seguente.  

```
"BatchDeleteBuilds": {
    "Type": "Task",
    "Resource": "arn:aws:states:::codebuild:batchDeleteBuilds",
    "Arguments": {
        "Ids.$": "$.Build..Arn"
    },
    "Next": "MyNextState"
},
```

## Politiche IAM per le chiamate AWS CodeBuild
<a name="codebuild-iam"></a>

I seguenti modelli di esempio mostrano come AWS Step Functions generare le politiche IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

*Risorse:*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "sns:Publish"
            ],
            "Resource": [
                "arn:aws:sns:us-east-1:123456789012:StepFunctionsSample-CodeBuildExecution1111-2222-3333-wJalrXUtnFEMI-SNSTopic-bPxRfiCYEXAMPLEKEY"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "codebuild:StartBuild",
                "codebuild:StopBuild",
                "codebuild:BatchGetBuilds",
                "codebuild:BatchGetReports"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventForCodeBuildStartBuildRule"
            ],
            "Effect": "Allow"
        }
    ]
}
```

### `StartBuild`
<a name="codebuild-iam-startbuild"></a>

*Risorse statiche*

------
#### [ Run a Job (.sync) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:StartBuild",
        "codebuild:StopBuild",
        "codebuild:BatchGetBuilds"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:PutTargets",
        "events:PutRule",
        "events:DescribeRule"
      ],
      "Resource": [
        "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventForCodeBuildStartBuildRule"
      ]
    }
  ]
}
```

------
#### [ Request Response ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:StartBuild"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
      ]
    }
  ]
}
```

------

*Risorse dinamiche*

------
#### [ Run a Job (.sync) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:StartBuild",
        "codebuild:StopBuild",
        "codebuild:BatchGetBuilds"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:*:project/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:PutTargets",
        "events:PutRule",
        "events:DescribeRule"
      ],
      "Resource": [
        "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventForCodeBuildStartBuildRule"
      ]
    }
  ]
}
```

------
#### [ Request Response ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:StartBuild"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:*:project/*"
      ]
    }
  ]
}
```

------

### `StopBuild`
<a name="codebuild-iam-stopbuild"></a>

*Risorse statiche*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:StopBuild"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
      ]
    }
  ]
}
```

*Risorse dinamiche*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:StopBuild"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:*:project/*"
      ]
    }
  ]
}
```

### `BatchDeleteBuilds`
<a name="codebuild-iam-batchdeletebuilds"></a>

*Risorse statiche*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:BatchDeleteBuilds"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
      ]
    }
  ]
}
```

*Risorse dinamiche*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:BatchDeleteBuilds"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:*:project/*"
      ]
    }
  ]
}
```

### `BatchGetReports`
<a name="codebuild-iam-batchgetreports"></a>

*Risorse statiche*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:BatchGetReports"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:123456789012:report-group/myReportName"
      ]
    }
  ]
}
```

*Risorse dinamiche*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:BatchGetReports"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:*:report-group/*"
      ]
    }
  ]
}
```

### `StartBuildBatch`
<a name="codebuild-iam-startbuildbatch"></a>

*Risorse statiche*

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:StartBuildBatch",
                "codebuild:StopBuildBatch",
                "codebuild:BatchGetBuildBatches"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventForCodeBuildStartBuildBatchRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:StartBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
            ]
        }
    ]
}
```

------

*Risorse dinamiche*

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:StartBuildBatch",
                "codebuild:StopBuildBatch",
                "codebuild:BatchGetBuildBatches"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventForCodeBuildStartBuildBatchRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:StartBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/*"
            ]
        }
    ]
}
```

------

### `StopBuildBatch`
<a name="codebuild-iam-stopbuildbatch"></a>

*Risorse statiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:StopBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
            ]
        }
    ]
}
```

*Risorse dinamiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:StopBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/*"
            ]
        }
    ]
}
```

### `RetryBuildBatch`
<a name="codebuild-iam-retrybuildbatch"></a>

*Risorse statiche*

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:RetryBuildBatch",
                "codebuild:StopBuildBatch",
                "codebuild:BatchGetBuildBatches"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:RetryBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
            ]
        }
    ]
}
```

------

*Risorse dinamiche*

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:RetryBuildBatch",
                "codebuild:StopBuildBatch",
                "codebuild:BatchGetBuildBatches"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/*"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:RetryBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/*"
            ]
        }
    ]
}
```

------

### `DeleteBuildBatch`
<a name="codebuild-iam-deletebuildbatch"></a>

*Risorse statiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:DeleteBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
            ]
        }
    ]
}
```

*Risorse dinamiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:DeleteBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/*"
            ]
        }
    ]
}
```

# Esegui operazioni CRUD su DynamoDB con Step Functions
<a name="connect-ddb"></a>

È possibile integrare Step Functions con DynamoDB per eseguire operazioni CRUD su una tabella DynamoDB. Questa pagina elenca i DynamoDB supportati e fornisce un `Task` esempio di stato per recuperare un elemento da APIs DynamoDB.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

**Caratteristiche principali dell'integrazione ottimizzata con DynamoDB**  
Non esiste un'ottimizzazione specifica per il modello di [Richiesta e risposta](connect-to-resource.md#connect-default) integrazione.
[Attendi una richiamata con Task Token](connect-to-resource.md#connect-wait-token)il modello di integrazione non è supportato.
Solo [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html), [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html), e le azioni [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html)API sono disponibili tramite l'integrazione ottimizzata. Altre azioni API, ad esempio, [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)sono disponibili utilizzando l'integrazione con DynamoDB AWS SDK. 

Di seguito è riportato un esempio di `Task` stato che recupera un messaggio da DynamoDB.

```
"Read next Message from DynamoDB": {
    "Type": "Task",
    "Resource": "arn:aws:states:::dynamodb:getItem",
    "Arguments": {
        "TableName": "DYNAMO_DB_TABLE_NAME",
        "Key": {
            "MessageId": {"S": "{% $List[0] %}"}
        }
    }
```

Per vedere questo stato in un esempio funzionante, consulta lo starter template. [Trasferisci i record di dati con LambdaDynamoDB, e Amazon SQS](sample-project-transfer-data-sqs.md)

**Differenze nel prefisso delle eccezioni**  
Quando le connessioni DynamoDB standard presentano un errore, il prefisso di eccezione `DynamoDb` sarà (misto tra maiuscole e minuscole).  
Per le integrazioni ottimizzate, il prefisso di eccezione sarà (in maiuscolo). `DynamoDB` `DB` 

**Quota per i dati di input o di risultato**  
Quando si inviano o si ricevono dati tra servizi, l'input o il risultato massimo per un'attività è di 256 KB di dati come stringa con codifica UTF-8. Per informazioni, consulta [Quote relative alle esecuzioni di macchine a stati](service-quotas.md#service-limits-state-machine-executions).

## DynamoDB ottimizzato APIs
<a name="connect-dynamodb-api"></a>
+ [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)
+ [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)
+ [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html)
+ [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html)

**I parametri in Step Functions sono espressi in PascalCase**  
Anche se l'API del servizio nativo è in CamelCase, ad esempio l'`startSyncExecution`azione API, si specificano parametri PascalCase in, ad esempio:. `StateMachineArn`

## Politiche IAM per chiamare DynamoDB
<a name="dynamo-iam"></a>

I seguenti modelli di esempio mostrano come AWS Step Functions generare le politiche IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

*Risorse statiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-east-1:123456789012:table/myTableName"
            ]
        }
    ]
}
```

*Risorse dinamiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem"
            ],
            "Resource": "*"
        }
    ]
}
```

*Per ulteriori informazioni sulle policy IAM per tutte le azioni API DynamoDB, [consulta le politiche IAM con DynamoDB nella Amazon DynamoDB Developer Guide](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/using-identity-based-policies.html).* *Inoltre, per informazioni sulle policy IAM per PartiQL for DynamoDB, consulta Policies IAM [with PartiQL for DynamoDB nella Amazon DynamoDB Developer](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-iam.html) Guide.*

# Esegui attività Amazon ECS o Fargate con Step Functions
<a name="connect-ecs"></a>

Scopri come integrare Step Functions con Amazon ECS o Fargate per eseguire e gestire le attività. In Amazon ECS, un'attività è l'unità di calcolo fondamentale. Le attività sono definite da una definizione di attività che specifica come deve essere eseguito un contenitore Docker, tra cui l'immagine del contenitore, i limiti di CPU e memoria, la configurazione di rete e altri parametri. Questa pagina elenca le azioni API Amazon ECS disponibili e fornisce istruzioni su come trasferire dati a un task Amazon ECS utilizzando Step Functions.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

**Caratteristiche principali dell' ECS/Fargate integrazione ottimizzata con Amazon**  
Il modello di [Esegui un processo (.sync)](connect-to-resource.md#connect-sync) integrazione è supportato.
`ecs:runTask`può restituire una risposta HTTP 200, ma avere un `Failures` campo non vuoto come segue:  
**Richiesta di risposta**: restituisci la risposta e non fallire l'operazione, il che equivale alle integrazioni non ottimizzate.
**Esegui un Job o Task Token**: se viene rilevato un `Failures` campo non vuoto, l'operazione fallisce con un `AmazonECS.Unknown` errore.

## Amazon ottimizzato ECS/Fargate APIs
<a name="connect-ecs-api"></a>
+ [https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) avvia un nuovo task utilizzando la definizione di task specificata.

**I parametri in Step Functions sono espressi in PascalCase**  
Anche se l'API del servizio nativo è in CamelCase, ad esempio l'`startSyncExecution`azione API, si specificano parametri PascalCase in, ad esempio:. `StateMachineArn`

## Trasferimento di dati a un'attività Amazon ECS
<a name="connect-ecs-pass-to"></a>

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

Puoi utilizzarlo `overrides` per sovrascrivere il comando predefinito per un contenitore e passare l'input alle tue attività Amazon ECS. Per informazioni, consulta [https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerOverride.html](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerOverride.html). Nell'esempio, abbiamo passato JsonPath i valori `Task` dall'input allo `Task` stato.

Quanto segue include uno `Task` stato che esegue un'attività Amazon ECS e attende che venga completata.

```
{
 "StartAt": "Run an ECS Task and wait for it to complete",
 "States": {
   "Run an ECS Task and wait for it to complete": {
     "Type": "Task",
     "Resource": "arn:aws:states:::ecs:runTask.sync",
     "Arguments": {
                "Cluster": "cluster-arn",
                "TaskDefinition": "job-id",
                "Overrides": {
                    "ContainerOverrides": [
                        {
                            "Name": "container-name",
                            "Command": "{% $state.input.commands %}" 
                        }
                    ]
                }
            },
     "End": true
    }
  }
}
```

La riga `Command` in `ContainerOverrides` passa i comandi dall'input di stato al container.

Nell'esempio precedente, la macchina a stati, dato il seguente input, ogni comando veniva passato come override del contenitore:

```
{
  "commands": [
    "test command 1",
    "test command 2",
    "test command 3"
  ]
}
```

Quanto segue include uno `Task` stato che esegue un'attività Amazon ECS e quindi attende la restituzione del token dell'attività. Per informazioni, consulta [Attendi una richiamata con Task Token](connect-to-resource.md#connect-wait-token).

```
{  
   "StartAt":"Manage ECS task",
   "States":{  
      "Manage ECS task":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::ecs:runTask.waitForTaskToken",
         "Arguments":{  
            "LaunchType":"FARGATE",
            "Cluster":"cluster-arn",
            "TaskDefinition":"job-id",
            "Overrides":{  
               "ContainerOverrides":[  
                  {  
                     "Name":"container-name",
                     "Environment":[  
                        {  
                           "Name" : "TASK_TOKEN_ENV_VARIABLE",
                           "Value" : "{% $states.context.Task.Token %}"
                        }
                     ]
                  }
               ]
            }
         },
         "End":true
      }
   }
}
```

## Politiche IAM per le chiamate ad Amazon ECS/ AWS Fargate
<a name="ecs-iam"></a>

I seguenti modelli di esempio mostrano come AWS Step Functions generare le politiche IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

Poiché il valore di non `TaskId` è noto fino all'invio dell'attività, Step Functions crea una `"Resource": "*"` politica più privilegiata.

**Nota**  
Puoi interrompere solo le attività di Amazon Elastic Container Service (Amazon ECS) avviate da Step Functions, nonostante `"*"` la policy IAM.

------
#### [ Run a Job (.sync) ]

*Risorse statiche*

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask"
            ],
            "Resource": [
                "arn:aws:ecs:region:
account-id:task-definition/taskDefinition:revisionNumber"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecs:StopTask",
                "ecs:DescribeTasks"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
               "arn:aws:events:region:
account-id:rule/StepFunctionsGetEventsForECSTaskRule"
            ]
        }
    ]
}
```

*Risorse dinamiche*

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask",
                "ecs:StopTask",
                "ecs:DescribeTasks"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
               "arn:aws:events:region:
account-id:rule/StepFunctionsGetEventsForECSTaskRule"
            ]
        }
    ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

*Risorse statiche*

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask"
            ],
            "Resource": [
                "arn:aws:ecs:region:
account-id:task-definition/taskDefinition:revisionNumber"
            ]
        }
    ]
}
```

*Risorse dinamiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Se le attività pianificate di Amazon ECS richiedono l'uso di un ruolo di esecuzione di attività, un ruolo di attività o un'eccezione di ruolo di attività, è necessario aggiungere `iam:PassRole` le autorizzazioni per ogni ruolo di esecuzione dell'attività, ruolo dell'attività o sovrascrittura del ruolo dell'attività al ruolo IAM CloudWatch Events dell'entità chiamante, che in questo caso è Step Functions.

# Crea e gestisci cluster Amazon EKS con Step Functions
<a name="connect-eks"></a>

Scopri come integrare Step Functions con Amazon EKS per gestire i cluster Kubernetes. Step Functions offre due tipi di integrazione dei servizi APIs per l'integrazione con Amazon Elastic Kubernetes Service. Uno ti consente di utilizzare Amazon EKS APIs per creare e gestire un cluster Amazon EKS. L'altro ti consente di interagire con il cluster utilizzando l'API Kubernetes ed eseguire lavori come parte del flusso di lavoro dell'applicazione.

 Puoi utilizzare le integrazioni API Kubernetes con i cluster Amazon EKS creati con Step Functions, con i cluster Amazon EKS creati dallo strumento **eksctl o dalla console [Amazon](https://console.aws.amazon.com/eks/home) EKS** o metodi simili. Per ulteriori informazioni, consulta [Creazione di un cluster Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) nella Guida per l'utente di Amazon EKS.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

**Caratteristiche principali dell'integrazione ottimizzata con Amazon EKS**  
Il modello di [Esegui un processo (.sync)](connect-to-resource.md#connect-sync) integrazione è supportato.
Non esistono ottimizzazioni specifiche per il modello di [Richiesta e risposta](connect-to-resource.md#connect-default) integrazione.
Il modello di [Attendi una richiamata con Task Token](connect-to-resource.md#connect-wait-token) integrazione non è supportato.

**Nota**  
L'integrazione Step Functions EKS supporta solo Kubernetes APIs con accesso pubblico agli endpoint. Per impostazione predefinita, gli endpoint del server API dei cluster EKS hanno accesso pubblico. Per ulteriori informazioni, consulta [Amazon EKS Cluster Endpoint Access Control](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) nella **Amazon EKS User Guide**.

Step Functions non termina automaticamente un cluster Amazon EKS se l'esecuzione viene interrotta. Se la tua macchina a stati si arresta prima che il cluster Amazon EKS sia terminato, il cluster potrebbe continuare a funzionare a tempo indeterminato e potrebbe comportare costi aggiuntivi. Per evitare ciò, assicurati che tutti i cluster Amazon EKS che crei siano terminati correttamente. Per ulteriori informazioni, consulta:
+ [Eliminazione di un cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) nella Amazon EKS User Guide.
+ [Esegui un processo (.sync)](connect-to-resource.md#connect-sync)in Modelli di integrazione dei servizi.

**Quota per i dati di input o di risultato**  
Quando si inviano o si ricevono dati tra servizi, l'input o il risultato massimo per un'attività è di 256 KB di dati come stringa con codifica UTF-8. Per informazioni, consulta [Quote relative alle esecuzioni di macchine a stati](service-quotas.md#service-limits-state-machine-executions).

## Integrazioni API Kubernetes
<a name="connect-eks-kubernetes-apis"></a>

Step Functions supporta i seguenti Kubernetes: APIs

### RunJob
<a name="connect-eks-kubernetes-apis-runjob"></a>

L'integrazione del `eks:runJob` servizio ti consente di eseguire un job sul tuo cluster Amazon EKS. La `eks:runJob.sync` variante consente di attendere il completamento del processo e, facoltativamente, di recuperare i log.

Il tuo server API Kubernetes deve concedere le autorizzazioni per il ruolo IAM utilizzato dalla tua macchina a stati. Per ulteriori informazioni, consulta [Permissions](#connect-eks-permissions).

Per il pattern **Run a Job** (`.sync`), lo stato del lavoro è determinato dal polling. Step Functions effettua inizialmente sondaggi a una velocità di circa 1 sondaggio al minuto. Questa frequenza alla fine rallenta a circa 1 sondaggio ogni 5 minuti. Se hai bisogno di sondaggi più frequenti o hai bisogno di un maggiore controllo sulla strategia di polling, puoi utilizzare l'`eks:call`integrazione per interrogare lo stato del lavoro.

L'`eks:runJob`integrazione è specifica per `batch/v1` Kubernetes Jobs. Per ulteriori informazioni, consulta [Jobs](https://kubernetes.io/docs/concepts/workloads/controllers/job/) nella documentazione di Kubernetes. Se desideri gestire altre risorse Kubernetes, incluse le risorse personalizzate, utilizza l'integrazione del servizio. `eks:call` È possibile utilizzare Step Functions per creare cicli di polling, come dimostrato nel progetto di [Sondaggio sullo stato del lavoro con Lambda e AWS Batch](sample-project-job-poller.md) esempio. 

I parametri supportati includono:
+ `ClusterName`: il nome del cluster Amazon EKS che desideri chiamare.
  + `Type`: `String`
  + Obbligatorio: sì
+ `CertificateAuthority`: I dati del certificato con codifica Base64 necessari per comunicare con il cluster. Puoi ottenere questo valore dalla [console Amazon EKS](https://console.aws.amazon.com/eks/home) o utilizzando l'[DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)API Amazon EKS.
  + `Type`: `String`
  + Obbligatorio: sì
+ `Endpoint`: L'URL dell'endpoint per il tuo server API Kubernetes. Puoi ottenere questo valore dalla [console Amazon EKS](https://console.aws.amazon.com/eks/home) o utilizzando l'[DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)API Amazon EKS.
  + `Type`: `String`
  + Obbligatorio: sì
+ `Namespace`: lo spazio dei nomi in cui eseguire il processo. Se non viene fornito, viene utilizzato lo spazio dei nomi`default`.
  + `Type`: `String`
  + Obbligatorio: no
+ `Job`: La definizione di Kubernetes Job. Vedi [Jobs nella documentazione di](https://kubernetes.io/docs/concepts/workloads/controllers/job/) Kubernetes. 
  + `Type`: `JSON` o `String`
  + Obbligatorio: sì
+ `LogOptions`: Un insieme di opzioni per controllare il recupero opzionale dei log. Applicabile solo se si utilizza il modello di integrazione del servizio Run a Job (.sync) per attendere il completamento del processo.
  + `Type`: `JSON`
  + Obbligatorio: no
  + I log sono inclusi nella risposta sotto la chiave. `logs` All'interno del job possono essere presenti più pod, ciascuno con più contenitori.

    ```
    { 
      ...
      "logs": { 
        "pods": { 
          "pod1": { 
            "containers": { 
              "container1": { 
                "log": <log> 
              },
              ...
            }
          },
          ...
        }
      }
    ```
  + Il recupero dei log viene eseguito con la massima diligenza possibile. Se si verifica un errore durante il recupero di un registro, al posto del `log` campo ci saranno i campi e. `error` `cause`
+ `LogOptions.RetrieveLogs`: Abilita il recupero dei log dopo il completamento del processo. Per impostazione predefinita, i log non vengono recuperati.
  + `Type`: `Boolean`
  + Obbligatorio: no
+ `LogOptions.RawLogs`: Se `RawLogs` è impostato su true, i log verranno restituiti come stringhe non elaborate senza tentare di analizzarli in JSON. Per impostazione predefinita, i log vengono deserializzati in JSON, se possibile. In alcuni casi tale analisi può introdurre modifiche indesiderate, come la limitazione della precisione dei numeri contenenti molte cifre.
  + `Type`: `Boolean`
  + Obbligatorio: no
+ `LogOptions.LogParameters`: L'API Read Log dell'API Kubernetes supporta i parametri di query per controllare il recupero dei log. Ad esempio, è possibile utilizzare `tailLines` o `limitBytes` limitare la dimensione dei log recuperati e rimanere entro la quota di dimensione dei dati di Step Functions. Per ulteriori informazioni, consulta la sezione [Read Log](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#read-log-pod-v1-core) del Kubernetes API Reference.
  + `Type: `Mappa di `String` `List of Strings`
  + Obbligatorio: no
  + Esempio:

    ```
    "LogParameters": {
      "tailLines": [ "6" ]
    }
    ```

L'esempio seguente include uno `Task` stato che esegue un processo, attende il suo completamento, quindi recupera i log del processo:

```
{
  "StartAt": "Run a job on EKS",
  "States": {
    "Run a job on EKS": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:runJob.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "CertificateAuthority": "ANPAJ2UCCR6DPCEXAMPLE",
        "Endpoint": "https://AKIAIOSFODNN7EXAMPLE.yl4.us-east-1.eks.amazonaws.com",
        "LogOptions": {
          "RetrieveLogs": true
        },
        "Job": {
          "apiVersion": "batch/v1",
          "kind": "Job",
          "metadata": {
            "name": "example-job"
          },
          "spec": {
            "backoffLimit": 0,
            "template": {
              "metadata": {
                "name": "example-job"
              },
              "spec": {
                "containers": [
                  {
                    "name": "pi-2000",
                    "image": "perl",
                    "command": [ "perl" ],
                    "args": [
                      "-Mbignum=bpi",
                      "-wle",
                      "print bpi(2000)"
                    ]
                  }
                ],
                "restartPolicy": "Never"
              }
            }
          }
        }
      },
      "End": true
    }
  }
}
```

### `Call`
<a name="connect-eks-kubernetes-apis-call"></a>

L'integrazione dei `eks:call` servizi consente di utilizzare l'API Kubernetes per leggere e scrivere oggetti di risorse Kubernetes tramite un endpoint dell'API Kubernetes. 

Il tuo server API Kubernetes deve concedere le autorizzazioni per il ruolo IAM utilizzato dalla tua macchina a stati. Per ulteriori informazioni, consulta [Permissions](#connect-eks-permissions).

[Per ulteriori informazioni sulle operazioni disponibili, consulta il Kubernetes API Reference.](https://kubernetes.io/docs/reference/kubernetes-api/)

I parametri supportati includono: `Call`
+ `ClusterName`: il nome del cluster Amazon EKS che desideri chiamare.
  + `Type`: Stringa
  + Obbligatorio: sì
+ `CertificateAuthority`: I dati del certificato con codifica Base64 necessari per comunicare con il cluster. Puoi ottenere questo valore dalla [console Amazon EKS](https://console.aws.amazon.com/eks/home) o utilizzando l'[DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)API Amazon EKS.
  + `Type`: `String`
  + Obbligatorio: sì
+ `Endpoint`: L'URL dell'endpoint per il tuo server API Kubernetes. Puoi trovare questo valore sulla [console Amazon EKS](https://console.aws.amazon.com/eks/home) o utilizzando l' DescribeCluster API di Amazon EKS.
  + `Type`: `String`
  + Obbligatorio: sì
+ `Method`: il metodo HTTP della tua richiesta. Uno tra: `GET`, `POST`, `PUT`, `DELETE`, `HEAD`, o `PATCH`.
  + `Type`: `String`
  + Obbligatorio: sì
+ `Path`: Il percorso HTTP dell'operazione dell'API REST di Kubernetes.
  + `Type`: `String`
  + Obbligatorio: sì
+ `QueryParameters`: i parametri di query HTTP dell'operazione dell'API REST di Kubernetes.
  + `Type: `Mappa di `String` `List of Strings`
  + Obbligatorio: no
  + Esempio:

    ```
    "QueryParameters": {
      "labelSelector": [ "job-name=example-job" ]
    }
    ```
+ `RequestBody`: il corpo del messaggio HTTP dell'operazione dell'API REST di Kubernetes.
  + `Type`: `JSON` o `String`
  + Obbligatorio: no

Quanto segue include uno `Task` stato che utilizza `eks:call` per elencare i pod appartenenti al lavoro. `example-job`

```
{
  "StartAt": "Call EKS",
  "States": {
    "Call EKS": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:call",
      "Arguments": {
        "ClusterName": "MyCluster",
        "CertificateAuthority": "ANPAJ2UCCR6DPCEXAMPLE",
        "Endpoint": "https://444455556666.yl4.us-east-1.eks.amazonaws.com",
        "Method": "GET",
        "Path": "/api/v1/namespaces/default/pods",
        "QueryParameters": {
          "labelSelector": [
            "job-name=example-job"
          ]
        }
      },
      "End": true
    }
  }
}
```

Quanto segue include uno `Task` stato che utilizza `eks:call` per eliminare il lavoro `example-job` e lo imposta `propagationPolicy` per garantire che vengano eliminati anche i pod del lavoro.

```
{
  "StartAt": "Call EKS",
  "States": {
    "Call EKS": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:call",
      "Arguments": {
        "ClusterName": "MyCluster",
        "CertificateAuthority": "ANPAJ2UCCR6DPCEXAMPLE",
        "Endpoint": "https://444455556666.yl4.us-east-1.eks.amazonaws.com",
        "Method": "DELETE",
        "Path": "/apis/batch/v1/namespaces/default/jobs/example-job",
        "QueryParameters": {
          "propagationPolicy": [
            "Foreground"
          ]
        }
      },
      "End": true
    }
  }
}
```

## Amazon EKS ottimizzato APIs
<a name="connect-eks-apis"></a>

Amazon EKS APIs e la sintassi supportate includono:
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html)
  +  [Sintassi della richiesta](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html#API_CreateCluster_RequestSyntax) 
  +  [Sintassi della risposta](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html#API_CreateCluster_ResponseSyntax) 

    Quando un cluster Amazon EKS viene creato utilizzando l'integrazione del `eks:createCluster` servizio, il ruolo IAM viene aggiunto alla tabella di autorizzazione RBAC di Kubernetes come amministratore (con autorizzazioni system:masters). Inizialmente, solo quell'entità IAM può effettuare chiamate al server API Kubernetes. Per ulteriori informazioni, consulta:
    + [Gestione degli utenti o dei ruoli IAM per il tuo cluster](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) nella *Amazon EKS User Guide* 
    + La [Permissions](#connect-eks-permissions) sezione 

    Amazon EKS utilizza ruoli collegati ai servizi che contengono le autorizzazioni richieste da Amazon EKS per chiamare altri servizi per tuo conto. Se questi ruoli collegati ai servizi non esistono già nel tuo account, devi aggiungere l'`iam:CreateServiceLinkedRole`autorizzazione al ruolo IAM utilizzato da Step Functions. Per ulteriori informazioni, consulta [Using Service-Linked Roles](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) nella *Amazon EKS User Guide*.

    Il ruolo IAM utilizzato da Step Functions deve disporre `iam:PassRole` delle autorizzazioni per passare il ruolo IAM del cluster ad Amazon EKS. Per ulteriori informazioni, consulta il [ruolo IAM del cluster Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/service_IAM_role.html) nella *Guida per l'utente di Amazon EKS*. 
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html)
  +  [Sintassi della richiesta](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html#API_DeleteCluster_RequestSyntax) 
  +  [Sintassi della risposta](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html#API_DeleteCluster_ResponseSyntax) 

    È necessario eliminare qualsiasi profilo o gruppo di nodi Fargate prima di eliminare un cluster.
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html)
  +  [Sintassi della richiesta](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html#API_CreateFargateProfile_RequestSyntax) 
  +  [Sintassi della risposta](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html#API_CreateFargateProfile_ResponseSyntax) 

    Amazon EKS utilizza ruoli collegati ai servizi che contengono le autorizzazioni richieste da Amazon EKS per chiamare altri servizi per tuo conto. Se questi ruoli collegati ai servizi non esistono già nel tuo account, devi aggiungere l'`iam:CreateServiceLinkedRole`autorizzazione al ruolo IAM utilizzato da Step Functions. Per ulteriori informazioni, consulta [Using Service-Linked Roles](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) nella *Amazon EKS User Guide*.

    Amazon EKS su Fargate potrebbe non essere disponibile in tutte le regioni. Per informazioni sulla disponibilità delle regioni, consulta la sezione [Fargate](https://docs.aws.amazon.com/eks/latest/userguide/fargate.html) nella Guida per *l'utente di Amazon EKS*.

    Il ruolo IAM utilizzato da Step Functions deve disporre `iam:PassRole` delle autorizzazioni per passare il ruolo IAM di esecuzione del pod ad Amazon EKS. Per ulteriori informazioni, consulta il [ruolo di esecuzione del Pod](https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) nella *Guida per l'utente di Amazon EKS*. 
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html)
  +  [Sintassi della richiesta](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html#API_DeleteFargateProfile_RequestSyntax) 
  +  [Sintassi della risposta](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html#API_DeleteFargateProfile_ResponseSyntax) 
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html)
  +  [Sintassi della richiesta](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html#API_CreateNodegroup_RequestSyntax) 
  +  [Sintassi della risposta](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html#API_CreateNodegroup_ResponseSyntax) 

    Amazon EKS utilizza ruoli collegati ai servizi che contengono le autorizzazioni richieste da Amazon EKS per chiamare altri servizi per tuo conto. Se questi ruoli collegati ai servizi non esistono già nel tuo account, devi aggiungere l'`iam:CreateServiceLinkedRole`autorizzazione al ruolo IAM utilizzato da Step Functions. Per ulteriori informazioni, consulta [Using Service-Linked Roles](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) nella *Amazon EKS User Guide*. 

    Il ruolo IAM utilizzato da Step Functions deve disporre `iam:PassRole` delle autorizzazioni per passare il ruolo IAM del nodo ad Amazon EKS. Per ulteriori informazioni, consulta [Using Service-Linked Roles](https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html) nella *Amazon EKS User Guide*.
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html)
  +  [Sintassi della richiesta](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html#API_DeleteNodegroup_RequestSyntax) 
  +  [Sintassi della risposta](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html#API_DeleteNodegroup_ResponseSyntax) 

Quanto segue include un `Task` che crea un cluster Amazon EKS.

```
{
  "StartAt": "CreateCluster.sync",
  "States": {
    "CreateCluster.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:createCluster.sync",
      "Arguments": {
        "Name": "MyCluster",
        "ResourcesVpcConfig": {
          "SubnetIds": [
            "subnet-053e7c47012341234",
            "subnet-027cfea4b12341234"
          ]
        },
        "RoleArn": "arn:aws:iam::account-id:role/MyEKSClusterRole"
      },
      "End": true
    }
  }
}
```

Quanto segue include uno `Task` stato che elimina un cluster Amazon EKS.

```
{
  "StartAt": "DeleteCluster.sync",
  "States": {
    "DeleteCluster.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:deleteCluster.sync",
      "Arguments": {
        "Name": "MyCluster"
      },
      "End": true
    }
  }
}
```

Quanto segue include uno `Task` stato che crea un profilo Fargate.

```
{
  "StartAt": "CreateFargateProfile.sync",
  "States": {
    "CreateFargateProfile.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:createFargateProfile.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "FargateProfileName": "MyFargateProfile",
        "PodExecutionRoleArn": "arn:aws:iam::account-id:role/MyFargatePodExecutionRole",
        "Selectors": [{
            "Namespace": "my-namespace",
            "Labels": { "my-label": "my-value" }
          }]
      },
      "End": true
    }
  }
}
```

Quanto segue include uno `Task` stato che elimina un profilo Fargate.

```
{
  "StartAt": "DeleteFargateProfile.sync",
  "States": {
    "DeleteFargateProfile.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:deleteFargateProfile.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "FargateProfileName": "MyFargateProfile"
      },
      "End": true
    }
  }
}
```

Quanto segue include uno `Task` stato che crea un gruppo di nodi.

```
{
  "StartAt": "CreateNodegroup.sync",
  "States": {
    "CreateNodegroup.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:createNodegroup.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "NodegroupName": "MyNodegroup",
        "NodeRole": "arn:aws:iam::account-id:role/MyNodeInstanceRole",
        "Subnets": ["subnet-09fb51df01234", "subnet-027cfea4b1234"] 
      },
      "End": true
    }
  }
}
```

Quanto segue include uno `Task` stato che elimina un gruppo di nodi.

```
{
  "StartAt": "DeleteNodegroup.sync",
  "States": {
    "DeleteNodegroup.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:deleteNodegroup.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "NodegroupName": "MyNodegroup"
      },
      "End": true
    }
  }
}
```

## Permissions
<a name="connect-eks-permissions"></a>

Quando un cluster Amazon EKS viene creato utilizzando l'integrazione del `eks:createCluster` servizio, il ruolo IAM viene aggiunto alla tabella di autorizzazione RBAC di Kubernetes come amministratore, con autorizzazioni. `system:masters` Inizialmente, solo quell'entità IAM può effettuare chiamate al server API Kubernetes. Ad esempio, non sarai in grado di utilizzare **kubectl** per interagire con il tuo server API Kubernetes, a meno che non assumi lo stesso ruolo della tua macchina a stati Step Functions o se configuri Kubernetes per concedere autorizzazioni a entità IAM aggiuntive. Per ulteriori informazioni, consulta [la sezione Gestione degli utenti o dei ruoli IAM per il tuo cluster](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) nella *Amazon EKS User Guide*. 

Puoi aggiungere l'autorizzazione per altre entità IAM, come utenti o ruoli, aggiungendole allo spazio dei nomi `aws-auth` `ConfigMap` nel sistema kube. Se stai creando il tuo cluster da Step Functions, utilizza l'integrazione del `eks:call` servizio. 

Quanto segue include uno `Task` stato che crea `aws-auth` `ConfigMap` e concede l'`system:masters`autorizzazione all'utente `arn:aws:iam::account-id:user/my-user` e al ruolo `arn:aws:iam::account-id:role/my-role` IAM.

```
{
  "StartAt": "Add authorized user",
  "States": {
    "Add authorized user": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:call",
      "Arguments": {
        "ClusterName": "MyCluster",
        "CertificateAuthority": "LS0tLS1CRUd...UtLS0tLQo=",
        "Endpoint": "https://444455556666.yl4.region.eks.amazonaws.com",
        "Method": "POST",
        "Path": "/api/v1/namespaces/kube-system/configmaps",
        "RequestBody": {
           "apiVersion": "v1",
           "kind": "ConfigMap",
           "metadata": {
              "name": "aws-auth",
              "namespace": "kube-system"
           },
           "data": {
             "mapUsers": "[{ \"userarn\": \"arn:aws:iam::account-id:user/my-user\", \"username\": \"my-user\", \"groups\": [ \"system:masters\" ] } ]",
             "mapRoles": "[{ \"rolearn\": \"arn:aws:iam::account-id:role/my-role\", \"username\": \"my-role\", \"groups\": [ \"system:masters\" ] } ]"
           }
        }
      },
      "End": true
    }
  }
```

**Nota**  
Potresti vedere l'ARN per un ruolo IAM visualizzato in un formato che include il percorso **/service-role/**, ad esempio. `arn:aws:iam::account-id:role/service-role/my-role` Questo token del percorso del **ruolo di servizio** non deve essere incluso nell'elenco del ruolo in. `aws-auth`

Quando il cluster viene creato per la prima volta, non `aws-auth` `ConfigMap` esisterà, ma verrà aggiunto automaticamente se si crea un profilo Fargate. È possibile recuperare il valore corrente di`aws-auth`, aggiungere le autorizzazioni aggiuntive e `PUT` una nuova versione. Di solito è più facile da creare `aws-auth` prima del profilo Fargate.

Se il tuo cluster è stato creato al di fuori di Step Functions, puoi configurare **kubectl** per comunicare con il tuo server API Kubernetes. Quindi, creane un nuovo `aws-auth` `ConfigMap` utilizzo `kubectl apply -f aws-auth.yaml` o modificane uno già esistente utilizzando. `kubectl edit -n kube-system configmap/aws-auth` Per ulteriori informazioni, consulta:
+  [Crea un kubeconfig per Amazon EKS nella Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html) User *Guide*. 
+  [Gestione degli utenti o dei ruoli IAM per il tuo cluster](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) nella *Amazon EKS User Guide*. 

Se il tuo ruolo IAM non dispone di autorizzazioni sufficienti in Kubernetes, le integrazioni `eks:call` o di `eks:runJob` servizio falliranno con il seguente errore:

```
Error:
EKS.401

Cause:
{
  "ResponseBody": {
    "kind": "Status",
    "apiVersion": "v1",
    "metadata": {},
    "status": "Failure",
    "message": "Unauthorized",
    "reason": "Unauthorized",
    "code": 401
  },
  "StatusCode": 401,
  "StatusText": "Unauthorized"
}
```

## Politiche IAM per le chiamate ad Amazon EKS
<a name="eks-iam"></a>

I seguenti modelli di esempio mostrano come AWS Step Functions generare le politiche IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

### `CreateCluster`
<a name="eks-iam-createcluster"></a>

*Risorse*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:CreateCluster"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "eks:DescribeCluster",
                "eks:DeleteCluster"
            ],
            "Resource": "arn:aws:eks:us-east-1:444455556666:cluster/*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::444455556666:role/StepFunctionsSample-EKSClusterManag-EKSServiceRole-ANPAJ2UCCR6DPCEXAMPLE"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "eks.amazonaws.com"
                }
            }
        }
    ]
}
```

```


```

### `CreateNodeGroup`
<a name="eks-iam-createnodegroup"></a>

*Risorse*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeSubnets",
                "eks:CreateNodegroup"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "eks:DescribeNodegroup",
                "eks:DeleteNodegroup"
            ],
            "Resource": "arn:aws:eks:us-east-1:444455556666:nodegroup/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:GetRole",
                "iam:ListAttachedRolePolicies"
            ],
            "Resource": "arn:aws:iam::444455556666:role/*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::444455556666:role/StepFunctionsSample-EKSClusterMan-NodeInstanceRole-ANPAJ2UCCR6DPCEXAMPLE"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "eks.amazonaws.com"
                }
            }
        }
    ]
}
```

### `DeleteCluster`
<a name="eks-iam-deletecluster"></a>

*Risorse*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:DeleteCluster",
                "eks:DescribeCluster"
            ],
            "Resource": [
                "arn:aws:eks:us-east-1:444455556666:cluster/ExampleCluster"
            ]
        }
    ]
}
```

### `DeleteNodegroup`
<a name="eks-iam-deletenodegroup"></a>

*Risorse*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:DeleteNodegroup",
                "eks:DescribeNodegroup"
            ],
            "Resource": [
                "arn:aws:eks:us-east-1:444455556666:nodegroup/ExampleCluster/ExampleNodegroup/*"
            ]
        }
    ]
}
```

Per ulteriori informazioni sull'uso di Amazon EKS con Step Functions, consulta[Crea e gestisci cluster Amazon EKS con Step Functions](#connect-eks).

# Crea e gestisci cluster Amazon EMR con Step Functions
<a name="connect-emr"></a>

Scopri come integrarti AWS Step Functions con Amazon EMR utilizzando l'integrazione del servizio Amazon EMR fornito. APIs L'integrazione APIs del servizio è simile a quella del corrispondente Amazon EMR APIs, con alcune differenze nei campi che vengono passati e nelle risposte restituite.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

**Caratteristiche principali dell'integrazione ottimizzata con Amazon EMR**  
L'integrazione ottimizzata del servizio Amazon EMR dispone di un set personalizzato APIs che racchiude l'Amazon EMR APIs sottostante, descritto di seguito. Per questo motivo, si differenzia in modo significativo dall'integrazione del servizio SDK Amazon AWS EMR.
Il modello di [Esegui un processo (.sync)](connect-to-resource.md#connect-sync) integrazione è supportato.

Step Functions non termina automaticamente un cluster Amazon EMR se l'esecuzione viene interrotta. Se la macchina a stati si arresta prima della chiusura del cluster Amazon EMR, il cluster potrebbe continuare a funzionare a tempo indeterminato e potrebbe comportare costi aggiuntivi. Per evitare ciò, assicurati che tutti i cluster Amazon EMR che crei siano terminati correttamente. Per ulteriori informazioni, consulta:
+ [Controlla la terminazione del cluster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html) nella Guida per l'utente di Amazon EMR.
+ La sezione Service Integration Patterns. [Esegui un processo (.sync)](connect-to-resource.md#connect-sync)

**Nota**  
A partire da `emr-5.28.0` ora, puoi specificare il parametro `StepConcurrencyLevel` durante la creazione di un cluster per consentire l'esecuzione di più passaggi in parallelo su un singolo cluster. È possibile utilizzare Step Functions `Map` e `Parallel` gli stati per inviare il lavoro in parallelo al cluster.

La disponibilità dell'integrazione del servizio Amazon EMR è soggetta alla disponibilità di Amazon EMR. APIs Consulta la documentazione di [Amazon EMR](https://docs.aws.amazon.com//govcloud-us/latest/UserGuide/govcloud-emr.html) per le limitazioni nelle regioni speciali.

**Nota**  
Per l'integrazione con Amazon EMR, Step Functions utilizza una frequenza di polling dei job codificata di 60 secondi per i primi 10 minuti e per i 300 secondi successivi.

## Amazon EMR ottimizzato APIs
<a name="connect-emr-api"></a>

La tabella seguente descrive le differenze tra ogni API di integrazione del servizio Amazon EMR e Amazon EMR corrispondente. APIs


| API di integrazione dei servizi Amazon EMR | API EMR corrispondente | Differenze | 
| --- | --- | --- | 
| createCluster Crea e avvia l'esecuzione di un cluster (flusso di lavoro).  Amazon EMR è collegato direttamente a un tipo unico di ruolo IAM noto come ruolo collegato ai servizi. Perché `createCluster` e `createCluster.sync` funzionino, è necessario aver configurato le autorizzazioni necessarie per creare il ruolo collegato al servizio `AWSServiceRoleForEMRCleanup`. Per ulteriori informazioni su questo argomento, inclusa una dichiarazione che puoi aggiungere alla tua politica di autorizzazioni IAM, consulta [Using the Service-Linked Role for Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/using-service-linked-roles.html).  | [runJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html) | createClusterutilizza la stessa sintassi di richiesta di [runJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html), ad eccezione di quanto segue: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/step-functions/latest/dg/connect-emr.html)La risposta è: <pre>{<br />  "ClusterId": "string"<br />}</pre> Amazon EMR utilizza questo: <pre>{<br />  "JobFlowId": "string"<br />}</pre>  | 
| createCluster.sync Crea e avvia l'esecuzione di un cluster (flusso di lavoro).  | [runJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html) | Lo stesso di createCluster, ma attende che il cluster raggiunga lo stato WAITING. | 
| setClusterTerminationProtezione Blocca un cluster (flusso di lavoro) in modo che le EC2 istanze nel cluster non possano essere terminate dall'intervento dell'utente, da una chiamata API o da un errore del flusso di lavoro. | [setTerminationProtection](https://docs.aws.amazon.com/emr/latest/APIReference/API_SetTerminationProtection.html) | La richiesta utilizza questo:<pre>{<br />  "ClusterId": "string"<br />}</pre> Amazon EMR utilizza questo:<pre>{<br />  "JobFlowIds": ["string"]<br />}</pre>  | 
| terminateCluster Arresta un cluster (flusso di lavoro).  | [terminateJobFlows](https://docs.aws.amazon.com/emr/latest/APIReference/API_TerminateJobFlows.html) | La richiesta utilizza questo:<pre>{<br />  "ClusterId": "string"<br />}</pre> Amazon EMR utilizza questo:<pre>{<br />  "JobFlowIds": ["string"]<br />}</pre> | 
| terminateCluster.syncArresta un cluster (flusso di lavoro). | [terminateJobFlows](https://docs.aws.amazon.com/emr/latest/APIReference/API_TerminateJobFlows.html) | Lo stesso di terminateCluster, ma attende che il cluster venga terminato. | 
| addStep Aggiunge un nuovo passaggio a un cluster in esecuzione. Facoltativamente, puoi anche specificare il `[ExecutionRoleArn](https://docs.aws.amazon.com/emr/latest/APIReference/API_AddJobFlowSteps.html#EMR-AddJobFlowSteps-request-ExecutionRoleArn)` parametro durante l'utilizzo di questa API. | [addJobFlowFasi](https://docs.aws.amazon.com/emr/latest/APIReference/API_AddJobFlowSteps.html) | La richiesta utilizza la chiave"ClusterId". Usi di Amazon EMR. "JobFlowId" La richiesta utilizza un singolo passaggio.<pre>{<br />  "Step": <"StepConfig object"><br />}</pre> Amazon EMR utilizza questo:<pre>{<br />  "Steps": [<StepConfig objects>]<br />}</pre> La risposta è:<pre>{<br />  "StepId": "string"<br />}</pre> Amazon EMR restituisce questo:<pre>{<br />  "StepIds": [<strings>]<br />}</pre>  | 
| addStep.sync Aggiunge un nuovo passaggio a un cluster in esecuzione. Facoltativamente, puoi anche specificare il `[ExecutionRoleArn](https://docs.aws.amazon.com/emr/latest/APIReference/API_AddJobFlowSteps.html#EMR-AddJobFlowSteps-request-ExecutionRoleArn)` parametro durante l'utilizzo di questa API. | [addJobFlowFasi](https://docs.aws.amazon.com/emr/latest/APIReference/API_AddJobFlowSteps.html) | Come addStep, ma attende il completamento del passaggio. | 
| cancelStep Annulla un passaggio in sospeso in un cluster in esecuzione. | [cancelSteps](https://docs.aws.amazon.com/emr/latest/APIReference/API_CancelSteps.html) |  La richiesta utilizza questo:<pre>{<br />  "StepId": "string"<br />}</pre> Amazon EMR utilizza questo:<pre>{<br />  "StepIds": [<strings>]<br />}</pre> La risposta è:<pre>{<br />  "CancelStepsInfo": <CancelStepsInfo object><br />}</pre> Amazon EMR utilizza questo:<pre>{<br />  "CancelStepsInfoList": [<CancelStepsInfo objects>]<br />}</pre>  | 
| modifyInstanceFleetByName Modifica le capacità Spot target e on demand per il parco di istanze con il `InstanceFleetName` specificato. | [modifyInstanceFleet](https://docs.aws.amazon.com/emr/latest/APIReference/API_ModifyInstanceFleet.html) | La richiesta è la stessa di quella di modifyInstanceFleet, ad eccezione di quanto segue: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/step-functions/latest/dg/connect-emr.html)  | 
| modifyInstanceGroupByName Modifica il numero di nodi e le impostazioni di configurazione di un gruppo di istanze. | [modifyInstanceGroups](https://docs.aws.amazon.com/emr/latest/APIReference/API_ModifyInstanceGroups.html) | La richiesta è questa:<pre>{<br />  "ClusterId": "string",<br />  "InstanceGroup": <InstanceGroupModifyConfig object><br />}</pre> Amazon EMR utilizza un elenco: <pre>{<br />  "ClusterId": ["string"],<br />  "InstanceGroups": [<InstanceGroupModifyConfig objects>]<br />}</pre> All'interno dell'oggetto `InstanceGroupModifyConfig` il campo `InstanceGroupId` non è consentito. È stato aggiunto un nuovo campo, `InstanceGroupName`. In fase di esecuzione `InstanceGroupId` viene determinato automaticamente dall'integrazione del servizio chiamando `ListInstanceGroups` e analizzando il risultato.  | 

## Esempio di workflow
<a name="connect-emr-api-examples"></a>

L'esempio seguente include uno stato `Task` che crea un cluster.

```
"Create_Cluster": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:createCluster.sync",
    "Arguments": {
        "Name": "MyWorkflowCluster",
        "VisibleToAllUsers": true,
        "ReleaseLabel": "emr-5.28.0",
        "Applications": [
            {
                "Name": "Hive"
            }
        ],
        "ServiceRole": "EMR_DefaultRole",
        "JobFlowRole": "EMR_EC2_DefaultRole",
        "LogUri": "s3n://aws-logs-account-id-us-east-1/elasticmapreduce/",
        "Instances": {
            "KeepJobFlowAliveWhenNoSteps": true,
            "InstanceFleets": [
                {
                    "InstanceFleetType": "MASTER",
                    "Name": "MASTER",   
                    "TargetOnDemandCapacity": 1,
                    "InstanceTypeConfigs": [
                        {
                            "InstanceType": "m4.xlarge"
                        }
                    ]
                },
                {
                    "InstanceFleetType": "CORE",
                    "Name": "CORE",
                    "TargetOnDemandCapacity": 1,
                    "InstanceTypeConfigs": [
                        {
                            "InstanceType": "m4.xlarge"
                        }
                    ]
                }
            ]
        }
    },
    "End": true
}
```

Di seguito è riportato uno stato `Task` che consente la protezione di terminazione. 

```
"Enable_Termination_Protection": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:setClusterTerminationProtection",
    "Arguments": {
        "ClusterId": "{% $ClusterId %}",
        "TerminationProtected": true
    },
    "End": true
}
```

Di seguito è riportato uno stato `Task` che invia un passaggio a un cluster. 

```
"Step_One": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:addStep.sync",
    "Arguments": {
        "ClusterId": "{% $ClusterId %}",
        "ExecutionRoleArn": "arn:aws:iam::account-id:role/myEMR-execution-role",
        "Step": {
            "Name": "The first step",
            "ActionOnFailure": "TERMINATE_CLUSTER",
            "HadoopJarStep": {
                "Jar": "command-runner.jar",
                "Args": [
                    "hive-script",
                    "--run-hive-script",
                    "--args",
                    "-f",
                    "s3://region.elasticmapreduce.samples/cloudfront/code/Hive_CloudFront.q",
                    "-d",
                    "INPUT=s3://region.elasticmapreduce.samples",
                    "-d",
                    "OUTPUT=s3://<amzn-s3-demo-bucket>/MyHiveQueryResults/"
                ]
            }
        }
    },
    "End": true
}
```

Di seguito è riportato uno stato `Task` che annulla un passaggio. 

```
"Cancel_Step_One": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:cancelStep",
    "Arguments": {
        "ClusterId": "{% $ClusterId %}",
        "StepId": "{% $AddStepsResult.StepId %}"
    },
    "End": true
}
```

Di seguito è riportato uno stato `Task` che termina un cluster. 

```
"Terminate_Cluster": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:terminateCluster.sync",
    "Arguments": {
        "ClusterId": "{% $ClusterId %}",
    },
    "End": true
}
```

Di seguito è riportato uno stato `Task` che consente di scalare un cluster verso l'alto o verso il basso per un gruppo di istanze.

```
"ModifyInstanceGroupByName": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:modifyInstanceGroupByName",
    "Arguments": {
        "ClusterId": "j-account-id3",
        "InstanceGroupName": "MyCoreGroup",
        "InstanceGroup": {
            "InstanceCount": 8
        }
    },
    "End": true
}
```

Di seguito è riportato uno stato `Task` che consente di scalare un cluster verso l'alto o verso il basso per un parco di istanze.

```
"ModifyInstanceFleetByName": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:modifyInstanceFleetByName",
    "Arguments": {
        "ClusterId": "j-account-id3",
        "InstanceFleetName": "MyCoreFleet",
        "InstanceFleet": {
            "TargetOnDemandCapacity": 8,
            "TargetSpotCapacity": 0
        }
    },
    "End": true
}
```

## Politiche IAM per le chiamate ad Amazon EMR
<a name="emr-iam"></a>

I seguenti modelli di esempio mostrano come AWS Step Functions generare le politiche IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

### `addStep`
<a name="emr-iam-addstep"></a>

*Risorse statiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticmapreduce:AddJobFlowSteps",
                "elasticmapreduce:DescribeStep",
                "elasticmapreduce:CancelSteps"
            ],
            "Resource": [
                "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/clusterId"
            ]
        }
    ]
}
```

*Risorse dinamiche*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:AddJobFlowSteps",
        "elasticmapreduce:DescribeStep",
        "elasticmapreduce:CancelSteps"
      ],
      "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*"
    }
  ]
}
```

### `cancelStep`
<a name="emr-iam-cancelstep"></a>

*Risorse statiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "elasticmapreduce:CancelSteps",
            "Resource": [
                "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/myCluster-id"
            ]
        }
    ]
}
```

*Risorse dinamiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "elasticmapreduce:CancelSteps",
            "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*"
        }
    ]
}
```

### `createCluster`
<a name="emr-iam-createcluster"></a>

*Risorse statiche*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:RunJobFlow",
        "elasticmapreduce:DescribeCluster",
        "elasticmapreduce:TerminateJobFlows"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": [
        "arn:aws:iam::123456789012:role/myRoleName"
      ]
    }
  ]
}
```

### `setClusterTerminationProtection`
<a name="emr-iam-clusterterminationprotection"></a>

*Risorse statiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "elasticmapreduce:SetTerminationProtection",
            "Resource": [
                "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/myCluster-id"
            ]
        }
    ]
}
```

*Risorse dinamiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "elasticmapreduce:SetTerminationProtection",
            "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*"
        }
    ]
}
```

### `modifyInstanceFleetByName`
<a name="emr-iam-modifyinstancefleetbyname"></a>

*Risorse statiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticmapreduce:ModifyInstanceFleet",
                "elasticmapreduce:ListInstanceFleets"
            ],
            "Resource": [
                "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/myCluster-id"
            ]
        }
    ]
}
```

*Risorse dinamiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticmapreduce:ModifyInstanceFleet",
                "elasticmapreduce:ListInstanceFleets"
            ],
            "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*"
        }
    ]
}
```

### `modifyInstanceGroupByName`
<a name="emr-iam-modifyinstancegroupbyname"></a>

*Risorse statiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticmapreduce:ModifyInstanceGroups",
                "elasticmapreduce:ListInstanceGroups"
            ],
            "Resource": [
                "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/myCluster-id"
            ]
        }
    ]
}
```

*Risorse dinamiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticmapreduce:ModifyInstanceGroups",
                "elasticmapreduce:ListInstanceGroups"
            ],
            "Resource": "*"
        }
    ]
}
```

### `terminateCluster`
<a name="emr-iam-terminatecluster"></a>

*Risorse statiche*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:TerminateJobFlows",
        "elasticmapreduce:DescribeCluster"
      ],
      "Resource": [
        "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/myCluster-id"
      ]
    }
  ]
}
```

*Risorse dinamiche*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:TerminateJobFlows",
        "elasticmapreduce:DescribeCluster"
      ],
      "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*"
    }
  ]
}
```

# Crea e gestisci cluster Amazon EMR su EKS con AWS Step Functions
<a name="connect-emr-eks"></a>

Scopri come effettuare l'integrazione AWS Step Functions con Amazon EMR su EKS utilizzando l'integrazione dei servizi Amazon EMR su EKS. APIs L'integrazione dei APIs servizi è la stessa del corrispondente Amazon EMR su EKS APIs, ma non tutti APIs supportano tutti i modelli di integrazione, come mostrato nella tabella seguente.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

**In che modo l'integrazione ottimizzata di Amazon EMR su EKS è diversa dall'integrazione Amazon EMR su EKS SDK AWS**  
Il modello di [Esegui un processo (.sync)](connect-to-resource.md#connect-sync) integrazione è supportato.
Non esistono ottimizzazioni specifiche per il modello di [Richiesta e risposta](connect-to-resource.md#connect-default) integrazione.
Il modello di [Attendi una richiamata con Task Token](connect-to-resource.md#connect-wait-token) integrazione non è supportato.

**Nota**  
Per l'integrazione con Amazon EMR, Step Functions utilizza una frequenza di polling dei job codificata di 60 secondi per i primi 10 minuti e per i 300 secondi successivi.


| "Hello, World\$1" | Richiesta di risposta | Esegui un lavoro (.sync) | 
| --- | --- | --- | 
| CreateVirtualCluster | Supportata | Non supportato | 
| DeleteVirtualCluster | Supportato | Supportato | 
| StartJobRun | Supportato | Supportata | 

Amazon EMR supportato su EKS: APIs

**Quota per i dati di input o di risultato**  
Quando si inviano o si ricevono dati tra servizi, l'input o il risultato massimo per un'attività è di 256 KB di dati come stringa con codifica UTF-8. Per informazioni, consulta [Quote relative alle esecuzioni di macchine a stati](service-quotas.md#service-limits-state-machine-executions).


+ [https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html)
  + [Sintassi della richiesta](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html#API_CreateVirtualCluster_RequestSyntax)
  + [Parametri supportati](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html#API_CreateVirtualCluster_RequestBody)
  + [Sintassi della risposta](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html#API_CreateVirtualCluster_ResponseSyntax)
+ [https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DeleteVirtualCluster.html](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DeleteVirtualCluster.html)
  + [Sintassi della richiesta](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DeleteVirtualCluster.html#API_DeleteVirtualCluster_RequestSyntax)
  + [Parametri supportati](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DeleteVirtualCluster.html#API_DeleteVirtualCluster_RequestParameters)
  + [Sintassi della risposta](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html#API_CreateVirtualCluster_ResponseSyntax)
+ [https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html)
  + [Sintassi della richiesta](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html#API_StartJobRun_RequestSyntax)
  + [Parametri supportati](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html#API_StartJobRun_RequestParameters)
  + [Sintassi della risposta](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html#API_StartJobRun_ResponseSyntax)

Quanto segue include uno `Task` stato che crea un cluster virtuale.

```
"Create_Virtual_Cluster": {
  "Type": "Task",
  "Resource": "arn:aws:states:::emr-containers:createVirtualCluster",
  "Arguments": {
    "Name": "MyVirtualCluster",
    "ContainerProvider": {
      "Id": "EKSClusterName",
      "Type": "EKS",
      "Info": {
        "EksInfo": {
          "Namespace": "Namespace"
        }
      }
    }
  },
  "End": true
}
```

Quanto segue include uno `Task` stato che invia un processo a un cluster virtuale e attende che venga completato.

```
"Submit_Job": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-containers:startJobRun.sync",
    "Arguments": {
      "Name": "MyJobName",
      "VirtualClusterId": "{% $VirtualClusterId %}",
      "ExecutionRoleArn": "arn:aws:iam::<accountId>:role/job-execution-role",
      "ReleaseLabel": "emr-6.2.0-latest",
      "JobDriver": {
        "SparkSubmitJobDriver": {
          "EntryPoint": "s3://<amzn-s3-demo-bucket>/jobs/trip-count.py",
          "EntryPointArguments": [
            "60"
          ],
          "SparkSubmitParameters": "--conf spark.driver.cores=2 --conf spark.executor.instances=10 --conf spark.kubernetes.pyspark.pythonVersion=3 --conf spark.executor.memory=10G --conf spark.driver.memory=10G --conf spark.executor.cores=1 --conf spark.dynamicAllocation.enabled=false"
        }
      },
      "ConfigurationOverrides": {
        "ApplicationConfiguration": [
          {
            "Classification": "spark-defaults",
            "Properties": {
              "spark.executor.instances": "2",
              "spark.executor.memory": "2G"
            }
          }
        ],
        "MonitoringConfiguration": {
          "PersistentAppUI": "ENABLED",
          "CloudWatchMonitoringConfiguration": {
            "LogGroupName": "MyLogGroupName",
            "LogStreamNamePrefix": "MyLogStreamNamePrefix"
          },
          "S3MonitoringConfiguration": {
            "LogUri": "s3://<amzn-s3-demo-logging-bucket1>"
          }
        }
      },
      "Tags": {
        "taskType": "jobName"
      }
    },
    "End": true
}
```

Quanto segue include uno `Task` stato che elimina un cluster virtuale e attende il completamento dell'eliminazione.

```
"Delete_Virtual_Cluster": {
  "Type": "Task",
  "Resource": "arn:aws:states:::emr-containers:deleteVirtualCluster.sync",
  "Arguments": {
    "Id": "{% $states.input.VirtualClusterId %}",
  },
  "End": true
}
```

Per ulteriori informazioni sulla configurazione delle IAM autorizzazioni durante l'utilizzo Step Functions con altri AWS servizi, consulta. [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md)

# Crea e gestisci Amazon EMR Serverless applicazioni con Step Functions
<a name="connect-emr-serverless"></a>

Scopri come creare, avviare, interrompere ed eliminare applicazioni su EMR Serverless utilizzando Step Functions. Questa pagina elenca gli `Task` stati supportati APIs e fornisce esempi per eseguire casi d'uso comuni.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

**Caratteristiche principali dell'integrazione ottimizzata EMR Serverless**  
 L'integrazione ottimizzata dei EMR Serverless servizi dispone di un set personalizzato [APIs](#connect-emr-serverless-custom-apis)che racchiude le funzionalità sottostanti EMR Serverless APIs. Grazie a questa personalizzazione, l'EMR Serverlessintegrazione ottimizzata differisce in modo significativo dall'integrazione del servizio AWS SDK. 
Inoltre, l'EMR Serverlessintegrazione ottimizzata supporta [Esegui un processo (.sync)](connect-to-resource.md#connect-sync) il modello di integrazione.
Il modello di [Attendi una richiamata con Task Token](connect-to-resource.md#connect-wait-token) integrazione **non** è supportato.

## EMR Serverlessintegrazione del servizio APIs
<a name="connect-emr-serverless-custom-apis"></a>

Per l'integrazione AWS Step Functions conEMR Serverless, è possibile utilizzare i seguenti sei EMR Serverless servizi di integrazione APIs. Queste integrazioni di servizi APIs sono simili a quelle corrispondenti EMR Serverless APIs, con alcune differenze nei campi passati e nelle risposte restituite.

La tabella seguente descrive le differenze tra ogni API EMR Serverless di integrazione dei servizi e l'EMR ServerlessAPI corrispondente.


| EMR ServerlessAPI di integrazione dei servizi | EMR ServerlessAPI corrispondente | Differenze | 
| --- | --- | --- | 
|  *Crea applicazione* Crea un’applicazione . EMR Serverlessè collegato a un tipo di IAM ruolo univoco noto come ruolo collegato al servizio. Perché `createApplication` e `createApplication.sync` funzionino, è necessario aver configurato le autorizzazioni necessarie per creare il ruolo collegato al servizio `AWSServiceRoleForAmazonEMRServerless`. Per ulteriori informazioni su questo argomento, inclusa una dichiarazione che puoi aggiungere alla tua politica di IAM autorizzazioni, vedi [Utilizzo di ruoli collegati al servizio](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/using-service-linked-roles.html) per. EMR Serverless  |  [CreateApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_CreateApplication.html)  | Nessuno | 
|  *CreateApplication.sync* Crea un’applicazione .  |  [CreateApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_CreateApplication.html)  |  Nessuna differenza tra le richieste e le risposte dell'API e dell'EMR ServerlessAPI di integrazione dei servizi. EMR Serverless Tuttavia, *CreateApplication.sync* attende che l'applicazione raggiunga lo stato. `CREATED`  | 
|  *Avvia l'applicazione* Avvia un'applicazione specificata e inizializza la capacità iniziale dell'applicazione, se configurata.  |  [StartApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartApplication.html)  |  La risposta dell'EMR ServerlessAPI non contiene dati, ma la risposta dell'API EMR Serverless di integrazione del servizio include i seguenti dati. <pre>{<br />  "ApplicationId": "string"<br />}</pre>  | 
|  *Avvia Application.sync* Avvia un'applicazione specificata e inizializza la capacità iniziale, se configurata.  |  [StartApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartApplication.html)  |  La risposta dell'EMR ServerlessAPI non contiene dati, ma la risposta dell'API EMR Serverless di integrazione del servizio include i seguenti dati. <pre>{<br />  "ApplicationId": "string"<br />}</pre> Inoltre, *StartApplication.sync* attende che l'applicazione raggiunga lo stato. `STARTED`  | 
|  *Arresta l'applicazione* Arresta un'applicazione specificata e rilascia la capacità iniziale, se configurata. Tutti i processi pianificati e in esecuzione devono essere completati o annullati prima di interrompere un'applicazione.  |  [StopApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StopApplication.html)  |  La risposta dell'EMR ServerlessAPI non contiene dati, ma la risposta dell'API EMR Serverless di integrazione del servizio include i seguenti dati. <pre>{<br />  "ApplicationId": "string"<br />}</pre>  | 
|  *Arresta Application.sync* Arresta un'applicazione specificata e rilascia la capacità iniziale, se configurata. Tutti i processi pianificati e in esecuzione devono essere completati o annullati prima di interrompere un'applicazione.  |  [StopApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StopApplication.html)  |  La risposta dell'EMR ServerlessAPI non contiene dati, ma la risposta dell'API EMR Serverless di integrazione del servizio include i seguenti dati. <pre>{<br />  "ApplicationId": "string"<br />}</pre> Inoltre, *StopApplication.sync* attende che l'applicazione raggiunga lo stato. `STOPPED`  | 
|  *Elimina applicazione* Elimina un'applicazione. Un'applicazione deve trovarsi nello `CREATED` stato `STOPPED` o per poter essere eliminata.  |  [DeleteApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_DeleteApplication.html)  |  La risposta dell'EMR ServerlessAPI non contiene dati, ma la risposta dell'API di integrazione del EMR Serverless servizio include i seguenti dati. <pre>{<br />  "ApplicationId": "string"<br />}</pre>  | 
|  *Elimina Application.sync* Elimina un'applicazione. Un'applicazione deve trovarsi nello `CREATED` stato `STOPPED` o per poter essere eliminata.  |  [DeleteApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_DeleteApplication.html)  |  La risposta dell'EMR ServerlessAPI non contiene dati, ma la risposta dell'API di integrazione del EMR Serverless servizio include i seguenti dati. <pre>{<br />  "ApplicationId": "string"<br />}</pre> Inoltre, *StopApplication.sync* attende che l'applicazione raggiunga lo stato. `TERMINATED`  | 
|  *startJobRun* Avvia l'esecuzione di un processo.  |  [StartJobRun](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html)  | Nessuno | 
|  *startJobRun.sync* Avvia l'esecuzione di un processo.  |  [StartJobRun](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html)  |  Nessuna differenza tra le richieste e le risposte dell'EMR ServerlessAPI e dell'API EMR Serverless di integrazione dei servizi. Tuttavia, *startJobRun.sync* attende che l'applicazione raggiunga lo `SUCCESS` stato.  | 
|  *cancelJobRun* Annulla l'esecuzione di un processo.  |  [CancelJobRun](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_CancelJobRun.html)  | Nessuno | 
|  *cancelJobRun.sync* Annulla l'esecuzione di un processo.  |  [CancelJobRun](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_CancelJobRun.html)  |  Nessuna differenza tra le richieste e le risposte dell'EMR ServerlessAPI e dell'API di integrazione dei EMR Serverless servizi. Tuttavia, *cancelJobRun.sync* attende che l'applicazione raggiunga lo `CANCELLED` stato.  | 

## Casi d'uso dell'integrazione EMR Serverless
<a name="connect-emr-serverless-use-cases"></a>

Per l'integrazione ottimizzata dei EMR Serverless servizi, si consiglia di creare una singola applicazione e quindi di utilizzarla per eseguire più processi. Ad esempio, in una macchina a stato singolo, è possibile includere più [startJobRun](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html)richieste, che utilizzano tutte la stessa applicazione. I seguenti esempi di [Stato del flusso di lavoro delle attività](state-task.md) stato mostrano i casi d'uso EMR Serverless APIs con cui eseguire l'integrazioneStep Functions. Per informazioni su altri casi d'uso diEMR Serverless, vedere [What is Amazon EMR Serverless](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/emr-serverless.html).

**Suggerimento**  
Per distribuire un esempio di macchina a stati che si integra con EMR Serverless per l'esecuzione di più lavori;, vedere. [Esegui un EMR Serverless lavoro](sample-emr-serverless-job.md)
+ [Creazione di un'applicazione](#connect-emr-serverless-task-state-createapp)
+ [Avviare un'applicazione](#connect-emr-serverless-task-state-startapp)
+ [Arresta un'applicazione](#connect-emr-serverless-task-state-stopapp)
+ [Eliminazione di un'applicazione](#connect-emr-serverless-task-state-deleteapp)
+ [Avviare un processo in un'applicazione](#connect-emr-serverless-task-state-startjobrun)
+ [Annullare un lavoro in un'applicazione](#connect-emr-serverless-task-state-canceljobrun)

Per ulteriori informazioni sulla configurazione delle IAM autorizzazioni durante l'utilizzo Step Functions con altri AWS servizi, consulta. [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md)

Negli esempi mostrati nei seguenti casi d'uso, sostituisci il *italicized* testo con informazioni specifiche sulla risorsa. Ad esempio, sostituiscilo *yourApplicationId* con l'ID della tua EMR Serverless applicazione, ad esempio. `00yv7iv71inak893`

### Creazione di un'applicazione
<a name="connect-emr-serverless-task-state-createapp"></a>

Il seguente esempio di stato Task crea un'applicazione utilizzando l'API di integrazione del *servizio CreateApplication.sync.*

```
"Create_Application": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-serverless:createApplication.sync",
    "Arguments": {
        "Name": "MyApplication",
        "ReleaseLabel": "emr-6.9.0",
        "Type": "SPARK"
    },
    "End": true
}
```

### Avviare un'applicazione
<a name="connect-emr-serverless-task-state-startapp"></a>

Il seguente esempio di stato Task avvia un'applicazione utilizzando l'API di integrazione del *servizio StartApplication.sync.*

```
"Start_Application": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-serverless:startApplication.sync",
    "Arguments": {
        "ApplicationId": "yourApplicationId"
    },
    "End": true
}
```

### Arresta un'applicazione
<a name="connect-emr-serverless-task-state-stopapp"></a>

Il seguente esempio di stato Task interrompe un'applicazione utilizzando l'API di integrazione del *servizio StopApplication.sync.*

```
"Stop_Application": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-serverless:stopApplication.sync",
    "Arguments": {
        "ApplicationId": "yourApplicationId"
    },
    "End": true
}
```

### Eliminazione di un'applicazione
<a name="connect-emr-serverless-task-state-deleteapp"></a>

*Il seguente esempio di stato Task elimina un'applicazione utilizzando l'API di integrazione del servizio DeleteApplication.sync.*

```
"Delete_Application": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-serverless:deleteApplication.sync",
    "Arguments": {
        "ApplicationId": "yourApplicationId"
    },
    "End": true
}
```

### Avviare un processo in un'applicazione
<a name="connect-emr-serverless-task-state-startjobrun"></a>

Il seguente esempio di stato Task avvia un processo in un'applicazione utilizzando l'API di integrazione del servizio *startJobRun.sync.*

```
"Start_Job": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-serverless:startJobRun.sync",
    "Arguments": {
        "ApplicationId": "yourApplicationId",
        "ExecutionRoleArn": "arn:aws:iam::account-id:role/myEMRServerless-execution-role",
        "JobDriver": {
            "SparkSubmit": {
                "EntryPoint": "s3://<amzn-s3-demo-bucket>/sample.py",
                "EntryPointArguments": ["1"],
                "SparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=4g --conf spark.driver.cores=2 --conf spark.driver.memory=4g --conf spark.executor.instances=1"
            }
        }
    },
    "End": true
}
```

### Annullare un lavoro in un'applicazione
<a name="connect-emr-serverless-task-state-canceljobrun"></a>

Il seguente esempio di stato Task annulla un processo in un'applicazione utilizzando l'API di integrazione del servizio *cancelJobRun.sync.*

```
"Cancel_Job": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-serverless:cancelJobRun.sync",
    "Arguments": {
        "ApplicationId": "{% $states.input.ApplicationId %}",
        "JobRunId": "{% $states.input.JobRunId %}"
    },
    "End": true
}
```

## Politiche IAM per le chiamate Amazon EMR Serverless
<a name="emr-serverless-iam"></a>

Quando crei una macchina a stati utilizzando la console, crea Step Functions automaticamente un ruolo di esecuzione per la tua macchina a stati con i privilegi minimi richiesti. Questi IAM ruoli generati automaticamente sono validi per il momento Regione AWS in cui si crea la macchina a stati.

I seguenti modelli di esempio mostrano come AWS Step Functions generare le politiche IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

Quando crei delle IAM policy, ti consigliamo di non includere caratteri jolly nelle policy. Come best practice in materia di sicurezza, è consigliabile limitare il più possibile le policy. È consigliabile utilizzare politiche dinamiche solo quando determinati parametri di input non sono noti durante il runtime.

Inoltre, gli utenti amministratori devono prestare attenzione quando concedono a utenti non amministratori ruoli di esecuzione per l'esecuzione delle macchine a stati. Ti consigliamo di includere le politiche PassRole nei ruoli di esecuzione se stai creando politiche da solo. Ti consigliamo inoltre di aggiungere le chiavi `aws:SourceARN` e di `aws:SourceAccount` contesto nei ruoli di esecuzione.

### Esempi di policy IAM per l'integrazione EMR Serverless con Step Functions
<a name="emr-serverless-iam-policy-eg"></a>
+ [Esempio di policy IAM per CreateApplication](#emr-serverless-policy-createapp)
+ [Esempio di policy IAM per StartApplication](#emr-serverless-policy-startapp)
+ [Esempio di policy IAM per StopApplication](#emr-serverless-policy-stopapp)
+ [Esempio di policy IAM per DeleteApplication](#emr-serverless-policy-deleteapp)
+ [Esempio di policy IAM per StartJobRun](#emr-serverless-policy-startjobrun)
+ [Esempio di policy IAM per CancelJobRun](#emr-serverless-policy-canceljobrun)

#### Esempio di policy IAM per CreateApplication
<a name="emr-serverless-policy-createapp"></a>

Di seguito è riportato un esempio di policy IAM per una macchina a stati con uno CreateApplication [Stato del flusso di lavoro delle attività](state-task.md) stato.

**Nota**  
È necessario specificare le CreateServiceLinkedRole autorizzazioni nelle politiche IAM durante la creazione della prima applicazione in assoluto nel proprio account. Successivamente, non è necessario aggiungere questa autorizzazione. Per informazioni su CreateServiceLinkedRole, vedere [CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html)nella versione più https://docs.aws.amazon.com/IAM/ APIReference recente/ /.

Le risorse statiche e dinamiche per le seguenti politiche sono le stesse.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "emr-serverless:CreateApplication"
            ],
            "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "emr-serverless:GetApplication",
                "emr-serverless:DeleteApplication"
            ],
            "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::123456789012:role/aws-service-role/ops.emr-serverless.amazonaws.com/AWSServiceRoleForAmazonEMRServerless*",
            "Condition": {
                "StringLike": {
                    "iam:AWSServiceName": "ops.emr-serverless.amazonaws.com"
                }
            }
        }
   ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   
   "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "emr-serverless:CreateApplication"
            ],
            "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::123456789012:role/aws-service-role/ops.emr-serverless.amazonaws.com/AWSServiceRoleForAmazonEMRServerless*",
            "Condition": {
                "StringLike": {
                    "iam:AWSServiceName": "ops.emr-serverless.amazonaws.com"
                }
            }
        }
    ]
}
```

------

#### Esempio di policy IAM per StartApplication
<a name="emr-serverless-policy-startapp"></a>

**Risorse statiche**  
Di seguito sono riportati esempi di policy IAM per risorse statiche quando si utilizza una macchina a stati con uno StartApplication [Stato del flusso di lavoro delle attività](state-task.md) stato.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartApplication",
               "emr-serverless:GetApplication",
               "emr-serverless:StopApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        }
    ]
}
```

------

**Risorse dinamiche**  
Di seguito sono riportati alcuni esempi di policy IAM per risorse dinamiche quando si utilizza una macchina a stati con uno StartApplication [Stato del flusso di lavoro delle attività](state-task.md) stato.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartApplication",
               "emr-serverless:GetApplication",
               "emr-serverless:StopApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        }
    ]
}
```

------

#### Esempio di policy IAM per StopApplication
<a name="emr-serverless-policy-stopapp"></a>

**Risorse statiche**  
Di seguito sono riportati esempi di policy IAM per risorse statiche quando si utilizza una macchina a stati con uno StopApplication [Stato del flusso di lavoro delle attività](state-task.md) stato.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StopApplication",
               "emr-serverless:GetApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StopApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        }
    ]
}
```

------

**Risorse dinamiche**  
Di seguito sono riportati alcuni esempi di policy IAM per risorse dinamiche quando si utilizza una macchina a stati con uno StopApplication [Stato del flusso di lavoro delle attività](state-task.md) stato.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StopApplication",
               "emr-serverless:GetApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StopApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        }
    ]
}
```

------

#### Esempio di policy IAM per DeleteApplication
<a name="emr-serverless-policy-deleteapp"></a>

**Risorse statiche**  
Di seguito sono riportati esempi di policy IAM per risorse statiche quando si utilizza una macchina a stati con uno DeleteApplication [Stato del flusso di lavoro delle attività](state-task.md) stato.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:DeleteApplication",
               "emr-serverless:GetApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:DeleteApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        }
    ]
}
```

------

**Risorse dinamiche**  
Di seguito sono riportati alcuni esempi di policy IAM per risorse dinamiche quando si utilizza una macchina a stati con uno DeleteApplication [Stato del flusso di lavoro delle attività](state-task.md) stato.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:DeleteApplication",
               "emr-serverless:GetApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:DeleteApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        }
    ]
}
```

------

#### Esempio di policy IAM per StartJobRun
<a name="emr-serverless-policy-startjobrun"></a>

**Risorse statiche**  
Di seguito sono riportati esempi di policy IAM per risorse statiche quando si utilizza una macchina a stati con uno StartJobRun [Stato del flusso di lavoro delle attività](state-task.md) stato.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::123456789012:role/jobExecutionRoleArn"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "emr-serverless.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "emr-serverless:GetJobRun",
                "emr-serverless:CancelJobRun"
            ],
            "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId/jobruns/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessJobRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::123456789012:role/jobExecutionRoleArn"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "emr-serverless.amazonaws.com"
                }
            }
        }
    ]
}
```

------

**Risorse dinamiche**  
Di seguito sono riportati alcuni esempi di policy IAM per risorse dinamiche quando si utilizza una macchina a stati con uno StartJobRun [Stato del flusso di lavoro delle attività](state-task.md) stato.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartJobRun",
               "emr-serverless:GetJobRun",
               "emr-serverless:CancelJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::123456789012:role/jobExecutionRoleArn"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "emr-serverless.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessJobRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::123456789012:role/jobExecutionRoleArn"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "emr-serverless.amazonaws.com"
                }
            }
        }
    ]
}
```

------

#### Esempio di policy IAM per CancelJobRun
<a name="emr-serverless-policy-canceljobrun"></a>

**Risorse statiche**  
Di seguito sono riportati esempi di policy IAM per risorse statiche quando si utilizza una macchina a stati con uno CancelJobRun [Stato del flusso di lavoro delle attività](state-task.md) stato.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:CancelJobRun",
               "emr-serverless:GetJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId/jobruns/jobRunId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessJobRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:CancelJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId/jobruns/jobRunId"
            ]
        }
    ]
}
```

------

**Risorse dinamiche**  
Di seguito sono riportati alcuni esempi di policy IAM per risorse dinamiche quando si utilizza una macchina a stati con uno CancelJobRun [Stato del flusso di lavoro delle attività](state-task.md) stato.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:CancelJobRun",
               "emr-serverless:GetJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessJobRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:CancelJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        }
    ]
}
```

------

# Aggiungi EventBridge eventi con Step Functions
<a name="connect-eventbridge"></a>

Step Functions fornisce un'API di integrazione dei servizi per l'integrazione con Amazon EventBridge. Scopri come creare applicazioni basate sugli eventi inviando eventi personalizzati direttamente dai flussi di lavoro di Step Functions.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

**Caratteristiche principali dell'integrazione ottimizzata EventBridge**  
L'ARN di esecuzione e l'ARN della macchina a stati vengono aggiunti automaticamente al campo di ciascuno. `Resources` `PutEventsRequestEntry`
Se la risposta di `PutEvents` contiene un valore diverso da zero, `FailedEntryCount` lo `Task` stato fallisce con l'errore. `EventBridge.FailedEntry`

 Per utilizzare l'`PutEvents`API, dovrai creare una EventBridge regola nel tuo account che corrisponda allo schema specifico degli eventi che invierai. È ad esempio possibile: 
+ Crea una funzione Lambda nel tuo account che riceva e stampa un evento che corrisponde a una EventBridge regola.
+  Crea una EventBridge regola nel tuo account sul bus eventi predefinito che corrisponda a uno schema di eventi specifico e abbia come destinazione la funzione Lambda. 

 Per ulteriori informazioni, consulta:
+ [Aggiungere EventBridge eventi Amazon PutEvents](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-putevents.html) nella Guida per l' EventBridge utente.
+ [Attendi una richiamata con Task Token](connect-to-resource.md#connect-wait-token)in Modelli di integrazione dei servizi.

Quanto segue include un messaggio `Task` che invia un evento personalizzato:

```
{
  "Type": "Task",
  "Resource": "arn:aws:states:::events:putEvents",
  "Arguments": {
    "Entries": [
      {
        "Detail": {
          "Message": "MyMessage"
        },
        "DetailType": "MyDetailType",
        "EventBusName": "MyEventBus",
        "Source": "my.source"
      }
    ]
  },
  "End": true
}
```

**Quota per i dati di input o di risultato**  
Quando si inviano o si ricevono dati tra servizi, l'input o il risultato massimo per un'attività è di 256 KB di dati come stringa con codifica UTF-8. Per informazioni, consulta [Quote relative alle esecuzioni di macchine a stati](service-quotas.md#service-limits-state-machine-executions).

## API ottimizzata EventBridge
<a name="connect-eventbridge-apis"></a>

 EventBridge L'API e la sintassi supportate includono:
+ [https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html)

## Gestione degli errori
<a name="connect-eventbridge-error"></a>

L'`PutEvents`API accetta una serie di voci come input, quindi restituisce una matrice di voci di risultati. Se l'`PutEvents`azione ha avuto esito positivo, `PutEvents` restituirà una risposta HTTP 200, anche se una o più voci non sono riuscite. `PutEvents`restituisce il numero di immissioni non riuscite nel `FailedEntryCount` campo.

Step Functions verifica se `FailedEntryCount` è maggiore di zero. Se è maggiore di zero, Step Functions non riporta lo stato con l'errore`EventBridge.FailedEntry`. Ciò consente di utilizzare la gestione degli errori integrata di Step Functions sugli stati delle attività per rilevare o riprovare in caso di immissioni non riuscite, anziché dover utilizzare uno stato aggiuntivo per analizzare i risultati `FailedEntryCount` della risposta.

**Nota**  
Se hai implementato l'idempotenza e puoi riprovare in sicurezza su tutte le voci, puoi utilizzare la logica di riprova di Step Functions. Step Functions non rimuove le voci riuscite dall'array `PutEvents` di input prima di riprovare. Riprova invece con l'array di voci originale. 

## Politiche IAM per le chiamate EventBridge
<a name="eventbridge-iam"></a>

I seguenti modelli di esempio mostrano come AWS Step Functions generare politiche IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

### `PutEvents`
<a name="eventbridge-iam-listconnections"></a>

*Risorse statiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "events:PutEvents"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:event-bus/my-project-eventbus"
            ],
            "Effect": "Allow"
        }
    ]
}
```

*Risorse dinamiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "events:PutEvents"
            ],
            "Resource": "arn:aws:events:*:*:event-bus/*"
        }
    ]
}
```

# Inizia un AWS Glue lavoro con Step Functions
<a name="connect-glue"></a>

Impara a usare Step Functions per avviare un jobAWS Glue. Questa pagina elenca le azioni API supportate e fornisce un esempio di `Task` stato per avviare un AWS Glue processo.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

**Caratteristiche principali dell'integrazione ottimizzata AWS Glue**  
Il modello di [Esegui un processo (.sync)](connect-to-resource.md#connect-sync) integrazione è disponibile.
Il `JobName` campo viene estratto dalla richiesta e inserito nella risposta, che normalmente contiene `JobRunID` solo.

Quanto segue include uno `Task` stato che avvia un AWS Glue processo.

```
"Glue StartJobRun": {
      "Type": "Task",
      "Resource": "arn:aws:states:::glue:startJobRun.sync",
      "Arguments": {
        "JobName": "GlueJob-JTrRO5l98qMG"
      },
      "Next": "ValidateOutput"
    },
```

**I parametri in Step Functions sono espressi in PascalCase**  
Anche se l'API del servizio nativo è in CamelCase, ad esempio l'`startSyncExecution`azione API, si specificano parametri PascalCase in, ad esempio:. `StateMachineArn`

## Ottimizzato AWS Glue APIs
<a name="connect-glue-api"></a>
+ [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-runs.html#aws-glue-api-jobs-runs-StartJobRun](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-runs.html#aws-glue-api-jobs-runs-StartJobRun)

## Politiche IAM per le chiamate AWS Glue
<a name="glue-iam"></a>

I seguenti modelli di esempio mostrano come AWS Step Functions generare le politiche IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

AWS Gluenon ha un controllo basato sulle risorse.

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:StartJobRun",
                "glue:GetJobRun",
                "glue:GetJobRuns",
                "glue:BatchStopJobRun"
            ],
            "Resource": "*"
        }
    ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:StartJobRun"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# Inizia a AWS Glue DataBrew lavorare con Step Functions
<a name="connect-databrew"></a>

Scopri come utilizzare l' DataBrew integrazione per aggiungere passaggi di pulizia e normalizzazione dei dati nei flussi di lavoro di analisi e apprendimento automatico con Step Functions.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

Quanto segue include `Task` uno stato che avvia un processo di richiesta-risposta DataBrew.

```
"DataBrew StartJobRun": {
            "Type": "Task",
            "Resource": "arn:aws:states:::databrew:startJobRun",
            "Arguments": {
               "Name": "sample-proj-job-1"
            },
            "Next": "NEXT_STATE"
          },
```

Quanto segue include `Task` uno stato che avvia un processo di sincronizzazione DataBrew .

```
"DataBrew StartJobRun": {
           "Type": "Task",
           "Resource": "arn:aws:states:::databrew:startJobRun.sync",
           "Arguments": {
              "Name": "sample-proj-job-1"
           },
           "Next": "NEXT_STATE"
          },
```

**I parametri in Step Functions sono espressi in PascalCase**  
Anche se l'API del servizio nativo è in CamelCase, ad esempio l'`startSyncExecution`azione API, si specificano parametri PascalCase in, ad esempio:. `StateMachineArn`

## Supportato DataBrew APIs
<a name="connect-databrew-api"></a>
+ `[https://docs.aws.amazon.com/databrew/latest/dg/API_StartJobRun.html](https://docs.aws.amazon.com/databrew/latest/dg/API_StartJobRun.html)`

## Politiche IAM per le chiamate DataBrew
<a name="databrew-iam"></a>

I seguenti modelli di esempio mostrano come AWS Step Functions generare le politiche IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "databrew:startJobRun",
                "databrew:listJobRuns",
                "databrew:stopJobRun"
            ],
            "Resource": [
                "arn:aws:databrew:us-east-1:123456789012:job/*"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "databrew:startJobRun"
            ],
            "Resource": [
                "arn:aws:databrew:us-east-1:123456789012:job/*"
            ]
        }
    ]
}
```

------

# Invoca una AWS Lambda funzione con Step Functions
<a name="connect-lambda"></a>

Scopri come usare Step Functions per richiamare le funzioni Lambda in modo sincrono o asincrono come parte di un'applicazione serverless basata sugli eventi.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

**Caratteristiche principali dell'integrazione Optimized Lambda**  
Il `Payload` campo della risposta viene analizzato da Json in escape a Json.
Se viene sollevata un'eccezione all'interno della funzione Lambda, il Task avrà esito negativo. Per un esempio pratico, vedi[Gestione delle condizioni di errore in una macchina a stati Step Functions](tutorial-handling-error-conditions.md). 

## Lambda ottimizzata APIs
<a name="connect-lambda-api"></a>
+ [https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html)

## Esempi di flussi di lavoro
<a name="connect-lambda-api-examples"></a>

Quanto segue include uno `Task` stato che richiama una funzione Lambda.

```
{  
   "StartAt":"CallLambda",
   "States":{  
      "CallLambda":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::lambda:invoke",
         "Arguments":{  
            "FunctionName":"arn:aws:lambda:region:account-id:function:MyFunction"
         },
         "End":true
      }
   }
}
```

L’esempio seguente include uno stato `Task` che implementa il modello di integrazione del servizio di [callback](connect-to-resource.md#connect-wait-token).

```
{  
   "StartAt":"GetManualReview",
   "States":{  
      "GetManualReview":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::lambda:invoke.waitForTaskToken",
         "Arguments":{  
            "FunctionName":"arn:aws:lambda:region:account-id:function:get-model-review-decision",
            "Payload":{  
               "model":"{% $states.input.my-model %}",
               "TaskToken": "{% $states.context.Task.Token %}"
            },
            "Qualifier":"prod-v1"
         },
         "End":true
      }
   }
}
```

Quando richiami una funzione Lambda, l'esecuzione attenderà il completamento della funzione. Se si richiama la funzione Lambda con un'attività di callback, il timeout del battito cardiaco inizia a contare solo dopo che la funzione Lambda non ha completato l'esecuzione e restituito un risultato. Finché la funzione Lambda è in esecuzione, il timeout del battito cardiaco non viene applicato.

È anche possibile chiamare Lambda in modo asincrono utilizzando il `InvocationType` parametro, come illustrato nell'esempio seguente:

```
{

  "Comment": "A Hello World example of the Amazon States Language using Pass states",
  "StartAt": "Hello",
  "States": {
    "Hello": {
      "Type": "Task",
      "Resource": "arn:aws:states:::lambda:invoke",
      "Arguments": {
        "FunctionName": "arn:aws:lambda:region:account-id:function:echo",
        "InvocationType": "Event"
      },
      "End": true
    }
  }
}
```

**Nota**  
Per le chiamate asincrone delle funzioni Lambda, il periodo di timeout dell'heartbeat inizia immediatamente.

 Quando viene restituito il `Task` risultato, l'output della funzione viene annidato all'interno di un dizionario di metadati. Esempio:

```
{

   "ExecutedVersion":"$LATEST",
   "Payload":"FUNCTION OUTPUT",
   "SdkHttpMetadata":{
      "HttpHeaders":{
         "Connection":"keep-alive",
         "Content-Length":"4",
         "Content-Type":"application/json",
         "Date":"Fri, 26 Mar 2021 07:42:02 GMT",
         "X-Amz-Executed-Version":"$LATEST",
         "x-amzn-Remapped-Content-Length":"0",
         "x-amzn-RequestId":"0101aa0101-1111-111a-aa55-1010aaa1010",
         "X-Amzn-Trace-Id":"root=1-1a1a000a2a2-fe0101aa10ab;sampled=0"
      },
      "HttpStatusCode":200
   },
   "SdkResponseMetadata":{
      "RequestId":"6b3bebdb-9251-453a-ae45-512d9e2bf4d3"
   },
   "StatusCode":200
}
```

## Risorsa funzionale specificata direttamente
<a name="w2aac33c40c13"></a>

In alternativa, puoi richiamare una funzione Lambda specificando l'ARN di una funzione direttamente nel campo «Risorsa». Quando si richiama una funzione Lambda in questo modo, non è possibile `.waitForTaskToken` specificare e il risultato dell'attività contiene solo l'output della funzione.

```
{  
   "StartAt":"CallFunction",
   "States":{  
      "CallFunction": {  
         "Type":"Task",
         "Resource":"arn:aws:lambda:region:account-id:function:HelloFunction",
         "End": true
      }
   }
}
```

Con questa forma di integrazione, la funzione potrebbe avere successo ma inviare una risposta che contiene un `FunctionError` campo. In questo scenario, l'operazione del flusso di lavoro avrà esito negativo.

Puoi richiamare una versione o un alias specifico della funzione Lambda specificando tali opzioni nell'ARN nel campo. `Resource` Vedi quanto segue nella documentazione di Lambda:
+ [Funzione Versioni multiple di AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/versioning-intro.html)
+ [AWS Lambdaalias](https://docs.aws.amazon.com/lambda/latest/dg/aliases-intro.html)

## politiche IAM per le chiamate AWS Lambda
<a name="lambda-iam"></a>

I seguenti modelli di esempio mostrano come AWS Step Functions generare le politiche IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

Nell'esempio seguente, una macchina a stati con due stati di AWS Lambda attività che chiamano `function1` e`function2`, la politica generata automaticamente include l'`lambda:Invoke`autorizzazione per entrambe le funzioni.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Resource": [
                "arn:aws:lambda:us-east-1:123456789012:function:myFn1",
                "arn:aws:lambda:us-east-1:123456789012:function:myFn2"
            ]
        }
    ]
}
```

# Crea un AWS Elemental MediaConvert lavoro con Step Functions
<a name="connect-mediaconvert"></a>

Scopri come utilizzare Step Functions per creare un AWS Elemental MediaConvert lavoro utilizzando l'[https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobspost](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobspost)API.

**Sperimenta con Step Functions e MediaConvert**  
Scopri come utilizzare l'integrazione MediaConvert ottimizzata in un flusso di lavoro che rileva e rimuove le barre di colore SMTPE di lunghezza sconosciuta dall'inizio di un video clip. [https://aws.amazon.com/blogs/media/low-code-workflows-with-aws-elemental-mediaconvert/](https://aws.amazon.com/blogs/media/low-code-workflows-with-aws-elemental-mediaconvert/)

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

**Caratteristiche principali dell'integrazione ottimizzata MediaConvert**  
I modelli di [Richiesta e risposta](connect-to-resource.md#connect-default) integrazione [Esegui un processo (.sync)](connect-to-resource.md#connect-sync) e sono supportati.
Step Functions aggiungerà il seguente tag personalizzato ai MediaConvert lavori: `ManagedByService: AWSStepFunctions`
Non esiste un'ottimizzazione specifica per i modelli di [Attendi una richiamata con Task Token](connect-to-resource.md#connect-wait-token) integrazione.

Quanto segue include uno `Task` stato che invia un MediaConvert lavoro e attende che venga completato.

```
{
    "StartAt": "MediaConvert_CreateJob",
    "States": {
        "MediaConvert_CreateJob": {
        "Type": "Task",
        "Resource": "arn:aws:states:::mediaconvert:createJob.sync",
        "Arguments": {
            "Role": "arn:aws:iam::111122223333:role/Admin",
            "Settings": {
            "OutputGroups": [
                {
                "Outputs": [
                    {
                    "ContainerSettings": {
                        "Container": "MP4"
                    },
                    "VideoDescription": {
                        "CodecSettings": {
                        "Codec": "H_264",
                        "H264Settings": {
                            "MaxBitrate": 1000,
                            "RateControlMode": "QVBR",
                            "SceneChangeDetect": "TRANSITION_DETECTION"
                        }
                        }
                    },
                    "AudioDescriptions": [
                        {
                        "CodecSettings": {
                            "Codec": "AAC",
                            "AacSettings": {
                            "Bitrate": 96000,
                            "CodingMode": "CODING_MODE_2_0",
                            "SampleRate": 48000
                            }
                        }
                        }
                    ]
                    }
                ],
                "OutputGroupSettings": {
                    "Type": "FILE_GROUP_SETTINGS",
                    "FileGroupSettings": {
                    "Destination": "s3://amzn-s3-demo-destination-bucket/"
                    }
                }
                }
            ],
            "Inputs": [
                {
                "AudioSelectors": {
                    "Audio Selector 1": {
                    "DefaultSelection": "DEFAULT"
                    }
                },
                "FileInput": "s3://amzn-s3-demo-bucket/DOC-EXAMPLE-SOURCE_FILE"
                }
            ]
            }
        },
        "End": true
        }
    }
}
```

**I parametri in Step Functions sono espressi in PascalCase**  
Anche se l'API del servizio nativo è in CamelCase, ad esempio l'`startSyncExecution`azione API, si specificano parametri PascalCase in, ad esempio:. `StateMachineArn`

## Ottimizzato MediaConvert APIs
<a name="connect-mediaconvert-api"></a>
+ [https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobspost](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobspost)
  + [Sintassi della richiesta](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-request-body-post-example)
  + Parametri supportati:
    + [https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-createjobrequest-role](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-createjobrequest-role) (Obbligatorio)
    + [https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-createjobrequest-settings](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-createjobrequest-settings) (Obbligatorio)
    + [https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-model-createjobrequest](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-model-createjobrequest) (facoltativo).
  + [Sintassi della risposta](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-response-examples)**: vedi schema CreateJobResponse **

## Politiche IAM per le chiamate AWS Elemental MediaConvert
<a name="mediaconvert-iam"></a>

I seguenti modelli di esempio mostrano come AWS Step Functions generare le politiche IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

La policy `GetJob` e le `CancelJob` azioni IAM hanno lo scopo di consentire l'accesso solo ai lavori con il `ManagedByService: AWSStepFunctions` tag.

**Politica basata su tag**  
La modifica del `ManagedByService: AWSStepFunctions` tag generato automaticamente causerà il fallimento delle esecuzioni delle macchine a stati.

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "MediaConvertCreateJob",
            "Effect": "Allow",
            "Action": [
                "mediaconvert:CreateJob"
            ],
            "Resource": [
                "arn:aws:mediaconvert:us-east-1:123456789012:queues/*",
                "arn:aws:mediaconvert:us-east-1:123456789012:jobTemplates/*",
                "arn:aws:mediaconvert:us-east-1:123456789012:presets/*"
            ]
        },
        {
            "Sid": "MediaConvertManageJob",
            "Effect": "Allow",
            "Action": [
                "mediaconvert:GetJob",
                "mediaconvert:CancelJob"
            ],
            "Resource": "arn:aws:mediaconvert:us-east-1:123456789012:jobs/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/ManagedByService": "AWSStepFunctions"
                }
            }
        },
        {
            "Sid": "IamPassRole",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRoleName"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": [
                        "mediaconvert.amazonaws.com"
                    ]
                }
            }
        }, 
        {
            "Sid": "EventBridgeManageRule",
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForMediaConvertJobRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "MediaConvertCreateJob",
            "Effect": "Allow",
            "Action": [
                "mediaconvert:CreateJob"
            ],
            "Resource": [
                "arn:aws:mediaconvert:us-east-1:123456789012:queues/*",
                "arn:aws:mediaconvert:us-east-1:123456789012:jobTemplates/*",
                "arn:aws:mediaconvert:us-east-1:123456789012:presets/*"
            ]
        },
        {
            "Sid": "IamPassRole",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRoleName"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": [
                        "mediaconvert.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

# Crea e gestisci lavori Amazon SageMaker AI con Step Functions
<a name="connect-sagemaker"></a>

Scopri come utilizzare Step Functions per creare e gestire lavori sull' SageMaker intelligenza artificiale. Questa pagina elenca le azioni API SageMaker AI supportate e fornisce esempi di `Task` stati per creare processi di trasformazione, formazione, etichettatura ed elaborazione dell' SageMaker IA.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

**Caratteristiche principali dell'integrazione SageMaker AI ottimizzata**  
Il modello di [Esegui un processo (.sync)](connect-to-resource.md#connect-sync) integrazione è supportato.
Non esistono ottimizzazioni specifiche per il modello di [Richiesta e risposta](connect-to-resource.md#connect-default) integrazione.
Il modello di [Attendi una richiamata con Task Token](connect-to-resource.md#connect-wait-token) integrazione non è supportato.

## SageMaker AI ottimizzata APIs
<a name="connect-sagemaker-api"></a>
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpointConfig.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateHyperParameterTuningJob.html)- Supporta il modello di `.sync` integrazione.
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateLabelingJob.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateLabelingJob.html)- Supporta il modello di `.sync` integrazione.
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateModel.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateProcessingJob.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateProcessingJob.html)- Supporta il modello di `.sync` integrazione.
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html)- Supporta il modello di `.sync` integrazione.
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTransformJob.html)- Supporta il modello di `.sync` integrazione.
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpoint.html)

**Nota**  
AWS Step Functionsnon creerà automaticamente una politica per`CreateTransformJob`. Devi allegare una policy inline al ruolo creato. Per ulteriori informazioni, consulta questo esempio di politica IAM:[`CreateTrainingJob`](#sagemaker-iam-createtrainingjob).

## SageMaker Esempio di lavoro con AI Transform
<a name="sagemaker-example-transform"></a>

Quanto segue include uno `Task` stato che crea un processo di trasformazione Amazon SageMaker AI, specificando la posizione `DataSource` Amazon S3 per e. `TransformOutput`

```
{
"SageMaker CreateTransformJob": {
  "Type": "Task",
  "Resource": "arn:aws:states:::sagemaker:createTransformJob.sync",
  "Arguments": {
    "ModelName": "SageMakerCreateTransformJobModel-9iFBKsYti9vr",
    "TransformInput": {
      "CompressionType": "None",
      "ContentType": "text/csv",
      "DataSource": {
        "S3DataSource": {
          "S3DataType": "S3Prefix",
          "S3Uri": "s3://amzn-s3-demo-source-bucket1/TransformJobDataInput.txt"
        }
      }
    },
    "TransformOutput": {
      "S3OutputPath": "s3://amzn-s3-demo-source-bucket1/TransformJobOutputPath"
    },
    "TransformResources": {
      "InstanceCount": 1,
      "InstanceType": "ml.m4.xlarge"
    },
    "TransformJobName": "sfn-binary-classification-prediction"
  },
  "Next": "ValidateOutput"
},
```

## SageMaker Esempio di lavoro di AI Training
<a name="sagemaker-example-training"></a>

Quanto segue include uno `Task` stato che crea un processo di formazione Amazon SageMaker AI.

```
{  
   "SageMaker CreateTrainingJob":{  
      "Type":"Task",
      "Resource":"arn:aws:states:::sagemaker:createTrainingJob.sync",
      "Arguments":{  
         "TrainingJobName":"search-model",
         "ResourceConfig":{  
            "InstanceCount":4,
            "InstanceType":"ml.c4.8xlarge",
            "VolumeSizeInGB":20
         },
         "HyperParameters":{  
            "mode":"batch_skipgram",
            "epochs":"5",
            "min_count":"5",
            "sampling_threshold":"0.0001",
            "learning_rate":"0.025",
            "window_size":"5",
            "vector_dim":"300",
            "negative_samples":"5",
            "batch_size":"11"
         },
         "AlgorithmSpecification":{  
            "TrainingImage":"...",
            "TrainingInputMode":"File"
         },
         "OutputDataConfig":{  
            "S3OutputPath":"s3://amzn-s3-demo-destination-bucket1/doc-search/model"
         },
         "StoppingCondition":{  
            "MaxRuntimeInSeconds":100000
         },
         "RoleArn":"arn:aws:iam::account-id:role/docsearch-stepfunction-iam-role",
         "InputDataConfig":[  
            {  
               "ChannelName":"train",
               "DataSource":{  
                  "S3DataSource":{  
                     "S3DataType":"S3Prefix",
                     "S3Uri":"s3://amzn-s3-demo-destination-bucket1/doc-search/interim-data/training-data/",
                     "S3DataDistributionType":"FullyReplicated"
                  }
               }
            }
         ]
      },
      "Retry":[  
         {  
            "ErrorEquals":[  
               "SageMaker.AmazonSageMakerException"
            ],
            "IntervalSeconds":1,
            "MaxAttempts":100,
            "BackoffRate":1.1
         },
         {  
            "ErrorEquals":[  
               "SageMaker.ResourceLimitExceededException"
            ],
            "IntervalSeconds":60,
            "MaxAttempts":5000,
            "BackoffRate":1
         },
         {  
            "ErrorEquals":[  
               "States.Timeout"
            ],
            "IntervalSeconds":1,
            "MaxAttempts":5,
            "BackoffRate":1
         }
      ],
      "Catch":[  
         {  
            "ErrorEquals":[  
               "States.ALL"
            ],
            "Next":"Sagemaker Training Job Error"
         }
      ],
      "Next":"Delete Interim Data Job"
   }
}
```

## SageMaker Esempio di lavoro di etichettatura AI
<a name="sagemaker-example-labeling"></a>

Quanto segue include uno `Task` stato che crea un processo di etichettatura Amazon SageMaker AI.

```
{
  "StartAt": "SageMaker CreateLabelingJob",
  "TimeoutSeconds": 3600,
  "States": {
    "SageMaker CreateLabelingJob": {
      "Type": "Task",
      "Resource": "arn:aws:states:::sagemaker:createLabelingJob.sync",
      "Arguments": {
        "HumanTaskConfig": {
          "AnnotationConsolidationConfig": {
            "AnnotationConsolidationLambdaArn": "arn:aws:lambda:region:123456789012:function:ACS-TextMultiClass"
          },
          "NumberOfHumanWorkersPerDataObject": 1,
          "PreHumanTaskLambdaArn": "arn:aws:lambda:region:123456789012:function:PRE-TextMultiClass",
          "TaskDescription": "Classify the following text",
          "TaskKeywords": [
            "tc",
            "Labeling"
          ],
          "TaskTimeLimitInSeconds": 300,
          "TaskTitle": "Classify short bits of text",
          "UiConfig": {
            "UiTemplateS3Uri": "s3://amzn-s3-demo-bucket/TextClassification.template"
          },
          "WorkteamArn": "arn:aws:sagemaker:region:123456789012:workteam/private-crowd/ExampleTesting"
        },
        "InputConfig": {
          "DataAttributes": {
            "ContentClassifiers": [
              "FreeOfPersonallyIdentifiableInformation",
              "FreeOfAdultContent"
            ]
          },
          "DataSource": {
            "S3DataSource": {
              "ManifestS3Uri": "s3://amzn-s3-demo-bucket/manifest.json"
            }
          }
        },
        "LabelAttributeName": "Categories",
        "LabelCategoryConfigS3Uri": "s3://amzn-s3-demo-bucket/labelcategories.json",
        "LabelingJobName": "example-job-name",
        "OutputConfig": {
          "S3OutputPath": "s3://amzn-s3-demo-bucket/output"
        },
        "RoleArn": "arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole",
        "StoppingConditions": {
          "MaxHumanLabeledObjectCount": 10000,
          "MaxPercentageOfInputDatasetLabeled": 100
        }
      },
      "Next": "ValidateOutput"
    },
    "ValidateOutput": {
        "Type": "Choice",
        "Choices": [
            {
                "Next": "Success",
                "Condition": "{% $states.input.LabelingJobArn != '' %}"
            }
        ],
        "Default": "Fail"
        },
        "Success": {
            "Type": "Succeed"
        },
        "Fail": {
            "Type": "Fail",
            "Error": "InvalidOutput",
            "Cause": "Output is not what was expected. This could be due to a service outage or a misconfigured service integration."
        }
    }
}
```

## SageMaker Esempio di lavoro di elaborazione AI
<a name="sagemaker-example-processing"></a>

Quanto segue include uno `Task` stato che crea un processo di elaborazione Amazon SageMaker AI.

```
{
  "StartAt": "SageMaker CreateProcessingJob Sync",
  "TimeoutSeconds": 3600,
  "States": {
    "SageMaker CreateProcessingJob Sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::sagemaker:createProcessingJob.sync",
      "Arguments": {
        "AppSpecification": {
          "ImageUri": "737474898029.dkr.ecr.sa-east-1.amazonaws.com/sagemaker-scikit-learn:0.20.0-cpu-py3"
        },
        "ProcessingResources": {
          "ClusterConfig": {
            "InstanceCount": 1,
            "InstanceType": "ml.t3.medium",
            "VolumeSizeInGB": 10
          }
        },
        "RoleArn": "arn:aws:iam::account-id:role/SM-003-CreateProcessingJobAPIExecutionRole",
        "ProcessingJobName.$": "$.id"
      },
      "Next": "ValidateOutput"
    },
    "ValidateOutput": {
      "Type": "Choice",
      "Choices": [
        {
          "Not": {
            "Variable": "$.ProcessingJobArn",
            "StringEquals": ""
          },
          "Next": "Succeed"
        }
      ],
      "Default": "Fail"
    },
    "Succeed": {
      "Type": "Succeed"
    },
    "Fail": {
      "Type": "Fail",
      "Error": "InvalidConnectorOutput",
      "Cause": "Connector output is not what was expected. This could be due to a service outage or a misconfigured connector."
    }
  }
}
```

## Politiche IAM per le chiamate ad Amazon SageMaker AI
<a name="sagemaker-iam"></a>

I seguenti modelli di esempio mostrano come AWS Step Functions generare politiche IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

**Nota**  
Per questi esempi, fai `roleArn` riferimento all'Amazon Resource Name (ARN) del ruolo IAM che l' SageMaker intelligenza artificiale utilizza per accedere agli artefatti del modello e alle immagini docker per la distribuzione su istanze di calcolo ML o per lavori di trasformazione in batch. Per ulteriori informazioni, consulta [Amazon SageMaker Roles](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html).

### `CreateTrainingJob`
<a name="sagemaker-iam-createtrainingjob"></a>

*Risorse statiche*

------
#### [ Run a Job (.sync) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTrainingJob",
        "sagemaker:DescribeTrainingJob",
        "sagemaker:StopTrainingJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:training-job/myJobName*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:PutTargets",
        "events:PutRule",
        "events:DescribeRule"
      ],
      "Resource": [
        "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForSageMakerTrainingJobsRule"
      ]
    }
  ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTrainingJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:training-job/myJobName*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    }
  ]
}
```

------

*Risorse dinamiche*

------
#### [ .sync or .waitForTaskToken ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTrainingJob",
        "sagemaker:DescribeTrainingJob",
        "sagemaker:StopTrainingJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:training-job/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:PutTargets",
        "events:PutRule",
        "events:DescribeRule"
      ],
      "Resource": [
        "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForSageMakerTrainingJobsRule"
      ]
    }
  ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTrainingJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:training-job/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    }
  ]
}
```

------

### `CreateTransformJob`
<a name="sagemaker-iam-createtransformjob"></a>

**Nota**  
AWS Step Functionsnon creerà automaticamente una policy per `CreateTransformJob` quando crei una macchina a stati che si integra con l' SageMaker intelligenza artificiale. È necessario allegare una policy in linea al ruolo creato sulla base di uno dei seguenti esempi IAM.

*Risorse statiche*

------
#### [ Run a Job (.sync) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTransformJob",
        "sagemaker:DescribeTransformJob",
        "sagemaker:StopTransformJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:transform-job/myJobName*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:PutTargets",
        "events:PutRule",
        "events:DescribeRule"
      ],
      "Resource": [
        "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForSageMakerTransformJobsRule"
      ]
    }
  ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTransformJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:transform-job/myJobName*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    }
  ]
}
```

------

*Risorse dinamiche*

------
#### [ Run a Job (.sync) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTransformJob",
        "sagemaker:DescribeTransformJob",
        "sagemaker:StopTransformJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:transform-job/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:PutTargets",
        "events:PutRule",
        "events:DescribeRule"
      ],
      "Resource": [
        "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForSageMakerTransformJobsRule"
      ]
    }
  ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTransformJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:transform-job/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    }
  ]
}
```

------

# Pubblica messaggi su un argomento Amazon SNS con Step Functions
<a name="connect-sns"></a>

Scopri come usare Step Functions per pubblicare messaggi su un argomento di Amazon SNS. Questa pagina elenca le azioni API di Amazon SNS supportate e fornisce esempi di `Task` stati per pubblicare messaggi su Amazon SNS.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

**Caratteristiche principali dell'integrazione ottimizzata di Amazon SNS**  
Non esistono ottimizzazioni specifiche per i modelli [Richiesta e risposta](connect-to-resource.md#connect-default) di [Attendi una richiamata con Task Token](connect-to-resource.md#connect-wait-token) integrazione.

Quanto segue include uno `Task` stato che pubblica su un argomento di Amazon Simple Notification Service (Amazon SNS).

```
{
 "StartAt": "Publish to SNS",
 "States": {
   "Publish to SNS": {
     "Type": "Task",
     "Resource": "arn:aws:states:::sns:publish",
     "Arguments": {
       "TopicArn": "arn:aws:sns:region:account-id:myTopic",
       "Message": "{% states.input.message %}",
       "MessageAttributes": {
         "my_attribute_no_1": {
           "DataType": "String",
           "StringValue": "value of my_attribute_no_1"
         },
         "my_attribute_no_2": {
           "DataType": "String",
           "StringValue": "value of my_attribute_no_2"
         }
       }
     },
     "End": true
    }
  }
}
```

**Passaggio di valori dinamici**. Puoi modificare l'esempio precedente per passare dinamicamente un attributo da questo payload JSON:

```
{
  "message": "Hello world",
  "SNSDetails": {
    "attribute1": "some value",
    "attribute2": "some other value",
  }
}
```

Quanto segue imposta i valori utilizzando JSONata le espressioni per i campi: `StringValue`

```
"MessageAttributes": {
  "my_attribute_no_1": {
      "DataType": "String",
      "StringValue": "{% $states.input.SNSDetails.attribute1 %}"
  },
  "my_attribute_no_2": {
      "DataType": "String",
      "StringValue": "{% $states.input.SNSDetails.attribute2 %}"
  }
```

Quanto segue include uno `Task` stato che pubblica su un argomento di Amazon SNS e quindi attende la restituzione del token dell'attività. Per informazioni, consulta [Attendi una richiamata con Task Token](connect-to-resource.md#connect-wait-token).

```
{  
   "StartAt":"Send message to SNS",
   "States":{  
      "Send message to SNS":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::sns:publish.waitForTaskToken",
         "Arguments":{  
            "TopicArn":"arn:aws:sns:region:account-id:myTopic",
            "Message":{  
               "Input":"{% states.input.message %}",
               "TaskToken": "{% $states.context.Task.Token %}"
            }
         },
         "End":true
      }
   }
}
```

## Amazon SNS ottimizzato APIs
<a name="connect-sns-api"></a>
+ [https://docs.aws.amazon.com/sns/latest/api/API_Publish.html](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html)

**I parametri in Step Functions sono espressi in PascalCase**  
Anche se l'API del servizio nativo è in CamelCase, ad esempio l'`startSyncExecution`azione API, si specificano parametri PascalCase in, ad esempio:. `StateMachineArn`

**Quota per i dati di input o di risultato**  
Quando si inviano o si ricevono dati tra servizi, l'input o il risultato massimo per un'attività è di 256 KB di dati come stringa con codifica UTF-8. Per informazioni, consulta [Quote relative alle esecuzioni di macchine a stati](service-quotas.md#service-limits-state-machine-executions).

## Politiche IAM per le chiamate ad Amazon SNS
<a name="sns-iam"></a>

I seguenti modelli di esempio mostrano come AWS Step Functions generare le politiche IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

*Risorse statiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": [
                "arn:aws:sns:us-east-1:123456789012:myTopicName"
            ]
        }
    ]
}
```

*Risorse basate su un percorso o che pubblicano in `TargetArn` o `PhoneNumber`*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": "*"
        }
    ]
}
```

# Invia messaggi a una coda Amazon SQS con Step Functions
<a name="connect-sqs"></a>

Puoi inviare messaggi a una coda Amazon SQS utilizzando le seguenti azioni API Amazon SQS e un codice di stato di esempio `Task` per i flussi di lavoro Step Functions.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

Per ulteriori informazioni sulla ricezione di messaggi in Amazon SQS, consulta Receive [and Delete Your Message](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/step-receive-delete-message.html) nella *Amazon Simple Queue Service* Developer Guide.

L'esempio seguente include uno `Task` state (JSONata) che invia un messaggio Amazon Simple Queue Service (Amazon SQS) con opzione: **MessageAttributes**

```
{
 "StartAt": "Send to SQS",
 "States": {
   "Send to SQS": {
     "Type": "Task",
     "Resource": "arn:aws:states:::sqs:sendMessage",
     "Arguments": {
       "QueueUrl": "https://sqs.us-east-1.amazonaws.com/account-id/myQueue",
       "MessageBody": "{% $states.input.message %}",
       "MessageAttributes": {
         "my_attribute_no_1": {
           "DataType": "String",
           "StringValue": "attribute1"
         },
         "my_attribute_no_2": {
           "DataType": "String",
           "StringValue": "attribute2"
         }
       }
     },
     "End": true
    }
  }
}
```

La seguente macchina a stati include uno `Task` stato che pubblica su una coda Amazon SQS e quindi attende la restituzione del token dell'attività. Per informazioni, consulta [Attendi una richiamata con Task Token](connect-to-resource.md#connect-wait-token).

```
{  
   "StartAt":"Send message to SQS",
   "States":{  
      "Send message to SQS":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::sqs:sendMessage.waitForTaskToken",
         "Arguments":{  
            "QueueUrl":"https://sqs.us-east-1.amazonaws.com/account-id/myQueue",
            "MessageBody":{  
               "Input" : "{% $states.input.message %}",
               "MyTaskToken" : "{% $states.context.Task.Token %}"
            }
         },
         "End":true
      }
   }
}
```

## Amazon SQS ottimizzato APIs
<a name="connect-sqs-api"></a>
+ [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)

**I parametri in Step Functions sono espressi in PascalCase**  
Anche se l'API del servizio nativo è in CamelCase, ad esempio l'`startSyncExecution`azione API, si specificano parametri PascalCase in, ad esempio:. `StateMachineArn`

**Quota per i dati di input o di risultato**  
Quando si inviano o si ricevono dati tra servizi, l'input o il risultato massimo per un'attività è di 256 KB di dati come stringa con codifica UTF-8. Per informazioni, consulta [Quote relative alle esecuzioni di macchine a stati](service-quotas.md#service-limits-state-machine-executions).

## Politiche IAM per le chiamate ad Amazon SQS
<a name="sqs-iam"></a>

I seguenti modelli di esempio mostrano come AWS Step Functions generare le politiche IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

*Risorse statiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sqs:SendMessage"
            ],
            "Resource": [
                "arn:aws:sqs:us-east-1:123456789012:myQueueName"
            ]
        }
    ]
}
```

*Risorse dinamiche*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sqs:SendMessage"
            ],
            "Resource": "*"
        }
    ]
}
```

# Avvia una nuova macchina a AWS Step Functions stati da un'esecuzione in esecuzione
<a name="connect-stepfunctions"></a>

Step Functions si integra con la propria API come integrazione di servizi. Scopri come usare Step Functions per avviare una nuova esecuzione di una macchina a stati direttamente dallo stato dell'attività di un'esecuzione in esecuzione. Durante la creazione di nuovi flussi di lavoro, utilizza le [ esecuzioni di flusso di lavoro nidificate](concepts-nested-workflows.md) per ridurre la complessità dei flussi di lavoro principali e riutilizzare i processi comuni.

**Caratteristiche principali dell'integrazione Optimized Step Functions**  
Il modello di [Esegui un processo (.sync)](connect-to-resource.md#connect-sync) integrazione è disponibile.

Per ulteriori informazioni, consulta gli argomenti seguenti:
+ [Inizia da un'attività](concepts-nested-workflows.md)
+ [Integrazione dei servizi ](integrate-services.md)
+ [Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md)

## Step Functions ottimizzate APIs
<a name="connect-stepfunctions-api"></a>
+ [https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)

## Esempi di flussi di lavoro
<a name="connect-stepfunctions-api-examples"></a>

Di seguito è incluso uno stato `Task` che avvia l'esecuzione di un'altra macchina a stati e ne attende il completamento.

```
{  
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution.sync:2",
   "Arguments":{  
      "Input":{
        "Comment": "Hello world!"
       },
      "StateMachineArn":"arn:aws:states:region:account-id:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

Di seguito è incluso uno stato `Task` che avvia l'esecuzione di un'altra macchina a stati.

```
{  
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution",
   "Arguments":{  
      "Input":{
        "Comment": "Hello world!"
       },
      "StateMachineArn":"arn:aws:states:region:account-id:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

L’esempio seguente include uno stato `Task` che implementa il modello di integrazione del servizio di [callback](connect-to-resource.md#connect-wait-token).

```
{ 
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution.waitForTaskToken",
   "Arguments":{ 
      "Input":{
        "Comment": "Hello world!",
        "token": "{% $states.context.Task.Token %}"
       },
      "StateMachineArn":"arn:aws:states:region:account-id:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

Per associare un'esecuzione annidata del workflow all'esecuzione principale che l'ha avviata, passate un parametro con nome speciale che include l'ID di esecuzione estratto dall'oggetto [Context](input-output-contextobject.md). Quando si avvia un'esecuzione nidificata, utilizza un parametro denominato `AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID`. Passa l'ID di esecuzione e fai riferimento all'ID nell'oggetto Context con. `$states.context.Execution.Id` Per ulteriori informazioni, consulta [Accesso all'oggetto Context](input-output-contextobject.md#contextobject-access).

```
{  
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution.sync",
   "Arguments":{  
      "Input":{
        "Comment": "Hello world!",
        "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID": "{% $states.context.Execution.Id %}"
       },
      "StateMachineArn":"arn:aws:states:region:account-id:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

 Le macchine a stato nidificato restituiscono quanto segue: 


| Risorsa | Output | 
| --- | --- | 
| startExecution.sync | Stringa | 
| startExecution.sync:2 | JSON | 

Entrambi attenderanno il completamento della macchina a stati nidificati, ma restituiscono formati `Output` diversi. Ad esempio, se crei una funzione Lambda che restituisce l'oggetto`{ "MyKey": "MyValue" }`, otterrai le seguenti risposte:

Per startExecution.sync:

```
{
   <other fields>
   "Output": "{ \"MyKey\": \"MyValue\" }" 
}
```

Per startExecution.sync:2:

```
{
   <other fields> 
   "Output": {
      "MyKey": "MyValue"
   }
}
```

### Configurazione delle autorizzazioni IAM per macchine a stati annidate
<a name="nested-stepfunctions-iam-permissions"></a>

Una macchina a stati principale determina se una macchina a stati figlio ha completato l'esecuzione utilizzando polling ed eventi. Il polling richiede l'autorizzazione `states:DescribeExecution` mentre gli eventi inviati EventBridge a Step Functions richiedono le autorizzazioni per `events:PutTargets``events:PutRule`, e. `events:DescribeRule` Se nel tuo ruolo IAM mancano queste autorizzazioni, potrebbe verificarsi un ritardo prima che una macchina a stati principale venga a conoscenza del completamento dell'esecuzione della macchina a stati secondari.

Per una macchina a stati che richiede `StartExecution` l'esecuzione di un singolo flusso di lavoro annidato, utilizza una policy IAM che limiti le autorizzazioni a quella macchina a stati. 

## Politiche IAM per chiamare flussi di lavoro Step Functions annidati
<a name="stepfunctions-iam"></a>

Per una macchina a stati che richiede `StartExecution` l'esecuzione di un singolo flusso di lavoro nidificato, utilizza una policy IAM che limiti le autorizzazioni a quella macchina a stati. 

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "states:StartExecution"
            ],
            "Resource": [
                "arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachineName"
            ]
        }
    ]
}
```

Per ulteriori informazioni, consulta gli argomenti seguenti:
+ [Integrazione dei servizi con Step Functions](integrate-services.md)
+ [Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md)
+ [Avvia una nuova macchina a AWS Step Functions stati da un'esecuzione in esecuzione](#connect-stepfunctions)

------
#### [ Synchronous ]<a name="sync-async-iam-policies"></a>

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "states:StartExecution"
            ],
            "Resource": [
                "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "states:DescribeExecution",
                "states:StopExecution"
            ],
            "Resource": [
               "arn:aws:states:us-east-1:123456789012:execution:myStateMachineName:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
               "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForStepFunctionsExecutionRule"
            ]
        }
    ]
}
```

------
#### [ Asynchronous ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "states:StartExecution"
            ],
            "Resource": [
                "arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachineName"
            ]
        }
    ]
}
```

------

**Tipi di ARN richiesti**  
Nella politica per **Synchronous**, si noti che `states:StartExecution` richiede un ARN per una macchina a stati `states:DescribeExecution` mentre `states:StopExecution` e richiede un ARN di esecuzione.  
Se combini erroneamente tutte e tre le azioni, il JSON sarà valido ma la policy IAM non sarà corretta. Una policy errata può causare problemi di and/or accesso ai flussi di lavoro bloccati durante l'esecuzione del flusso di lavoro.

Per ulteriori informazioni sulle esecuzioni di flussi di lavoro nidificati, consulta [Avvia le esecuzioni del flusso di lavoro da uno stato di attività in Step Functions](concepts-nested-workflows.md).