

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Criar e gerenciar clusters do Amazon EKS com o Step Functions
<a name="connect-eks"></a>

Saiba como integrar o Step Functions ao Amazon EKS para gerenciar clusters do Kubernetes. O Step Functions fornece dois tipos de integração de serviços APIs para integração com o Amazon Elastic Kubernetes Service. Uma delas permite que você use o Amazon EKS APIs para criar e gerenciar um cluster do Amazon EKS. A outra permite que você interaja com seu cluster usando a API Kubernetes e execute trabalhos como parte do fluxo de trabalho do seu aplicativo.

 Você pode usar as integrações da API do Kubernetes com clusters do Amazon EKS criados usando Step Functions, com clusters do Amazon EKS criados pela ferramenta **eksctl** ou pelo [console do Amazon EKS](https://console.aws.amazon.com/eks/home) ou métodos similares. Para obter mais informações, consulte [Criação de um cluster para o Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) no Guia do usuário do Amazon EKS.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

**Principais recursos da integração otimizada ao Amazon EKS**  
O padrão de integração [Executar um trabalho (.sync)](connect-to-resource.md#connect-sync) é compatível.
Não há otimizações específicas para o padrão de integração [Resposta de solicitação](connect-to-resource.md#connect-default).
O padrão de integração [Aguardar um retorno de chamada com um token de tarefa](connect-to-resource.md#connect-wait-token) não é compatível.

**nota**  
A integração do Step Functions EKS oferece suporte somente ao Kubernetes APIs com acesso público ao endpoint. Por padrão, os endpoints do servidor da API de clusters EKS têm acesso público. Para obter mais informações, consulte o [Controle de acesso ao endpoint do cluster do Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) no **Guia do Usuário do Amazon EKS**.

O Step Functions não encerra automaticamente um cluster do Amazon EKS se a execução for interrompida. Se sua máquina de estado parar antes do encerramento do cluster Amazon EKS, seu cluster poderá continuar funcionando indefinidamente e poderá acumular cobranças adicionais. Para evitar isso, certifique-se de que qualquer cluster do Amazon EKS que você criar seja encerrado corretamente. Para obter mais informações, consulte:
+ [Excluir um cluster](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) no Guia do Usuário do Amazon EKS.
+ [Executar um trabalho (.sync)](connect-to-resource.md#connect-sync) nos Padrões de Integração de Serviço.

**Cota para dados de entrada ou resultado**  
Ao enviar ou receber dados entre serviços, o máximo de entrada ou resultado de uma tarefa é 256 KiB de dados como uma string codificada em UTF-8. Consulte [Cotas relacionadas a execuções de máquina de estado](service-quotas.md#service-limits-state-machine-executions).

## Integrações da API do Kubernetes
<a name="connect-eks-kubernetes-apis"></a>

O Step Functions é compatível com os seguintes APIs Kubernetes:

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

A integração do serviço `eks:runJob` permite que você execute um trabalho no cluster do Amazon EKS. A variante `eks:runJob.sync` permite que você aguarde a conclusão do trabalho e, opcionalmente, recupere os registros.

Seu servidor da API do Kubernetes deve conceder permissões para o perfil do IAM usado pela sua máquina de estado. Para obter mais informações, consulte [Permissões](#connect-eks-permissions).

Para o padrão **Executar um trabalho** (`.sync`), o status do trabalho é determinado por meio de pesquisa. O Step Functions pesquisa inicialmente a uma taxa de aproximadamente 1 pesquisa por minuto. Por fim, essa taxa diminui para aproximadamente 1 pesquisa a cada 5 minutos. Se você precisar de pesquisas mais frequentes ou precisar de mais controle sobre a estratégia de pesquisa, poderá usar a integração `eks:call` para consultar o status do trabalho.

A integração `eks:runJob` é específica para `batch/v1` Tarefas no Kubernetes. Para obter mais informações, consulte [Tarefas](https://kubernetes.io/docs/concepts/workloads/controllers/job/) na documentação do Kubernetes. Se você quiser gerenciar outros recursos do Kubernetes, incluindo recursos personalizados, use a integração de serviços `eks:call`. Você pode usar o Step Functions para criar ciclos de pesquisa, conforme demonstrado no projeto de exemplo de [Sondar o status do trabalho com o Lambda e o AWS Batch](sample-project-job-poller.md). 

Os parâmetros compatíveis incluem:
+ `ClusterName`: o nome do cluster do Amazon EKS que você quer chamar.
  + `Type`: `String`
  + Obrigatório: sim
+ `CertificateAuthority`: os dados de certificado codificados em Base64 necessários para se comunicar com o cluster. Você pode obter esse valor no [console do Amazon EKS](https://console.aws.amazon.com/eks/home) ou usando a [DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)API do Amazon EKS.
  + `Type`: `String`
  + Obrigatório: sim
+ `Endpoint`: o URL do endpoint para o servidor da API do Kubernetes. Você pode obter esse valor no [console do Amazon EKS](https://console.aws.amazon.com/eks/home) ou usando a [DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)API do Amazon EKS.
  + `Type`: `String`
  + Obrigatório: sim
+ `Namespace`: o namespace em que a tarefa será executada. Se não for fornecido, o namespace `default` será usado.
  + `Type`: `String`
  + Obrigatório: não
+ `Job`: A definição da Tarefa do Kubernetes. Consulte [Tarefas](https://kubernetes.io/docs/concepts/workloads/controllers/job/) na documentação do Kubernetes. 
  + `Type`: `JSON` ou `String`
  + Obrigatório: sim
+ `LogOptions`: um conjunto de opções para controlar a recuperação opcional de logs. Aplicável somente se o padrão de integração do serviço Executar um trabalho (.sync) for usado para aguardar a conclusão do trabalho.
  + `Type`: `JSON`
  + Obrigatório: não
  + Os registros são incluídos na resposta abaixo da chave `logs`. Pode haver vários pods na tarefa, cada uma com vários contêineres.

    ```
    { 
      ...
      "logs": { 
        "pods": { 
          "pod1": { 
            "containers": { 
              "container1": { 
                "log": <log> 
              },
              ...
            }
          },
          ...
        }
      }
    ```
  + A recuperação do log é realizada com base no melhor esforço. Se houver um erro ao recuperar um log, no lugar do campo `log` estarão os campos `error` e `cause`.
+ `LogOptions.RetrieveLogs`: habilite a recuperação de log após a conclusão da tarefa. Por padrão, os logs não são recuperados.
  + `Type`: `Boolean`
  + Obrigatório: não
+ `LogOptions.RawLogs`: se `RawLogs` for definido como verdadeiro, os logs serão retornados como strings brutas sem a tentativa de analisá-los em JSON. Por padrão, os logs são desserializados em JSON, se possível. Em alguns casos, essa análise pode introduzir alterações indesejadas, como limitação da precisão de números contendo muitos dígitos.
  + `Type`: `Boolean`
  + Obrigatório: não
+ `LogOptions.LogParameters`: a API Read Log da API do Kubernetes é compatível com parâmetros de consulta para controlar a recuperação de logs. Por exemplo, você pode usar `tailLines` ou `limitBytes` para limitar o tamanho dos logs recuperados e permanecer dentro da cota de tamanho de dados do Step Functions. Para obter mais informações, consulte a seção [Log de leitura](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#read-log-pod-v1-core) da Referência da API do Kubernetes.
  + `Type: `Mapa de `String` até `List of Strings`
  + Obrigatório: não
  + Exemplo:

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

O exemplo a seguir inclui um estado `Task` que executa um trabalho, aguarda sua conclusão e, em seguida, recupera os logs do trabalho:

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

A integração do serviço `eks:call` permite que você use a API do Kubernetes para ler e gravar objetos de recursos do Kubernetes por meio de um endpoint da API do Kubernetes. 

Seu servidor da API do Kubernetes deve conceder permissões para o perfil do IAM usado pela sua máquina de estado. Para obter mais informações, consulte [Permissões](#connect-eks-permissions).

Para obter mais informações sobre as operações disponíveis, consulte a [Referência de API do Kubernetes](https://kubernetes.io/docs/reference/kubernetes-api/).

Os parâmetros compatíveis para `Call` incluem:
+ `ClusterName`: o nome do cluster do Amazon EKS que você quer chamar.
  + `Type`: string
  + Obrigatório: Sim
+ `CertificateAuthority`: os dados de certificado codificados em Base64 necessários para se comunicar com o cluster. Você pode obter esse valor no [console do Amazon EKS](https://console.aws.amazon.com/eks/home) ou usando a [DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)API do Amazon EKS.
  + `Type`: `String`
  + Obrigatório: Sim
+ `Endpoint`: o URL do endpoint para o servidor da API do Kubernetes. Você pode encontrar esse valor no [console do Amazon EKS](https://console.aws.amazon.com/eks/home) ou usando a DescribeCluster API do Amazon EKS.
  + `Type`: `String`
  + Obrigatório: Sim
+ `Method`: o método HTTP da sua solicitação. Um destes: `GET`, `POST`, `PUT`, `DELETE`, `HEAD` ou `PATCH`.
  + `Type`: `String`
  + Obrigatório: Sim
+ `Path`: o caminho HTTP da operação da API REST do Kubernetes.
  + `Type`: `String`
  + Obrigatório: Sim
+ `QueryParameters`: os parâmetros de consulta HTTP da operação da API REST do Kubernetes.
  + `Type: `Mapa de `String` até `List of Strings`
  + Obrigatório: não
  + Exemplo:

    ```
    "QueryParameters": {
      "labelSelector": [ "job-name=example-job" ]
    }
    ```
+ `RequestBody`: o corpo da mensagem HTTP da operação da API REST do Kubernetes.
  + `Type`: `JSON` ou `String`
  + Obrigatório: não

Veja a seguir um estado `Task` que utiliza `eks:call` para listar os pods pertencentes à tarefa `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
    }
  }
}
```

Veja a seguir um estado `Task` que utiliza `eks:call` para excluir a tarefa `example-job` e define o `propagationPolicy` para garantir que os pods da tarefa também sejam excluídos.

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

A APIs sintaxe e o Amazon EKS compatíveis incluem:
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html)
  +  [Sintaxe da solicitação](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html#API_CreateCluster_RequestSyntax) 
  +  [Sintaxe da resposta](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html#API_CreateCluster_ResponseSyntax) 

    Quando um cluster do Amazon EKS é criado usando a integração do serviço `eks:createCluster`, o perfil do IAM é adicionado à tabela de autorização de RBAC do Kubernetes como o administrador (com permissões do system:masters). Inicialmente, somente a entidade do IAM pode fazer chamadas para o servidor da API do Kubernetes. Para obter mais informações, consulte:
    + [Gerenciar usuários ou funções do IAM para o seu cluster](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) no *Guia do Usuário do Amazon EKS* 
    + A [Permissões](#connect-eks-permissions) seção 

    O Amazon EKS usa funções vinculadas ao serviço que contém as permissões que o Amazon EKS considera necessárias para chamar outros serviços em seu nome. Se essas funções vinculadas ao serviço ainda não existirem em sua conta, você deverá adicionar a permissão `iam:CreateServiceLinkedRole` ao perfil do IAM usado pelo Step Functions. Para obter mais informações, consulte [Uso de Funções Vinculadas ao Serviço](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) no *Guia do Usuário do Amazon EKS*.

    O perfil do IAM usado pelo Step Functions deve ter permissões `iam:PassRole` para aprovar o perfil do IAM do cluster para o Amazon EKS. Para obter mais informações, consulte o [perfil do IAM do cluster do Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/service_IAM_role.html) no *Guia do Usuário do Amazon EKS*. 
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html)
  +  [Sintaxe da solicitação](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html#API_DeleteCluster_RequestSyntax) 
  +  [Sintaxe da resposta](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html#API_DeleteCluster_ResponseSyntax) 

    Você deve excluir todos os perfis ou grupos de nós do Fargate antes de excluir um cluster.
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html)
  +  [Sintaxe da solicitação](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html#API_CreateFargateProfile_RequestSyntax) 
  +  [Sintaxe da resposta](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html#API_CreateFargateProfile_ResponseSyntax) 

    O Amazon EKS usa funções vinculadas ao serviço que contém as permissões que o Amazon EKS considera necessárias para chamar outros serviços em seu nome. Se essas funções vinculadas ao serviço ainda não existirem em sua conta, você deverá adicionar a permissão `iam:CreateServiceLinkedRole` ao perfil do IAM usado pelo Step Functions. Para obter mais informações, consulte [Uso de Funções Vinculadas ao Serviço](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) no *Guia do Usuário do Amazon EKS*.

    O Amazon EKS no Fargate pode não estar disponível em todas as regiões. Para obter informações sobre a disponibilidade por região, consulte a seção sobre o [Fargate](https://docs.aws.amazon.com/eks/latest/userguide/fargate.html) no *Guia do usuário do Amazon EKS*.

    O perfil do IAM usado pelo Step Functions deve ter permissões `iam:PassRole` para aprovar o perfil do IAM de execução do pod para o Amazon EKS. Para obter mais informações, consulte [Função de execução de pods](https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) no *Guia do Usuário do Amazon EKS*. 
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html)
  +  [Sintaxe da solicitação](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html#API_DeleteFargateProfile_RequestSyntax) 
  +  [Sintaxe da resposta](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)
  +  [Sintaxe da solicitação](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html#API_CreateNodegroup_RequestSyntax) 
  +  [Sintaxe da resposta](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html#API_CreateNodegroup_ResponseSyntax) 

    O Amazon EKS usa funções vinculadas ao serviço que contém as permissões que o Amazon EKS considera necessárias para chamar outros serviços em seu nome. Se essas funções vinculadas ao serviço ainda não existirem em sua conta, você deverá adicionar a permissão `iam:CreateServiceLinkedRole` ao perfil do IAM usado pelo Step Functions. Para obter mais informações, consulte [Uso de Funções Vinculadas ao Serviço](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) no *Guia do Usuário do Amazon EKS*. 

    O perfil do IAM usado pelo Step Functions deve ter permissões `iam:PassRole` para aprovar o perfil do IAM do nó para o Amazon EKS. Para obter mais informações, consulte [Uso de Funções Vinculadas ao Serviço](https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html) no *Guia do Usuário do Amazon EKS*.
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html)
  +  [Sintaxe da solicitação](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html#API_DeleteNodegroup_RequestSyntax) 
  +  [Sintaxe da resposta](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html#API_DeleteNodegroup_ResponseSyntax) 

Veja a seguir um `Task` que cria um cluster do 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
    }
  }
}
```

Veja a seguir um estado `Task` que exclui um cluster do Amazon EKS.

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

Veja a seguir um estado `Task` que cria um perfil do 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
    }
  }
}
```

Veja a seguir um estado `Task` que exclui um perfil do Fargate.

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

Veja a seguir um estado `Task` que cria um grupo de nós.

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

Veja a seguir um estado `Task` que exclui um grupo de nós.

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

## Permissões
<a name="connect-eks-permissions"></a>

Quando um cluster do Amazon EKS é criado usando a integração do serviço `eks:createCluster`, o perfil do IAM é adicionado à tabela de autorização RBAC do Kubernetes como o administrador, com permissões do `system:masters`. Inicialmente, somente a entidade do IAM pode fazer chamadas para o servidor da API do Kubernetes. Por exemplo, você não poderá usar o **kubectl** para interagir com seu servidor de API do Kubernetes, a menos que assuma a mesma função da sua máquina de estado Step Functions ou configure o Kubernetes para conceder permissões a entidades adicionais do IAM. Para obter mais informações, consulte [Gerenciar usuários ou funções do IAM para o seu cluster](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) no *Guia do Usuário do Amazon EKS*. 

Você pode adicionar permissão para entidades adicionais do IAM, como usuários ou funções, adicionando-as ao namespace `aws-auth` `ConfigMap` no kube-system. Se você estiver criando seu cluster a partir do Step Functions, use a integração de serviços `eks:call`. 

Veja a seguir um estado `Task` que cria `aws-auth` `ConfigMap` e concede permissão `system:masters` ao usuário `arn:aws:iam::account-id:user/my-user` e ao perfil do IAM`arn:aws:iam::account-id:role/my-role`.

```
{
  "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**  
Você pode ver o ARN de um perfil do IAM exibido em um formato que inclui o caminho **/service-role/**, como `arn:aws:iam::account-id:role/service-role/my-role`. Esse token do caminho **service-role** não deve ser incluído ao listar a função em `aws-auth`

Quando seu cluster for criado pela primeira vez, o `aws-auth` `ConfigMap` não existirá, mas será adicionado automaticamente se você criar um perfil do Fargate. Você pode recuperar o valor atual de`aws-auth`, adicionar as permissões adicionais e `PUT` uma nova versão. Normalmente, é mais fácil criar `aws-auth` antes do perfil do Fargate.

Se seu cluster foi criado fora do Step Functions, você pode configurar o **kubectl** para se comunicar com seu servidor de API do Kubernetes. Em seguida, crie um novo `aws-auth` `ConfigMap` usando `kubectl apply -f aws-auth.yaml` ou edite um que já exista usando`kubectl edit -n kube-system configmap/aws-auth`. Para obter mais informações, consulte:
+  [Crie um kubeconfig para o Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html) no *Guia do Usuário do Amazon EKS*. 
+  [Gerenciar usuários ou funções do IAM para o seu cluster](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) no *Guia do Usuário do Amazon EKS*. 

Se seu perfil do IAM não tiver permissões suficientes no Kubernetes, as integrações dos serviços `eks:call` ou `eks:runJob` falharão com o seguinte erro:

```
Error:
EKS.401

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

## Políticas do IAM para chamar o Amazon EKS
<a name="eks-iam"></a>

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

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

*Recursos*

****  

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

*Recursos*

****  

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

*Recursos*

****  

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

*Recursos*

****  

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

Para ver mais informações sobre o uso do Amazon EKS com o Step Functions, consulte [Criar e gerenciar clusters do Amazon EKS com o Step Functions](#connect-eks).