

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Créez et gérez des clusters Amazon EKS avec Step Functions
<a name="connect-eks"></a>

Découvrez comment intégrer Step Functions à Amazon EKS pour gérer les clusters Kubernetes. Step Functions propose deux types d'intégration de services APIs pour l'intégration à Amazon Elastic Kubernetes Service. L'un d'eux vous permet d'utiliser Amazon EKS APIs pour créer et gérer un cluster Amazon EKS. L'autre vous permet d'interagir avec votre cluster à l'aide de l'API Kubernetes et d'exécuter des tâches dans le cadre du flux de travail de votre application.

 Vous pouvez utiliser les intégrations d'API Kubernetes avec les clusters Amazon EKS créés à l'aide de Step Functions, avec les clusters Amazon EKS créés par **l'outil eksctl ou la** console [Amazon](https://console.aws.amazon.com/eks/home) EKS, ou avec des méthodes similaires. Pour plus d'informations, consultez la section [Création d'un cluster Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) dans le guide de l'utilisateur Amazon EKS.

Pour en savoir plus sur l'intégration aux AWS services dans Step Functions, consultez [Intégration des services ](integrate-services.md) et[Transmission de paramètres à une API de service dans Step Functions](connect-parameters.md).

**Principales fonctionnalités de l'intégration optimisée avec Amazon EKS**  
Le modèle [Exécuter une tâche (.sync)](connect-to-resource.md#connect-sync) d'intégration est pris en charge.
Il n'existe aucune optimisation spécifique pour le modèle [Réponse à la requête](connect-to-resource.md#connect-default) d'intégration.
Le modèle [Attendre un rappel avec un jeton de tâche](connect-to-resource.md#connect-wait-token) d'intégration n'est pas pris en charge.

**Note**  
L'intégration EKS de Step Functions ne prend en charge que Kubernetes APIs avec accès public aux terminaux. Par défaut, les points de terminaison du serveur API des clusters EKS ont un accès public. Pour plus d'informations, consultez la section [Contrôle d'accès aux points de terminaison du cluster Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) dans le **guide de l'utilisateur Amazon EKS**.

Step Functions ne met pas fin automatiquement à un cluster Amazon EKS si l'exécution est arrêtée. Si votre machine d'état s'arrête avant la fin de votre cluster Amazon EKS, celui-ci peut continuer à fonctionner indéfiniment et entraîner des frais supplémentaires. Pour éviter cela, assurez-vous que tout cluster Amazon EKS que vous créez est correctement résilié. Pour en savoir plus, consultez :
+ [Suppression d'un cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) dans le guide de l'utilisateur Amazon EKS.
+ [Exécuter une tâche (.sync)](connect-to-resource.md#connect-sync)dans les modèles d'intégration des services.

**Quota pour les données d'entrée ou de résultat**  
Lors de l'envoi ou de la réception de données entre services, l'entrée ou le résultat maximal pour une tâche est de 256 KiB de données sous forme de chaîne codée en UTF-8. Consultez [Quotas liés aux exécutions par les machines de l'État](service-quotas.md#service-limits-state-machine-executions).

## Intégrations d'API Kubernetes
<a name="connect-eks-kubernetes-apis"></a>

Step Functions prend en charge les Kubernetes APIs suivants :

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

L'intégration des `eks:runJob` services vous permet d'exécuter une tâche sur votre cluster Amazon EKS. La `eks:runJob.sync` variante vous permet d'attendre que le travail soit terminé et, éventuellement, de récupérer les journaux.

Votre serveur d'API Kubernetes doit accorder des autorisations au rôle IAM utilisé par votre machine d'état. Pour de plus amples informations, veuillez consulter [Permissions](#connect-eks-permissions).

Pour le modèle **Run a Job** (`.sync`), le statut de la tâche est déterminé par un sondage. Step Functions interroge initialement à un rythme d'environ 1 sondage par minute. Ce taux finit par ralentir à environ 1 sondage toutes les 5 minutes. Si vous avez besoin d'un sondage plus fréquent ou d'un meilleur contrôle de la stratégie de sondage, vous pouvez utiliser l'`eks:call`intégration pour demander le statut de la tâche.

L'`eks:runJob`intégration est spécifique à `batch/v1` Kubernetes Jobs. Pour plus d'informations, consultez la section [Jobs](https://kubernetes.io/docs/concepts/workloads/controllers/job/) dans la documentation de Kubernetes. Si vous souhaitez gérer d'autres ressources Kubernetes, y compris des ressources personnalisées, utilisez l'`eks:call`intégration de services. Vous pouvez utiliser Step Functions pour créer des boucles d'interrogation, comme le montre l'[Sondage sur le statut du poste avec Lambda et AWS Batch](sample-project-job-poller.md)exemple de projet. 

Les paramètres pris en charge incluent :
+ `ClusterName`: nom du cluster Amazon EKS que vous souhaitez appeler.
  + `Type`: `String`
  + Obligatoire : oui
+ `CertificateAuthority`: les données de certificat codées en Base64 nécessaires pour communiquer avec votre cluster. Vous pouvez obtenir cette valeur depuis la [console Amazon EKS](https://console.aws.amazon.com/eks/home) ou en utilisant l'[DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)API Amazon EKS.
  + `Type`: `String`
  + Obligatoire : oui
+ `Endpoint`: URL du point de terminaison de votre serveur d'API Kubernetes. Vous pouvez obtenir cette valeur depuis la [console Amazon EKS](https://console.aws.amazon.com/eks/home) ou en utilisant l'[DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)API Amazon EKS.
  + `Type`: `String`
  + Obligatoire : oui
+ `Namespace`: espace de noms dans lequel exécuter le job. S'il n'est pas fourni, l'espace de noms `default` est utilisé.
  + `Type`: `String`
  + Obligatoire : non
+ `Job`: définition du Kubernetes Job. Consultez la section [Jobs](https://kubernetes.io/docs/concepts/workloads/controllers/job/) dans la documentation de Kubernetes. 
  + `Type` : `JSON` ou `String`
  + Obligatoire : oui
+ `LogOptions`: ensemble d'options permettant de contrôler la récupération facultative des journaux. Applicable uniquement si le modèle d'intégration du service Run a Job (.sync) est utilisé pour attendre la fin de la tâche.
  + `Type`: `JSON`
  + Obligatoire : non
  + Les journaux sont inclus dans la réponse sous la clé`logs`. La tâche peut comporter plusieurs modules, chacun contenant plusieurs conteneurs.

    ```
    { 
      ...
      "logs": { 
        "pods": { 
          "pod1": { 
            "containers": { 
              "container1": { 
                "log": {{<log> }}
              },
              ...
            }
          },
          ...
        }
      }
    ```
  + La récupération des journaux est effectuée dans la mesure du possible. En cas d'erreur lors de la récupération d'un journal, le `log` champ sera remplacé par les champs `error` et`cause`.
+ `LogOptions.RetrieveLogs`: active la récupération du journal une fois le travail terminé. Par défaut, les journaux ne sont pas récupérés.
  + `Type`: `Boolean`
  + Obligatoire : non
+ `LogOptions.RawLogs`: S'il `RawLogs` est défini sur true, les journaux seront renvoyés sous forme de chaînes brutes sans qu'il soit nécessaire de les analyser en JSON. Par défaut, les journaux sont désérialisés au format JSON si possible. Dans certains cas, une telle analyse peut introduire des modifications indésirables, telles que la limitation de la précision des nombres contenant de nombreux chiffres.
  + `Type`: `Boolean`
  + Obligatoire : non
+ `LogOptions.LogParameters`: L'API Read Log de l'API Kubernetes prend en charge les paramètres de requête pour contrôler la récupération des journaux. Par exemple, vous pouvez utiliser `tailLines` ou `limitBytes` limiter la taille des journaux récupérés tout en respectant le quota de taille des données de Step Functions. Pour plus d'informations, consultez la section [Read Log](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#read-log-pod-v1-core) de la référence des API Kubernetes.
  + `Type: `Carte de `String` à `List of Strings`
  + Obligatoire : non
  + Exemple :

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

L'exemple suivant inclut un `Task` état qui exécute une tâche, attend qu'elle soit terminée, puis extrait les journaux de la tâche :

```
{
  "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'intégration des `eks:call` services vous permet d'utiliser l'API Kubernetes pour lire et écrire des objets de ressources Kubernetes via un point de terminaison d'API Kubernetes. 

Votre serveur d'API Kubernetes doit accorder des autorisations au rôle IAM utilisé par votre machine d'état. Pour de plus amples informations, veuillez consulter [Permissions](#connect-eks-permissions).

Pour plus d'informations sur les opérations disponibles, consultez la référence des API [Kubernetes.](https://kubernetes.io/docs/reference/kubernetes-api/)

Les paramètres pris en charge `Call` incluent :
+ `ClusterName`: nom du cluster Amazon EKS que vous souhaitez appeler.
  + `Type` : chaîne
  + Obligatoire : oui
+ `CertificateAuthority`: les données de certificat codées en Base64 nécessaires pour communiquer avec votre cluster. Vous pouvez obtenir cette valeur depuis la [console Amazon EKS](https://console.aws.amazon.com/eks/home) ou en utilisant l'[DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)API Amazon EKS.
  + `Type`: `String`
  + Obligatoire : oui
+ `Endpoint`: URL du point de terminaison de votre serveur d'API Kubernetes. Vous pouvez trouver cette valeur sur la [console Amazon EKS](https://console.aws.amazon.com/eks/home) ou en utilisant l' DescribeCluster API Amazon EKS.
  + `Type`: `String`
  + Obligatoire : oui
+ `Method`: méthode HTTP de votre requête. Soit `GET`, `POST`, `PUT`, `DELETE`, `HEAD` ou `PATCH`.
  + `Type`: `String`
  + Obligatoire : oui
+ `Path`: chemin HTTP de l'opération de l'API REST de Kubernetes.
  + `Type`: `String`
  + Obligatoire : oui
+ `QueryParameters`: paramètres de requête HTTP de l'opération de l'API REST de Kubernetes.
  + `Type: `Carte de `String` à `List of Strings`
  + Obligatoire : non
  + Exemple :

    ```
    "QueryParameters": {
      "labelSelector": [ "job-name=example-job" ]
    }
    ```
+ `RequestBody`: corps du message HTTP de l'opération de l'API REST de Kubernetes.
  + `Type` : `JSON` ou `String`
  + Obligatoire : non

Ce qui suit inclut un `Task` état qui permet `eks:call` de répertorier les pods appartenant à la tâche`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
    }
  }
}
```

Ce qui suit inclut un `Task` état utilisé `eks:call` pour supprimer la tâche `example-job` et définit le `propagationPolicy` pour garantir que les modules de la tâche sont également supprimés.

```
{
  "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 optimisé APIs
<a name="connect-eks-apis"></a>

Amazon EKS APIs et sa syntaxe pris en charge incluent :
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html)
  +  [Syntaxe de demande](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html#API_CreateCluster_RequestSyntax) 
  +  [Syntaxe de réponse](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html#API_CreateCluster_ResponseSyntax) 

    Lorsqu'un cluster Amazon EKS est créé à l'aide de l'intégration de `eks:createCluster` services, le rôle IAM est ajouté à la table d'autorisation Kubernetes RBAC en tant qu'administrateur (avec les autorisations system:masters). Au départ, seule cette entité IAM peut appeler le serveur d'API Kubernetes. Pour en savoir plus, consultez :
    + [Gestion des utilisateurs ou des rôles IAM pour votre cluster](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) dans le guide de l'*utilisateur Amazon EKS* 
    + La [Permissions](#connect-eks-permissions) section 

    Amazon EKS utilise des rôles liés à un service qui contiennent les autorisations dont Amazon EKS a besoin pour appeler d'autres services en votre nom. Si ces rôles liés à un service n'existent pas déjà dans votre compte, vous devez ajouter l'`iam:CreateServiceLinkedRole`autorisation au rôle IAM utilisé par Step Functions. Pour plus d'informations, consultez la section [Utilisation des rôles liés à un service](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) dans le guide de *l'utilisateur Amazon EKS*.

    Le rôle IAM utilisé par Step Functions doit disposer des `iam:PassRole` autorisations nécessaires pour transmettre le rôle IAM du cluster à Amazon EKS. Pour plus d'informations, consultez le [rôle IAM du cluster Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/service_IAM_role.html) dans le *guide de l'utilisateur Amazon EKS*. 
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html)
  +  [Syntaxe de demande](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html#API_DeleteCluster_RequestSyntax) 
  +  [Syntaxe de réponse](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html#API_DeleteCluster_ResponseSyntax) 

    Vous devez supprimer tous les profils Fargate ou groupes de nœuds avant de supprimer un cluster.
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html)
  +  [Syntaxe de demande](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html#API_CreateFargateProfile_RequestSyntax) 
  +  [Syntaxe de réponse](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html#API_CreateFargateProfile_ResponseSyntax) 

    Amazon EKS utilise des rôles liés à un service qui contiennent les autorisations dont Amazon EKS a besoin pour appeler d'autres services en votre nom. Si ces rôles liés à un service n'existent pas déjà dans votre compte, vous devez ajouter l'`iam:CreateServiceLinkedRole`autorisation au rôle IAM utilisé par Step Functions. Pour plus d'informations, consultez la section [Utilisation des rôles liés à un service](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) dans le guide de *l'utilisateur Amazon EKS*.

    Amazon EKS on Fargate n'est peut-être pas disponible dans toutes les régions. Pour plus d'informations sur la disponibilité des régions, consultez la section sur [Fargate](https://docs.aws.amazon.com/eks/latest/userguide/fargate.html) dans le guide de l'utilisateur *Amazon EKS*.

    Le rôle IAM utilisé par Step Functions doit disposer des `iam:PassRole` autorisations nécessaires pour transmettre le rôle IAM d'exécution du pod à Amazon EKS. Pour plus d'informations, consultez la section [Rôle d'exécution du Pod](https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) dans le *guide de l'utilisateur Amazon EKS*. 
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html)
  +  [Syntaxe de demande](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html#API_DeleteFargateProfile_RequestSyntax) 
  +  [Syntaxe de réponse](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)
  +  [Syntaxe de demande](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html#API_CreateNodegroup_RequestSyntax) 
  +  [Syntaxe de réponse](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html#API_CreateNodegroup_ResponseSyntax) 

    Amazon EKS utilise des rôles liés à un service qui contiennent les autorisations dont Amazon EKS a besoin pour appeler d'autres services en votre nom. Si ces rôles liés à un service n'existent pas déjà dans votre compte, vous devez ajouter l'`iam:CreateServiceLinkedRole`autorisation au rôle IAM utilisé par Step Functions. Pour plus d'informations, consultez la section [Utilisation des rôles liés à un service](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) dans le guide de *l'utilisateur Amazon EKS*. 

    Le rôle IAM utilisé par Step Functions doit disposer des `iam:PassRole` autorisations nécessaires pour transmettre le rôle IAM du nœud à Amazon EKS. Pour plus d'informations, consultez la section [Utilisation des rôles liés à un service](https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html) dans le guide de *l'utilisateur Amazon EKS*.
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html)
  +  [Syntaxe de demande](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html#API_DeleteNodegroup_RequestSyntax) 
  +  [Syntaxe de réponse](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html#API_DeleteNodegroup_ResponseSyntax) 

Ce qui suit inclut un `Task` qui crée 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
    }
  }
}
```

Ce qui suit inclut un `Task` état qui supprime un cluster Amazon EKS.

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

Ce qui suit inclut un `Task` état qui crée un profil 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
    }
  }
}
```

Ce qui suit inclut un `Task` état qui supprime un profil Fargate.

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

Ce qui suit inclut un `Task` état qui crée un groupe de nœuds.

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

Ce qui suit inclut un `Task` état qui supprime un groupe de nœuds.

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

Lorsqu'un cluster Amazon EKS est créé à l'aide de l'intégration de `eks:createCluster` services, le rôle IAM est ajouté à la table d'autorisation Kubernetes RBAC en tant qu'administrateur, avec des autorisations. `system:masters` Au départ, seule cette entité IAM peut appeler le serveur d'API Kubernetes. Par exemple, vous ne pourrez pas utiliser **kubectl pour interagir avec votre serveur d'API Kubernetes**, sauf si vous assumez le même rôle que votre machine d'état Step Functions ou si vous configurez Kubernetes pour accorder des autorisations à des entités IAM supplémentaires. Pour plus d'informations, consultez [la section Gestion des utilisateurs ou des rôles IAM pour votre cluster](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) dans le *guide de l'utilisateur Amazon EKS*. 

Vous pouvez ajouter des autorisations pour des entités IAM supplémentaires, telles que des utilisateurs ou des rôles, en les ajoutant à l'espace de noms `aws-auth` `ConfigMap` in the kube-system. Si vous créez votre cluster à partir de Step Functions, utilisez l'intégration `eks:call` de services. 

Ce qui suit inclut un `Task` état qui crée un `aws-auth` `ConfigMap` et accorde `system:masters` l'autorisation à l'utilisateur `arn:aws:iam::{{account-id}}:user/my-user` et au rôle `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
    }
  }
```

**Note**  
L'ARN d'un rôle IAM peut s'afficher dans un format incluant le chemin **/service-role/**, tel que. `arn:aws:iam::{{account-id}}:role/{{service-role}}/my-role` Ce jeton **de chemin de rôle de service** ne doit pas être inclus lors de la liste du rôle dans. `aws-auth`

Lorsque votre cluster est créé pour la `aws-auth` `ConfigMap` première fois, il n'existera pas, mais sera ajouté automatiquement si vous créez un profil Fargate. Vous pouvez récupérer la valeur actuelle de`aws-auth`, ajouter les autorisations supplémentaires et créer `PUT` une nouvelle version. Il est généralement plus facile de le créer `aws-auth` avant le profil Fargate.

Si votre cluster a été créé en dehors de Step Functions, vous pouvez configurer **kubectl** pour communiquer avec votre serveur d'API Kubernetes. Créez ensuite une nouvelle `aws-auth` `ConfigMap` utilisation `kubectl apply -f aws-auth.yaml` ou modifiez-en une qui existe déjà à l'aide de`kubectl edit -n kube-system configmap/aws-auth`. Pour en savoir plus, consultez :
+  [Créez un kubeconfig pour Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html) dans le guide de l'*utilisateur Amazon EKS*. 
+  [Gestion des utilisateurs ou des rôles IAM pour votre cluster](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) dans le *guide de l'utilisateur Amazon EKS*. 

Si votre rôle IAM ne dispose pas d'autorisations suffisantes dans Kubernetes, les intégrations de `eks:runJob` services `eks:call` ou de services échoueront avec l'erreur suivante :

```
Error:
EKS.401

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

## Politiques IAM pour appeler Amazon EKS
<a name="eks-iam"></a>

Les exemples de modèles suivants montrent comment AWS Step Functions générer des politiques IAM en fonction des ressources contenues dans la définition de votre machine d'état. Pour plus d’informations, consultez [Comment Step Functions génère des politiques IAM pour les services intégrés](service-integration-iam-templates.md) et [Découvrez les modèles d'intégration des services dans Step Functions](connect-to-resource.md).

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

*Ressources*

****  

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

*Ressources*

****  

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

*Ressources*

****  

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

*Ressources*

****  

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

Pour plus d'informations sur l'utilisation d'Amazon EKS avec Step Functions, consultez[Créez et gérez des clusters Amazon EKS avec Step Functions](#connect-eks).