

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

# Crea 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).