

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

# Amazon EKS
<a name="automation-ref-eks"></a>

 AWS Systems Manager A automação fornece runbooks predefinidos para o Amazon Elastic Kubernetes Service. Para obter informações sobre como usar runbooks, consulte [Trabalhado com runbooks](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-documents.html). Para obter informações sobre como visualizar o conteúdo do runbook, consulte [Exibir conteúdo do runbook](automation-runbook-reference.md#view-automation-json). 

**Topics**
+ [`AWS-CreateEKSClusterWithFargateProfile`](aws-createeksclusterwithfargateprofile.md)
+ [`AWS-CreateEKSClusterWithNodegroup`](aws-createeksclusterwithnodegroup.md)
+ [`AWS-DeleteEKSCluster`](automation-aws-deleteekscluster.md)
+ [`AWS-MigrateToNewEKSSelfManagedNodeGroup`](aws-migratetoneweksselfmanagedlinuxnodegroup.md)
+ [`AWSPremiumSupport-TroubleshootEKSCluster`](automation-awspremiumsupport-troubleshootekscluster.md)
+ [`AWSSupport-TroubleshootEKSWorkerNode`](automation-awssupport-troubleshooteksworkernode.md)
+ [`AWS-UpdateEKSCluster`](automation-updateekscluster.md)
+ [`AWS-UpdateEKSManagedNodeGroup`](aws-updateeksmanagednodegroup.md)
+ [`AWS-UpdateEKSSelfManagedLinuxNodeGroups`](aws-updateeksselfmanagedlinuxnodegroup.md)
+ [`AWSSupport-CollectEKSLinuxNodeStatistics`](automation-awssupport-collectekslinuxnodestatistics.md)
+ [`AWSSupport-CollectEKSInstanceLogs`](automation-awssupport-collecteksinstancelogs.md)
+ [`AWSSupport-SetupK8sApiProxyForEKS`](automation-awssupport-setupk8sapiproxyforeks.md)
+ [`AWSSupport-TroubleshootEbsCsiDriversForEks`](automation-awssupport-troubleshoot-ebs-csi-drivers-for-eks.md)
+ [`AWSSupport-TroubleshootEKSALBControllerIssues`](automation-awssupport-troubleshoot-eks-alb-controller-issues.md)

# `AWS-CreateEKSClusterWithFargateProfile`
<a name="aws-createeksclusterwithfargateprofile"></a>

 **Descrição** 

 O `AWS-CreateEKSClusterWithFargateProfile` runbook cria um cluster do Amazon Elastic Kubernetes Service (Amazon EKS) usando um. AWS Fargate

 [Executar esta automação (console)](https://console.aws.amazon.com/systems-manager/automation/execute/AWS-CreateEKSClusterWithFargateProfile) 

**Tipo de documento**

Automação

**Proprietário**

Amazon

**Plataformas**

Linux, macOS, Windows

**Parâmetros**
+ AutomationAssumeRole

  Tipo: String

  Descrição: (opcional) o nome do recurso da Amazon (ARN) do perfil do AWS Identity and Access Management (IAM) que permite que o Systems Manager Automation realize ações em seu nome. Se nenhum perfil for especificado, o Systems Manager Automation usa as permissões do usuário que inicia este runbook.
+ ClusterName

  Tipo: string

  Descrição: (Obrigatório) Um nome exclusivo para o cluster.
+ ClusterRoleArn

  Tipo: string

  Descrição: (Obrigatório) O ARN da função do IAM que fornece permissões para o plano de controle do Kubernetes fazer chamadas para operações de AWS API em seu nome.
+ FargateProfileName

  Tipo: string

  Descrição: (Obrigatório) O nome do perfil do Fargate.
+ FargateProfileRoleArn

  Tipo: string

  Descrição: (Obrigatório) O ARN da função IAM de execução do Amazon EKS Pod.
+ FargateProfileSelectors

  Tipo: string

  Descrição: (Obrigatório) Os seletores para combinar os pods com o perfil do Fargate.
+ SubnetIds

  Tipo: StringList

  Descrição: (Obrigatório) A IDs das sub-redes que você deseja usar para seu cluster Amazon EKS. O Amazon EKS cria interfaces de rede elásticas nessas sub-redes para comunicação entre seus nós e o plano de controle do Kubernetes. Você deve especificar pelo menos duas sub-redes IDs.
+ EKSEndpointPrivateAccess

  Tipo: booleano

  Padrão: verdadeiro

  Descrição: (Opcional) Defina esse valor para permitir acesso privado `True` ao endpoint do servidor da API Kubernetes do seu cluster. Se você habilitar o acesso privado, as solicitações de API do Kubernetes originadas da VPC do cluster usarão o endpoint da VPC privada. Se você desabilitar o acesso privado e tiver nós ou AWS Fargate pods no cluster, certifique-se de `publicAccessCidrs` incluir os blocos CIDR necessários para comunicação com os nós ou pods Fargate.
+ EKSEndpointPublicAccess

  Tipo: booliano

  Padrão: False

  Descrição: (Opcional) Defina esse valor para desativar `False` o acesso público ao endpoint do servidor da API Kubernetes do seu cluster. Se você desativar o acesso público, o servidor da API Kubernetes do seu cluster só poderá receber solicitações de dentro da VPC em que foi lançado.
+ PublicAccessCIDRs

  Tipo: StringList

  Descrição: (Opcional) Os blocos CIDR que têm acesso permitido ao endpoint público do servidor da API Kubernetes do seu cluster. A comunicação com o endpoint em endereços fora dos blocos CIDR especificados é negada. Se você desativou o acesso privado ao endpoint e tem nós ou pods Fargate no cluster, certifique-se de especificar os blocos CIDR necessários.
+ SecurityGroupIds

  Tipo: StringList

  Descrição: (Opcional) Especifique um ou mais grupos de segurança para associar às interfaces de rede elástica criadas em sua conta pelo Amazon EKS.

**Permissões obrigatórias do IAM**

O parâmetro `AutomationAssumeRole` requer as seguintes ações para usar o runbook com êxito.
+ `ssm:GetAutomationExecution`
+ `ssm:StartAutomationExecution`
+ `ec2:DescribeRouteTables`
+ `ec2:DescribeSubnets`
+ `ec2:DescribeVpcs`
+ `eks:CreateCluster`
+ `eks:CreateFargateProfile`
+ `eks:DescribeCluster`
+ `eks:DescribeFargateProfile`
+ `iam:CreateServiceLinkedRole`
+ `iam:GetRole`
+ `iam:ListAttachedRolePolicies`
+ `iam:PassRole`

 **Etapas do documento** 
+ Create EKSCluster (aws:executeAwsApi) - Cria um cluster Amazon EKS.
+ Verify EKSCluster IsActive (aws: waitForAwsResourceProperty) - Verifica se o estado do cluster é`ACTIVE`.
+ CreateFargateProfile (aws:executeAwsApi) - Cria um Fargate para o cluster.
+ VerifyFargateProfileIsActive (aws: waitForAwsResourceProperty) - Verifica se o estado do perfil Fargate é. `ACTIVE`

 **Saídas** 

 `CreateEKSCluster.CreateClusterResponse`   
Descrição: Resposta recebida da chamada `CreateCluster` da API.

 `CreateFargateProfile.CreateFargateProfileResponse`   
Descrição: Resposta recebida da chamada `CreateFargateProfile` da API.

# `AWS-CreateEKSClusterWithNodegroup`
<a name="aws-createeksclusterwithnodegroup"></a>

 **Descrição** 

 O `AWS-CreateEKSClusterWithNodegroup` runbook cria um cluster do Amazon Elastic Kubernetes Service (Amazon EKS) usando um grupo de nós para capacidade.

 [Executar esta automação (console)](https://console.aws.amazon.com/systems-manager/automation/execute/AWS-CreateEKSClusterWithNodegroup) 

**Tipo de documento**

Automação

**Proprietário**

Amazon

**Plataformas**

Linux, macOS, Windows

**Parâmetros**
+ AutomationAssumeRole

  Tipo: String

  Descrição: (opcional) o nome do recurso da Amazon (ARN) do perfil do AWS Identity and Access Management (IAM) que permite que o Systems Manager Automation realize ações em seu nome. Se nenhum perfil for especificado, o Systems Manager Automation usa as permissões do usuário que inicia este runbook.
+ ClusterName

  Tipo: string

  Descrição: (Obrigatório) Um nome exclusivo para o cluster.
+ ClusterRoleArn

  Tipo: string

  Descrição: (Obrigatório) O ARN da função do IAM que fornece permissões para o plano de controle do Kubernetes fazer chamadas para operações de AWS API em seu nome.
+ NodegroupName

  Tipo: string

  Descrição: (Obrigatório) Um nome exclusivo para o grupo de nós.
+ NodegroupRoleArn

  Tipo: string

  Descrição: (Obrigatório) O ARN da função do IAM a ser associada ao seu grupo de nós. O daemon kubelet do node worker node do Amazon EKS faz chamadas em seu nome. AWS APIs Os nós recebem permissões para essas chamadas de API por meio de um perfil de instância do IAM e políticas associadas. Antes de iniciar os nós e registrá-los em um cluster, você deve criar um perfil do IAM para uso desses nós quando eles forem iniciados.
+ SubnetIds

  Tipo: StringList

  Descrição: (Obrigatório) A IDs das sub-redes que você deseja usar para seu cluster Amazon EKS. O Amazon EKS cria interfaces de rede elásticas nessas sub-redes para comunicação entre seus nós e o plano de controle do Kubernetes. Você deve especificar pelo menos duas sub-redes IDs.
+ EKSEndpointPrivateAccess

  Tipo: booleano

  Padrão: verdadeiro

  Descrição: (Opcional) Defina esse valor para permitir acesso privado `True` ao endpoint do servidor da API Kubernetes do seu cluster. Se você habilitar o acesso privado, as solicitações de API do Kubernetes originadas da VPC do cluster usarão o endpoint da VPC privada. Se você desabilitar o acesso privado e tiver nós ou AWS Fargate pods no cluster, certifique-se de `publicAccessCidrs` incluir os blocos CIDR necessários para comunicação com os nós ou pods Fargate.
+ EKSEndpointPublicAccess

  Tipo: booliano

  Padrão: False

  Descrição: (Opcional) Defina esse valor para desativar `False` o acesso público ao endpoint do servidor da API Kubernetes do seu cluster. Se você desativar o acesso público, o servidor da API Kubernetes do seu cluster só poderá receber solicitações de dentro da VPC em que foi lançado.
+ PublicAccessCIDRs

  Tipo: StringList

  Descrição: (Opcional) Os blocos CIDR que têm acesso permitido ao endpoint público do servidor da API Kubernetes do seu cluster. A comunicação com o endpoint em endereços fora dos blocos CIDR especificados é negada. Se você desativou o acesso privado ao endpoint e tem nós ou pods Fargate no cluster, certifique-se de especificar os blocos CIDR necessários.
+ SecurityGroupIds

  Tipo: StringList

  Descrição: (Opcional) Especifique um ou mais grupos de segurança para associar às interfaces de rede elástica criadas em sua conta pelo Amazon EKS.

**Permissões obrigatórias do IAM**

O parâmetro `AutomationAssumeRole` requer as seguintes ações para usar o runbook com êxito.
+ `ssm:StartAutomationExecution`
+ `ssm:GetAutomationExecution`
+ `ec2:DescribeSubnets`
+ `eks:CreateCluster`
+ `eks:CreateNodegroup`
+ `eks:DescribeCluster`
+ `eks:DescribeNodegroup`
+ `iam:CreateServiceLinkedRole`
+ `iam:GetRole`
+ `iam:ListAttachedRolePolicies`
+ `iam:PassRole`

 **Etapas do documento** 
+ Create EKSCluster (aws:executeAwsApi) - Cria um cluster Amazon EKS.
+ Verify EKSCluster IsActive (aws: waitForAwsResourceProperty) - Verifica se o estado do cluster é`ACTIVE`.
+ CreateNodegroup (aws:executeAwsApi) - Cria um grupo de nós para o cluster.
+ VerifyNodegroupIsActive (aws: waitForAwsResourceProperty) - Verifica se o estado do grupo de nós é`ACTIVE`.

 **Saídas** 
+ `CreateEKSCluster.CreateClusterResponse`: resposta recebida da chamada `CreateCluster` da API.
+ `CreateNodegroup.CreateNodegroupResponse`: resposta recebida da chamada `CreateNodegroup` da API.

# `AWS-DeleteEKSCluster`
<a name="automation-aws-deleteekscluster"></a>

 **Descrição** 

 Esse runbook exclui os atributos associados a um cluster do Amazon EKS, incluindo grupos de nós e perfis do Fargate. Opcionalmente, você pode optar por excluir todos os nós autogerenciados, as CloudFormation pilhas usadas para criar os nós e a pilha de VPC CloudFormation do seu cluster. Para obter mais informações sobre como excluir um cluster do ECS, consulte [Excluir um cluster](https://docs.aws.amazon.com/eks/latest/userguide/delete-cluster.html) no *Guia do usuário do Amazon EKS*. 

**nota**  
 Se tiver serviços ativos no cluster associados a um balanceador de carga, você deve excluir esses serviços antes de excluir o cluster. Caso contrário, o sistema não poderá excluir os balanceadores de carga. Utilizar o procedimento a seguir para localizar e excluir serviços antes de executar o runbook `AWS-DeleteEKSCluster`. 

**Para localizar e excluir serviços no cluster**

1.  Instalar o utilitário de linha de comando Kubernetes, `kubectl`. Para obter mais informações, consulte [Instalar o kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) no *Manual do usuário do Amazon EKS*. 

1. Executar o comando a seguir para listar todos os serviços em execução no cluster.

   ```
   kubectl get svc --all-namespaces
   ```

1. Executar o comando a seguir para excluir todos os serviços que tenham um valor de IP EXTERNO associado. Esses serviços são liderados por um balanceador de carga e devem ser excluídos no Kubernetes para permitir que o balanceador de carga e os atributos associados sejam liberados corretamente.

   ```
                           kubectl delete svc
                           service-name
   ```

 Agora você pode executar o runbook `AWS-DeleteEKSCluster`. 

 [Executar esta automação (console)](https://console.aws.amazon.com/systems-manager/automation/execute/AWS-DeleteEKSCluster) 

**Tipo de documento**

Automação

**Proprietário**

Amazon

**Plataformas**

Linux, macOS, Windows

**Parâmetros**
+ AutomationAssumeRole

  Tipo: String

  Descrição: (opcional) o nome do recurso da Amazon (ARN) do perfil do AWS Identity and Access Management (IAM) que permite que o Systems Manager Automation realize ações em seu nome. Se nenhum perfil for especificado, o Systems Manager Automation usa as permissões do usuário que inicia este runbook.
+ EKSClusterNome

  Tipo: string

  Descrição: (obrigatório) O nome do cluster do Amazon EKS a ser excluído.
+ VPCCloudFormationStack

  Tipo: string

  Descrição: nome da CloudFormation pilha (opcional) para VPC para o cluster EKS que está sendo excluído. Isso exclui a CloudFormation pilha da VPC e todos os recursos criados pela pilha.
+ VPCCloudFormationStackRole

  Tipo: string

  Descrição: (Opcional) O ARN de uma função do IAM que CloudFormation pressupõe a exclusão da pilha de VPC. CloudFormation CloudFormation usa as credenciais da função para fazer chamadas em seu nome.
+ SelfManagedNodeStacks

  Tipo: string

  Descrição: (Opcional) Lista separada por vírgulas de nomes de CloudFormation pilha para nós autogerenciados. Isso excluirá as CloudFormation pilhas para nós autogerenciados.
+ SelfManagedNodeStacksRole

  Tipo: string

  Descrição: (Opcional) O ARN de uma função do IAM que CloudFormation pressupõe a exclusão dos Node Stacks autogerenciados. CloudFormation usa as credenciais da função para fazer chamadas em seu nome.

**Permissões obrigatórias do IAM**

O parâmetro `AutomationAssumeRole` requer as seguintes ações para usar o runbook com êxito.
+  `sts:AssumeRole` 
+  `eks:ListNodegroups` 
+  `eks:DeleteNodegroup` 
+  `eks:ListFargateProfiles` 
+  `eks:DeleteFargateProfile` 
+  `eks:DeleteCluster` 
+  `cfn:DescribeStacks` 
+  `cfn:DeleteStack` 

 **Etapas do documento** 
+  `aws:executeScript`- DeleteNodeGroups: Encontre e exclua todos os grupos de nós no cluster EKS. 
+  `aws:executeScript`- DeleteFargateProfiles: Encontre e exclua todos os perfis do Fargate no cluster EKS. 
+  `aws:executeScript`- DeleteSelfManagedNodes: Exclua todos os nós autogerenciados e as CloudFormation pilhas usadas para criar os nós. 
+  `aws:executeScript`- ExcluirEKSCluster: exclua o cluster EKS. 
+  `aws:executeScript`- Excluir VPCCloudFormationStack: exclua a pilha de VPC CloudFormation . 

# `AWS-MigrateToNewEKSSelfManagedNodeGroup`
<a name="aws-migratetoneweksselfmanagedlinuxnodegroup"></a>

 **Descrição** 

 O `AWS-MigrateToNewEKSSelfManagedNodeGroup` runbook ajuda você a criar um novo grupo de nós Linux do Amazon Elastic Kubernetes Service (Amazon EKS) para o qual migrar seu aplicativo existente. Para obter mais informações, consulte [Migração para um novo grupo de nós](https://docs.aws.amazon.com/eks/latest/userguide/migrate-stack.html) no **Guia do usuário do Amazon EKS**.

 [Executar esta automação (console)](https://console.aws.amazon.com/systems-manager/automation/execute/AWS-MigrateToNewEKSSelfManagedLinuxNodeGroup) 

**Tipo de documento**

Automação

**Proprietário**

Amazon

**Plataformas**

Linux

**Parâmetros**
+ AutomationAssumeRole

  Tipo: String

  Descrição: (opcional) o nome do recurso da Amazon (ARN) do perfil do AWS Identity and Access Management (IAM) que permite que o Systems Manager Automation realize ações em seu nome. Se nenhum perfil for especificado, o Systems Manager Automation usa as permissões do usuário que inicia este runbook.
+ OldStackName

  Tipo: string

  Descrição: (Obrigatório) O nome ou ID da pilha existente CloudFormation .
+ NewStackName

  Tipo: string

  Descrição: (Opcional) O nome da nova CloudFormation pilha criada para seu novo grupo de nós. Se você não especificar um valor para esse parâmetro, o nome da pilha será criado usando o formato:`NewNodeGroup-ClusterName-AutomationExecutionID`.
+ ClusterControlPlaneSecurityGroup

  Tipo: string

  Descrição: (Opcional) O ID do grupo de segurança que você deseja que os nós usem para se comunicar com o plano de controle do Amazon EKS. Se você não especificar um valor para esse parâmetro, o grupo de segurança especificado em sua CloudFormation pilha existente será usado.
+ NodeInstanceType

  Tipo: string

  Descrição: (Opcional) O tipo de instância que você deseja usar para o novo grupo de nós. Se você não especificar um valor para esse parâmetro, o tipo de instância especificado na sua CloudFormation pilha existente será usado.
+ NodeGroupName

  Tipo: string

  Descrição: (Opcional) O nome do seu novo grupo de nós. Se você não especificar um valor para esse parâmetro, o nome do grupo de nós especificado na CloudFormation pilha existente será usado.
+ NodeAutoScalingGroupDesiredCapacity

  Tipo: string

  Descrição: (Opcional) O número desejado de nós para escalar quando sua nova pilha for criada. Esse número deve ser maior ou igual ao `NodeAutoScalingGroupMinSize` valor e menor ou igual ao`NodeAutoScalingGroupMaxSize`. Se você não especificar um valor para esse parâmetro, a capacidade desejada do grupo de nós especificada em sua CloudFormation pilha existente será usada.
+ NodeAutoScalingGroupMaxSize

  Tipo: string

  Descrição: (Opcional) O número máximo de nós para os quais seu grupo de nós pode ser expandido. Se você não especificar um valor para esse parâmetro, o tamanho máximo do grupo de nós especificado em sua CloudFormation pilha existente será usado.
+ NodeAutoScalingGroupMinSize

  Tipo: string

  Descrição: (Opcional) O número mínimo de nós para os quais seu grupo de nós pode escalar. Se você não especificar um valor para esse parâmetro, o tamanho mínimo do grupo de nós especificado em sua CloudFormation pilha existente será usado.
+ NodeImageId

  Tipo: string

  Descrição: (opcional) O ID do Amazon Machine Image (AMI) a ser usado pelo grupo de nós.
+ NodeImageIdSSMParam

  Tipo: string

  Descrição: (opcional) O parâmetro público do Systems Manager para o AMI a ser usado pelo grupo de nós.
+ NodeVolumeSize

  Tipo: string

  Descrição: (Opcional) O tamanho do volume raiz dos seus nós em GiB. Se você não especificar um valor para esse parâmetro, o tamanho do volume do nó especificado na CloudFormation pilha existente será usado.
+ NodeVolumeType

  Tipo: string

  Descrição: (Opcional) O tipo de volume do Amazon EBS que você deseja usar para o volume raiz dos seus nós. Se você não especificar um valor para esse parâmetro, o tipo de volume especificado na CloudFormation pilha existente será usado.
+ KeyName

  Tipo: string

  Descrição: (Opcional) O par de chaves que você deseja atribuir aos seus nós. Se você não especificar um valor para esse parâmetro, o par de chaves especificado na CloudFormation pilha existente será usado.
+ Sub-redes

  Tipo: StringList

  Descrição: (Opcional) Uma lista separada por vírgulas da sub-rede IDs que você deseja usar para seu novo grupo de nós. Se você não especificar um valor para esse parâmetro, as sub-redes especificadas na sua CloudFormation pilha existente serão usadas.
+ Desativar IMDSv1

  Tipo: booliano

  Descrição: (Opcional) Especifique `true` para desativar o serviço de metadados de instância versão 1 (IMDSv1). Por padrão, os nós suportam IMDSv1 IMDSv2 e.
+ BootstrapArguments

  Tipo: string

  Descrição: (Opcional) Argumentos adicionais que você deseja passar para o script de bootstrap do nó.

**Permissões obrigatórias do IAM**

O parâmetro `AutomationAssumeRole` requer as seguintes ações para usar o runbook com êxito.
+ `ssm:StartAutomationExecution`
+ `ssm:GetAutomationExecution`
+ `ssm:GetParameters`
+ `autoscaling:CreateAutoScalingGroup`
+ `autoscaling:CreateOrUpdateTags`
+ `autoscaling:DeleteTags`
+ `autoscaling:DescribeAutoScalingGroups`
+ `autoscaling:DescribeScalingActivities`
+ `autoscaling:DescribeScheduledActions`
+ `autoscaling:SetDesiredCapacity`
+ `autoscaling:TerminateInstanceInAutoScalingGroup`
+ `autoscaling:UpdateAutoScalingGroup`
+ `cloudformation:CreateStack`
+ `cloudformation:DescribeStackResource`
+ `cloudformation:DescribeStacks`
+ `cloudformation:UpdateStack`
+ `ec2:AuthorizeSecurityGroupEgress`
+ `ec2:AuthorizeSecurityGroupIngress`
+ `ec2:CreateLaunchTemplateVersion`
+ `ec2:CreateLaunchTemplate`
+ `ec2:CreateSecurityGroup`
+ `ec2:CreateTags`
+ `ec2:DeleteLaunchTemplate`
+ `ec2:DeleteSecurityGroup`
+ `ec2:DescribeAvailabilityZones`
+ `ec2:DescribeImages`
+ `ec2:DescribeInstanceAttribute`
+ `ec2:DescribeInstanceStatus`
+ `ec2:DescribeInstances`
+ `ec2:DescribeKeyPairs`
+ `ec2:DescribeLaunchTemplateVersions`
+ `ec2:DescribeLaunchTemplates`
+ `ec2:DescribeSecurityGroups`
+ `ec2:DescribeSubnets`
+ `ec2:DescribeVpcs`
+ `ec2:RevokeSecurityGroupEgress`
+ `ec2:RevokeSecurityGroupIngress`
+ `ec2:RunInstances`
+ `ec2:TerminateInstances`
+ `iam:AddRoleToInstanceProfile`
+ `iam:AttachRolePolicy`
+ `iam:CreateInstanceProfile`
+ `iam:CreateRole`
+ `iam:GetInstanceProfile`
+ `iam:GetRole`
+ `iam:PassRole`

 **Etapas do documento** 
+ DetermineParameterValuesForNewNodeGroup (aws:ExecuteScript) - Reúne os valores dos parâmetros a serem usados no novo grupo de nós.
+ CreateStack (aws:createStack) - Cria a CloudFormation pilha para o novo grupo de nós. 
+ GetNewStackNodeInstanceRole (aws:executeAwsApi) - Obtém a função da instância do nó. 
+ GetNewStackSecurityGroup (aws:executeAwsApi) - A etapa obtém o grupo de segurança do nó. 
+ AddIngressRulesToNewNodeSecurityGroup (aws:executeAwsApi) - Adiciona regras de entrada ao grupo de segurança recém-criado para que ele possa aceitar tráfego daquele atribuído ao seu grupo de nós anterior. 
+ AddIngressRulesToOldNodeSecurityGroup (aws:executeAwsApi) - Adiciona regras de entrada ao grupo de segurança anterior para que ele possa aceitar tráfego daquele atribuído ao seu grupo de nós recém-criado. 
+ VerifyStackComplete (aws: assertAwsResource Property) - Verifica se o status da nova pilha é. `CREATE_COMPLETE` 

 **Saídas** 

DetermineParameterValuesForNewNodeGroup. NewStackParameters - Os parâmetros usados para criar a nova pilha.

GetNewStackNodeInstanceRole. NewNodeInstanceRole - A função da instância do nó para o novo grupo de nós.

GetNewStackSecurityGroup. NewNodeSecurityGroup - O ID do grupo de segurança para o novo grupo de nós.

DetermineParameterValuesForNewNodeGroup. NewStackName - O nome da CloudFormation pilha para o novo grupo de nós.

CreateStack. StackId - O ID da CloudFormation pilha para o novo grupo de nós.

# `AWSPremiumSupport-TroubleshootEKSCluster`
<a name="automation-awspremiumsupport-troubleshootekscluster"></a>

 **Descrição** 

 O runbook `AWSPremiumSupport-TroubleshootEKSCluster` diagnostica problemas comuns com um cluster do Amazon Elastic Kubernetes Service (Amazon EKS), a infraestrutura subjacente, e fornece etapas de remediação recomendadas. 

**Importante**  
O acesso aos `AWSPremiumSupport-*` runbooks requer uma assinatura Business \$1 Support, Enterprise Support ou Unified Operations. Para obter mais informações, consulte [Comparar Planos AWS Support](https://aws.amazon.com/premiumsupport/plans/).

 Se você especificar um valor para o parâmetro `S3BucketName`, a automação avaliará o status da política do bucket do Amazon Simple Storage Service (Amazon S3) que você especificar. Para ajudar na segurança dos logs coletados da sua instância do EC2, se o status da política `isPublic` estiver definido como `true` ou se a lista de controle de acesso (ACL) conceder permissões de `READ|WRITE` ao grupo predefinido `All Users` do Amazon S3, os logs não serão carregados. Para obter mais informações sobre grupos predefinidos do Amazon S3, consulte [Grupos predefinidos do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#specifying-grantee-predefined-groups) no *Guia do usuário do Amazon Simple Storage Service*. 

 [Executar esta automação (console)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSPremiumSupport-TroubleshootEKSCluster) 

**Tipo de documento**

Automação

**Proprietário**

Amazon

**Plataformas**

Linux, macOS, Windows

**Parâmetros**
+ AutomationAssumeRole

  Tipo: String

  Descrição: (opcional) o nome do recurso da Amazon (ARN) do perfil do AWS Identity and Access Management (IAM) que permite que o Systems Manager Automation realize ações em seu nome. Se nenhum perfil for especificado, o Systems Manager Automation usa as permissões do usuário que inicia este runbook.
+ ClusterName

  Tipo: string

  Descrição: (obrigatório) O nome do cluster do Amazon EKS que deseja solucionar.
+ S3 BucketName

  Tipo: string

  Descrição: (Obrigatório) O nome do bucket privado do Amazon S3 em que o relatório gerado pelo runbook deve ser carregado.

**Permissões obrigatórias do IAM**

O parâmetro `AutomationAssumeRole` requer as seguintes ações para usar o runbook com êxito.
+  `ssm:StartAutomationExecution` 
+  `ssm:GetAutomationExecution` 
+  `ec2:DescribeInstances` 
+  `ec2:DescribeInstanceTypes` 
+  `ec2:DescribeSubnets` 
+  `ec2:DescribeSecurityGroups` 
+  `ec2:DescribeRouteTables` 
+  `ec2:DescribeNatGateways` 
+  `ec2:DescribeVpcs` 
+  `ec2:DescribeNetworkAcls` 
+  `iam:GetInstanceProfile` 
+  `iam:ListInstanceProfiles` 
+  `iam:ListAttachedRolePolicies` 
+  `eks:DescribeCluster` 
+  `eks:ListNodegroups` 
+  `eks:DescribeNodegroup` 
+  `autoscaling:DescribeAutoScalingGroups` 

 Além disso, a política AWS Identity and Access Management (IAM) anexada ao usuário ou à função que inicia a automação deve permitir a `ssm:GetParameter` operação com os seguintes AWS Systems Manager parâmetros públicos para obter a última recomendação do Amazon EKS Amazon Machine Image (AMI) para os nós de trabalho. 
+  `arn:aws:ssm:::parameter/aws/service/eks/optimized-ami/*/amazon-linux-2/recommended/image_id` 
+  `arn:aws:ssm:::parameter/aws/service/ami-windows-latest/Windows_Server-2019-English-Core-EKS_Optimized-*/image_id` 
+  `arn:aws:ssm:::parameter/aws/service/ami-windows-latest/Windows_Server-2019-English-Full-EKS_Optimized-*/image_id` 
+  `arn:aws:ssm:::parameter/aws/service/ami-windows-latest/Windows_Server-1909-English-Core-EKS_Optimized-*/image_id` 
+  `arn:aws:ssm:::parameter/aws/service/eks/optimized-ami/*/amazon-linux-2-gpu/recommended/image_id` 

Para carregar o relatório gerado pelo runbook em um bucket do Amazon S3, as seguintes permissões são necessárias para o bucket do Amazon S3 especificado.
+  `s3:GetBucketPolicyStatus` 
+  `s3:GetBucketAcl` 
+  `s3:PutObject` 

 **Etapas do documento** 
+  `aws:executeAwsApi` :Reúne detalhes do cluster Amazon EKS especificado. 
+  `aws:executeScript` :Reúne detalhes das instâncias do Amazon Elastic Compute Cloud (Amazon EC2), grupos do Auto Scaling, AMIs e tipos de instância gráfica de GPU do Amazon EC2. 
+  `aws:executeScript`- Reúne detalhes da nuvem privada virtual (VPC), sub-redes, gateways de tradução de endereços de rede (NAT), rotas de sub-rede, grupos de segurança e listas de controle de acesso à rede (ACLs) do cluster Amazon EKS. 
+  `aws:executeScript` :Reúne detalhes dos perfis de instância do IAM anexados e das políticas de perfis. 
+  `aws:executeScript` :Reúne detalhes do bucket do Amazon S3 especificado no parâmetro `S3BucketName`. 
+  `aws:executeScript` :Classifica as sub-redes da Amazon VPC como públicas ou privadas. 
+  `aws:executeScript` :Verifica as sub-redes da Amazon VPC em busca de tags que são necessárias como parte de um cluster do Amazon EKS. 
+  `aws:executeScript` :Verifica as sub-redes da Amazon VPC em busca das tags que são necessárias para as sub-redes do Elastic Load Balancing. 
+  `aws:executeScript` :Verifica se as instâncias da Amazon EC2 do nó de processamento usam a última versão otimizada das AMIs do Amazon EKS 
+  `aws:executeScript` :Verifica se os grupos de segurança da Amazon VPC estão conectados aos nós de processamento quanto às tags necessárias. 
+  `aws:executeScript` :Verifica as regras do cluster do Amazon EKS e do grupo de segurança da Amazon VPC do nó de processamento quanto às regras de entrada recomendadas para o cluster do Amazon EKS. 
+  `aws:executeScript` :Verifica as regras do cluster do Amazon EKS e do grupo de segurança da Amazon VPC do nó de processamento para ver as regras de saída recomendadas do cluster do Amazon EKS. 
+  `aws:executeScript` :Verifica a configuração de rede da ACL para as sub-redes da Amazon VPC. 
+  `aws:executeScript` :Verifica se as instâncias do nó de processamento do Amazon EC2 têm as políticas gerenciadas necessárias. 
+  `aws:executeScript` :Verifica se os grupos do Auto Scaling têm as tags necessárias para o escalonamento automático do cluster. 
+  `aws:executeScript` :Verifica se as instâncias do nó de processamento do Amazon EC2 estão conectadas à Internet. 
+  `aws:executeScript` :Gera um relatório com base nas saídas das etapas anteriores. Se um valor for especificado para o parâmetro `S3BucketName`, o relatório gerado será carregado no bucket do Amazon S3. 

# `AWSSupport-TroubleshootEKSWorkerNode`
<a name="automation-awssupport-troubleshooteksworkernode"></a>

 **Descrição** 

 O runbook `AWSSupport-TroubleshootEKSWorkerNode` analisa um nó de processamento do Amazon Elastic Compute Cloud (Amazon EC2) e um cluster do Amazon Elastic Kubernetes Service (Amazon EKS) para ajudar a identificar e solucionar causas comuns que impedem que os nós de processamento se juntem a um cluster. O runbook fornece orientações para ajudar a resolver quaisquer problemas identificados. 

**Importante**  
 Para executar essa automação com sucesso, o estado do nó de processamento do Amazon EC2 deve ser `running` e o estado do cluster do Amazon EKS deve ser `ACTIVE`. 

 [Executar esta automação (console)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootEKSWorkerNode) 

**Tipo de documento**

Automação

**Proprietário**

Amazon

**Plataformas**

Linux

**Parâmetros**
+ AutomationAssumeRole

  Tipo: String

  Descrição: (opcional) o nome do recurso da Amazon (ARN) do perfil do AWS Identity and Access Management (IAM) que permite que o Systems Manager Automation realize ações em seu nome. Se nenhum perfil for especificado, o Systems Manager Automation usa as permissões do usuário que inicia este runbook.
+ ClusterName

  Tipo: string

  Descrição: (obrigatório) O nome do cluster do Amazon EKS.
+ WorkerID

  Tipo: string

  Descrição: (obrigatório) O ID do nó de processamento do Amazon EC2 que não conseguiu se juntar ao cluster.

**Permissões obrigatórias do IAM**

O parâmetro `AutomationAssumeRole` requer as seguintes ações para usar o runbook com êxito.
+  `ec2:DescribeDhcpOptions` 
+  `ec2:DescribeImages` 
+  `ec2:DescribeInstanceAttribute` 
+  `ec2:DescribeInstances` 
+  `ec2:DescribeInstanceStatus` 
+  `ec2:DescribeNatGateways` 
+  `ec2:DescribeNetworkAcls` 
+  `ec2:DescribeNetworkInterfaces` 
+  `ec2:DescribeRouteTables` 
+  `ec2:DescribeSecurityGroups` 
+  `ec2:DescribeSubnets` 
+  `ec2:DescribeVpcAttribute` 
+  `ec2:DescribeVpcEndpoints` 
+  `ec2:DescribeVpcs` 
+  `eks:DescribeCluster` 
+  `iam:GetInstanceProfile` 
+  `iam:GetRole` 
+  `iam:ListAttachedRolePolicies` 
+  `ssm:DescribeInstanceInformation` 
+  `ssm:ListCommandInvocations` 
+  `ssm:ListCommands` 
+  `ssm:SendCommand` 

 **Etapas do documento** 
+  `aws:assertAwsResourceProperty` :Confirma que o cluster Amazon EKS especificado no parâmetro `ClusterName` existe e está no estado `ACTIVE`. 
+  `aws:assertAwsResourceProperty` :Confirma que o nó de processamento do Amazon EC2 especificado no parâmetro `WorkerID` existe e está no estado `running`. 
+  `aws:executeScript` :Executa um script Python que ajuda a identificar possíveis causas da falha do nó de processamento em ingressar no cluster. 

# `AWS-UpdateEKSCluster`
<a name="automation-updateekscluster"></a>

 **Descrição** 

 O `AWS-UpdateEKSCluster` runbook ajuda você a atualizar seu cluster do Amazon Elastic Kubernetes Service (Amazon EKS) para a versão do Kubernetes que você deseja usar. 

 [Executar esta automação (console)](https://console.aws.amazon.com/systems-manager/automation/execute/AWS-UpdateEKSCluster) 

**Tipo de documento**

Automação

**Proprietário**

Amazon

**Plataformas**

Linux, macOS, Windows

**Parâmetros**
+ AutomationAssumeRole

  Tipo: String

  Descrição: (opcional) o nome do recurso da Amazon (ARN) do perfil do AWS Identity and Access Management (IAM) que permite que o Systems Manager Automation realize ações em seu nome. Se nenhum perfil for especificado, o Systems Manager Automation usa as permissões do usuário que inicia este runbook.
+ ClusterName

  Tipo: string

  Descrição: (Obrigatório) O nome do seu cluster Amazon EKS.
+ Versão

  Tipo: string

  Descrição: (Obrigatório) A versão do Kubernetes para a qual você deseja atualizar seu cluster.

**Permissões obrigatórias do IAM**

O parâmetro `AutomationAssumeRole` requer as seguintes ações para usar o runbook com êxito.
+  `eks:DescribeUpdate` 
+  `eks:UpdateClusterVersion` 

 **Etapas do documento** 
+  `aws:executeAwsApi`- Atualiza a versão do Kubernetes que é usada pelo seu cluster Amazon EKS. 
+  `aws:waitForAwsResourceProperty`- Espera que o status da atualização seja`Successful`. 

# `AWS-UpdateEKSManagedNodeGroup`
<a name="aws-updateeksmanagednodegroup"></a>

 **Descrição** 

O runbook `AWS-UpdateEKSManagedNodeGroup` ajuda a atualizar um grupo de nós gerenciados do Amazon Elastic Kubernetes Service (Amazon EKS). Você pode escolher uma atualização de `Version` ou de `Configuration`.

 [Executar esta automação (console)](https://console.aws.amazon.com/systems-manager/automation/execute/AWS-UpdateEKSManagedNodeGroup) 

**Tipo de documento**

Automação

**Proprietário**

Amazon

**Plataformas**

Linux, macOS, Windows

**Parâmetros**
+ AutomationAssumeRole

  Tipo: String

  Descrição: (opcional) o nome do recurso da Amazon (ARN) do perfil do AWS Identity and Access Management (IAM) que permite que o Systems Manager Automation realize ações em seu nome. Se nenhum perfil for especificado, o Systems Manager Automation usa as permissões do usuário que inicia este runbook.
+ ClusterName

  Tipo: string

  Descrição: (obrigatório) O nome do cluster cujo grupo de nós deseja atualizar.
+ NodeGroupName

  Tipo: string

  Descrição: (obrigatório) O nome do grupo de nós a ser atualizado.
+ UpdateType

  Tipo: string

  Valores válidos: Update Node Group Version \$1 Update Node Group Configurations

  Padrão: Atualizar versão do grupo de nós

  Descrição: (obrigatório) O tipo de atualização que deseja realizar no grupo de nós.

Os parâmetros a seguir se aplicam somente ao tipo de atualização de `Version`:
+ AMIReleaseVersão

  Tipo: string

  Descrição: (opcional) A versão da AMI otimizada do Amazon EKS que deseja usar. A versão mais recente é usada por padrão.
+ ForceUpgrade

  Tipo: booliano

  Descrição: (opcional) Se verdadeiro, a atualização não falhará em resposta a uma violação do orçamento de interrupção do pod.
+ KubernetesVersion

  Tipo: string

  Descrição: (opcional) A versão do Kubernetes para a qual atualizar o grupo de nós.
+ LaunchTemplateId

  Tipo: string

  Descrição: (opcional) O ID do modelo de execução.
+ LaunchTemplateName

  Tipo: string

  Descrição: (opcional) O nome do modelo de execução.
+ LaunchTemplateVersion

  Tipo: string

  Descrição: (opcional) A versão do modelo de lançamento do Amazon Elastic Compute Cloud (Amazon EC2). Esse parâmetro só é válido se um grupo de nós foi criado a partir de um modelo de execução.

Os parâmetros a seguir se aplicam somente ao tipo de atualização de `Configuration`:
+ AddOrUpdateNodeGroupLabels

  Tipo: StringMap

  Descrição: (opcional) Rótulos do Kubernetes que deseja adicionar ou atualizar.
+ AddOrUpdateKubernetesTaintsEffect

  Tipo: StringList

  Descrição: (opcional) As taints do Kubernetes que deseja adicionar ou atualizar.
+ MaxUnavailableNodeGroups

  Tipo: inteiro

  Padrão: 0

  Descrição: (opcional) O número máximo de nós indisponíveis ao mesmo tempo durante uma atualização de versão.
+ MaxUnavailablePercentageNodeGroup

  Tipo: inteiro

  Padrão: 0

  Descrição: (opcional) A porcentagem de nós não disponíveis durante uma atualização de versão.
+ NodeGroupDesiredSize

  Tipo: inteiro

  Padrão: 0

  Descrição: (opcional) O número atual de nós que o grupo de nós gerenciados deve manter.
+ NodeGroupMaxSize

  Tipo: inteiro

  Padrão: 0

  Descrição: (opcional) O número máximo de nós para o qual o grupo de nós gerenciados pode ser aumentado na escala horizontalmente.
+ NodeGroupMinSize

  Tipo: inteiro

  Padrão: 0

  Descrição: (opcional) O número mínimo de nós para o qual o grupo de nós gerenciados pode ser reduzido na escala horizontalmente.
+ RemoveKubernetesTaintsEffect

  Tipo: StringList

  Descrição: (opcional) As taints do Kubernetes que deseja remover.
+ RemoveNodeGroupLabels

  Tipo: StringList

  Descrição: (opcional) Uma lista separada por vírgulas dos rótulos que deseja remover.

**Permissões obrigatórias do IAM**

O parâmetro `AutomationAssumeRole` requer as seguintes ações para usar o runbook com êxito.
+  `eks:UpdateNodegroupConfig` 
+  `eks:UpdateNodegroupVersion` 

 **Etapas do documento** 
+  `aws:executeScript`: atualiza um grupo de nós do cluster Amazon EKS de acordo com os valores especificados para os parâmetros de entrada do runbook. 
+  `aws:waitForAwsResourceProperty`: espera que o status de atualização do cluster seja `Successful`. 

# `AWS-UpdateEKSSelfManagedLinuxNodeGroups`
<a name="aws-updateeksselfmanagedlinuxnodegroup"></a>

 **Descrição** 

O runbook `AWS-UpdateEKSSelfManagedLinuxNodeGroups` atualiza grupos de nós autogerenciados em seu cluster do Amazon Elastic Kubernetes Service (Amazon EKS) usando uma pilha do AWS CloudFormation .

Se o cluster usa ajuste de escala automático, recomendamos reduzir a implantação para duas réplicas antes de usar esse runbook.

**Como escalar uma implantação para duas réplicas**

1.  Instale o utilitário de linha de comando Kubernetes, `kubectl`. Para obter mais informações, consulte [Instalar o kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html) no *Manual do usuário do Amazon EKS*. 

1. Execute o comando a seguir.

   ```
   kubectl scale deployments/cluster-autoscaler --replicas=2 -n kube-system
   ```

1. Execute o runbook `AWS-UpdateEKSSelfManagedLinuxNodeGroups`. 

1. Escale a implantação para o número desejado de réplicas executando o comando a seguir.

   ```
   kubectl scale deployments/cluster-autoscaler --replicas=number -n kube-system
   ```

 [Executar esta automação (console)](https://console.aws.amazon.com/systems-manager/automation/execute/AWS-UpdateEKSSelfManagedLinuxNodeGroups) 

**Tipo de documento**

Automação

**Proprietário**

Amazon

**Plataformas**

Linux, macOS, Windows

**Parâmetros**
+ AutomationAssumeRole

  Tipo: String

  Descrição: (opcional) o nome do recurso da Amazon (ARN) do perfil do AWS Identity and Access Management (IAM) que permite que o Systems Manager Automation realize ações em seu nome. Se nenhum perfil for especificado, o Systems Manager Automation usa as permissões do usuário que inicia este runbook.
+ ClusterName

  Tipo: string

  Descrição: (obrigatório) O nome do cluster do Amazon EKS.
+ NodeGroupName

  Tipo: string

  Descrição: (obrigatório) O nome do grupo de nós gerenciados.
+ ClusterControlPlaneSecurityGroup

  Tipo: string

  Descrição: (obrigatório) O ID do grupo de segurança do ambiente de gerenciamento.
+ Desativar IMDSv1

  Tipo: booliano

  Descrição: (Opcional) Determina se você deseja permitir a versão 1 do Instance Metadata Service (IMDSv1) e. IMDSv2
+ KeyName

  Tipo: string

  Descrição: (opcional) O nome da chave para as instâncias.
+ NodeAutoScalingGroupDesiredCapacity

  Tipo: string

  Descrição: (opcional) O número de nós que o grupo de nós deve manter.
+ NodeAutoScalingGroupMaxSize

  Tipo: string

  Descrição: (opcional) O número máximo de nós para o qual o grupo de nós pode ser expandido.
+ NodeAutoScalingGroupMinSize

  Tipo: string

  Descrição: (opcional) O número mínimo de nós para o qual o grupo de nós pode ser reduzido.
+ NodeInstanceType

  Tipo: string

  Padrão: T3.large

  Descrição: (opcional) O tipo de instância a ser usado para o grupo de nós.
+ NodeImageId

  Tipo: string

  Descrição: (opcional) O ID do Amazon Machine Image (AMI) a ser usado pelo grupo de nós.
+ NodeImageIdSSMParam

  Tipo: string

  Padrão:/aws/service/eks/optimized-ami/1.21/amazon-linux-2/recommended/image\$1id

  Descrição: (opcional) O parâmetro público do Systems Manager para o AMI a ser usado pelo grupo de nós.
+ StackName

  Tipo: string

  Descrição: (Obrigatório) O nome da CloudFormation pilha usada para atualizar o grupo de nós.
+ Sub-redes

  Tipo: string

  Descrição: (Obrigatório) Uma lista separada por vírgulas das IDs sub-redes que você deseja que seu cluster use.
+ VpcId

  Tipo: string

  Padrão: Default

  Descrição: (obrigatório) A nuvem privada virtual (VPC) em que seu cluster está implantado.

**Permissões obrigatórias do IAM**

O parâmetro `AutomationAssumeRole` requer as seguintes ações para usar o runbook com êxito.
+  `eks:CreateCluster` 
+  `eks:CreateNodegroup` 
+  `eks:DeleteNodegroup` 
+  `eks:DeleteCluster` 
+  `eks:DescribeCluster` 
+  `eks:DescribeNodegroup` 
+  `eks:ListClusters` 
+  `eks:ListNodegroups` 
+  `eks:UpdateClusterConfig` 
+  `eks:UpdateNodegroupConfig` 

 **Etapas do documento** 
+  `aws:executeScript` :Atualiza um grupo de nós do cluster Amazon EKS de acordo com os valores especificados para os parâmetros de entrada do runbook.
+  `aws:waitForAwsResourceProperty`- Espera que o status de atualização da CloudFormation pilha seja retornado. 

# `AWSSupport-CollectEKSLinuxNodeStatistics`
<a name="automation-awssupport-collectekslinuxnodestatistics"></a>

 **Descrição** 

O `AWSSupport-CollectEKSLinuxNodeStatistics` runbook coleta estatísticas do Linux de uma instância do Amazon EC2 que faz parte de um cluster do Amazon EKS e de um contêiner em execução na instância se `containerd` um ID de contêiner for especificado. A instância do Amazon EC2 precisa ser gerenciada por. AWS Systems Manager

As estatísticas do Linux em nível de host coletadas incluem:
+ Informações do sistema operacional.
+ Estatísticas da interface de rede - de `ethtool` e `/sys/class/net/interface/statistics` diretório.
+ Os descritores de arquivo contam.
+ As portas efêmeras contam.
+ Um monte de `iptables` regras.
+ Verifique a tabela completa do Conntrack.

As estatísticas do Linux em nível de contêiner incluem:
+ Informações do identificador - URI e rótulos da imagem.
+ Estatísticas da interface de rede - de `ethtool` e `/sys/class/net/interface/statistics` diretório.
+ Resultados de traceroute e DNS se o parâmetro for preenchido. `NetworkTargets`
+ Contagens de análise de captura de pacotes - retransmissões TCP, pacotes fora de serviço, etc.

O runbook coleta dados de várias distribuições Linux, incluindo Amazon Linux 2, Amazon Linux 2023 e Debian/Ubuntu. Ele usa as versões mais recentes das seguintes imagens da galeria pública do Amazon ECR:
+ `amazon-ecs-network-sidecar`imagem para obter acesso às ferramentas de solução de problemas.
+ `aws-cli`imagem para carregar o arquivo JSON do relatório estatístico e os arquivos de captura de pacotes para o bucket do Amazon S3 especificado.

**Importante**  
Esse runbook não é compatível com instâncias do Fargate. Esse runbook pode falhar se a instância for desligada ou desconectada durante a execução.

 **Como funciona?** 

O runbook executa as seguintes ações:
+ Verifica se o bucket de destino do Amazon S3 não concede acesso público de leitura ou gravação.
+ Garante que a instância de destino do Amazon EC2 seja gerenciada pelo Systems Manager e esteja em um estado de execução.
+ Verifica se a instância está executando um sistema operacional Linux.
+ Coleta estatísticas abrangentes do Linux da instância do Amazon EC2 e, opcionalmente, de um contêiner especificado.
+ Carrega as estatísticas coletadas no bucket do Amazon S3 especificado.

 [Execute esta automação (console)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-CollectEKSLinuxNodeStatistics) 

**Permissões obrigatórias do IAM**

O parâmetro `AutomationAssumeRole` requer as seguintes ações para usar o runbook com êxito.

O `AutomationAssumeRole` parâmetro requer as seguintes ações:
+ `s3:GetAccountPublicAccessBlock`
+ `s3:GetBucketPublicAccessBlock`
+ `s3:GetBucketAcl`
+ `s3:GetBucketPolicyStatus`
+ `s3:GetBucketLocation`
+ `s3:GetEncryptionConfiguration`
+ `s3:PutObject`
+ `ssm:DescribeInstanceInformation`
+ `ssm:SendCommand`
+ `ssm:GetCommandInvocation`
+ `ec2:DescribeInstances`

Exemplo de política do IAM:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetAccountPublicAccessBlock"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketPublicAccessBlock",
                "s3:GetBucketAcl",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketLocation",
                "s3:GetEncryptionConfiguration"
            ],
            "Resource": "arn:aws:s3:::S3_BUCKET_NAME"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::S3_BUCKET_NAME/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeInstanceInformation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:document/AWS-RunShellScript",
                "arn:aws:ec2:*:111122223333:instance/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetCommandInvocation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances"
            ],
            "Resource": "*"
        }
    ]
}
```

 **Instruções** 

Siga estas etapas para configurar a automação:

1. Navegue até [https://console.aws.amazon.com/systems-manager/documents/AWSSupport-CollectEKSLinuxNodeStatistics/description](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-CollectEKSLinuxNodeStatistics/description)em Systems Manager em Documentos.

1. Selecione Execute automation (Executar automação).

1. Para os parâmetros de entrada, insira o seguinte:
   + **AutomationAssumeRole (Opcional):**

     O Amazon Resource Name (ARN) da função do IAM que permite que o Systems Manager Automation execute as ações em seu nome. Se nenhum perfil for especificado, o Systems Manager Automation usa as permissões do usuário que inicia este runbook.
   + **InstanceId (Obrigatório):**

     O ID da instância do Amazon EC2 para coletar estatísticas.
   + **S3 BucketName (obrigatório):**

     Nome do bucket do Amazon S3 para exportar a saída JSON da instância do Amazon EC2 como um arquivo.
   + **S3 KeyPrefix (opcional):**

     O prefixo de chave do Amazon S3 (subpasta) para exportar a saída JSON da instância do Amazon EC2 como um arquivo. Padrão: `AWSSupport-CollectEKSLinuxNodeStatistics`.
   + **S3 BucketOwnerRoleArn (opcional):**

     O ARN da função do IAM com permissões para obter o bucket e a conta do Amazon S3 bloqueia as configurações de acesso público, a configuração da criptografia do bucket, o bucket, o ACLs status da política do bucket e o upload de objetos para o bucket. Se esse parâmetro não for especificado, o runbook usa o `AutomationAssumeRole` (se especificado) ou o usuário que inicia esse runbook (se não `AutomationAssumeRole` for especificado).
   + **S3 BucketOwnerAccount (opcional):**

     A AWS conta que possui o bucket do Amazon S3. Se você não especificar esse parâmetro, o runbook presume que o bucket está nessa conta.
   + **ContainerId (Opcional):**

     O ID de um contêiner em execução na instância especificada do Amazon EC2.
   + **NetworkTargets (Opcional):**

     Uma lista separada por vírgulas de IPv4 endereços, nomes and/or DNS para testar a resolução do DNS e a conectividade usando traceroute.

1. Selecione Executar.

1. A automação é iniciada.

1. O bucket realiza as seguintes etapas:
   + **`CheckBucketAccess`**:

     Verifica se o bucket do Amazon S3 de destino potencialmente concede acesso público de leitura e and/or gravação a seus objetos.
   + **`AssertInstanceIsSSMManaged`**:

     Garante que a instância de destino do Amazon EC2 seja gerenciada pelo Systems Manager, caso contrário, a automação termina.
   + **`VerifyInstanceState`**:

     Verifica se a instância do Amazon EC2 está em execução antes de tentar coletar estatísticas.
   + **`BranchOnVerifyLinuxInstance`**:

     Verifica se a instância é uma instância Linux antes de continuar.
   + **`BranchOnVerifyInstanceRunning`**:

     Verifica se a instância está em execução antes de continuar.
   + **`CollectEKSLinuxNodeStatistics`**:

     Coleta estatísticas abrangentes do Linux da instância do Amazon EC2, incluindo informações do sistema operacional, estatísticas da interface de rede, descritores de arquivos, portas efêmeras, regras de firewall e, opcionalmente, estatísticas em nível de contêiner.
   + **`GenerateStatisticsOutputS3Uri`**:

     Gera o URI completo do Amazon S3 para os arquivos de estatísticas do Linux para ser usado como saída do documento de automação.

1. Depois de concluído, revise a seção Outputs para obter os resultados detalhados da execução.

**Referências**

Automação do Systems Manager
+ [Execute esta automação (console)](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-CollectEKSLinuxNodeStatistics/description)
+ [Executar uma automação](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [Configurar a automação](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [Support Automation Workflows](https://aws.amazon.com/premiumsupport/technology/saw/)

# `AWSSupport-CollectEKSInstanceLogs`
<a name="automation-awssupport-collecteksinstancelogs"></a>

 **Descrição** 

 O runbook `AWSSupport-CollectEKSInstanceLogs` reúne arquivos de log relacionados ao sistema operacional e ao Amazon Elastic Kubernetes Service (Amazon EKS) de uma instância do Amazon Elastic Compute Cloud (Amazon EC2) para ajudar a solucionar problemas comuns. Enquanto a automação reúne os arquivos de log associados, são feitas alterações na estrutura do sistema de arquivos, incluindo a criação de diretórios temporários, a cópia dos arquivos de log nos diretórios temporários e a compactação dos arquivos de log em um arquivamento. Essa atividade pode resultar em aumento da `CPUUtilization` na instância do Amazon EC2. Para obter mais informações sobre`CPUUtilization`, consulte [Métricas de instância](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html#ec2-cloudwatch-metrics) no *Guia CloudWatch do usuário da Amazon*. 

 Se especificar um valor para o parâmetro `LogDestination`, a automação avaliará o status da política do bucket do Amazon Simple Storage Service (Amazon S3) que você especificar. Para ajudar na segurança dos logs coletados da sua instância do Amazon EC2, se o status da política `isPublic` estiver definido como `true`, ou se a lista de controle de acesso (ACL) conceder permissões de `READ|WRITE` ao grupo predefinido `All Users` do Amazon S3, os logs não serão carregados. Para obter mais informações sobre grupos predefinidos do Amazon S3, consulte [Grupos predefinidos do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#specifying-grantee-predefined-groups) no *Guia do usuário do Amazon Simple Storage Service*. 

**nota**  
Essa automação requer pelo menos 10% do espaço em disco disponível no volume raiz do Amazon Elastic Block Store (Amazon EBS) anexado à sua instância do Amazon EC2. Se não houver espaço em disco disponível suficiente no volume raiz, a automação será interrompida.

 [Executar esta automação (console)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-CollectEKSInstanceLogs) 

**Tipo de documento**

Automação

**Proprietário**

Amazon

**Plataformas**

Linux

**Parâmetros**
+ AutomationAssumeRole

  Tipo: String

  Descrição: (opcional) o nome do recurso da Amazon (ARN) do perfil do AWS Identity and Access Management (IAM) que permite que o Systems Manager Automation realize ações em seu nome. Se nenhum perfil for especificado, o Systems Manager Automation usa as permissões do usuário que inicia este runbook.
+ EKSInstanceIdentificação

  Tipo: string

  Descrição: (Obrigatório) ID da instância Amazon EKS do Amazon EC2 da qual você deseja coletar registros.
+ LogDestination

  Tipo: string

  Descrição: (Opcional) O bucket do Amazon Simple Storage Service (Amazon S3) em sua conta para o qual fazer o upload dos registros arquivados.

**Permissões obrigatórias do IAM**

O parâmetro `AutomationAssumeRole` requer as seguintes ações para usar o runbook com êxito.
+  `ssm:StartAutomationExecution` 
+  `ssm:GetAutomationExecution` 
+  `ssm:SendCommand`

 **Permissões do IAM necessárias para o perfil de instância do Amazon EC2** 

O perfil de instância usado pelo `EKSInstanceId` deve ter a política gerenciada SSMManaged InstanceCore da **Amazon** Amazon anexada a ele. 

 Ele também precisa ser capaz de acessar o bucket do `LogDestination` Amazon S3 para poder carregar os registros coletados. Abaixo está um exemplo de uma política do IAM que poderia ser anexada a esse perfil de instância:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetBucketPolicyStatus",
        "s3:GetBucketAcl"
      ],
      "Resource": [
        "arn:aws:s3:::LogDestination/*",
        "arn:aws:s3:::LogDestination"
      ]
    }
  ]
}
```

Se `LogDestination` usa AWS KMS criptografia, uma declaração adicional deve ser adicionada à política do IAM, concedendo acesso à AWS KMS chave usada na criptografia:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetBucketPolicyStatus",
        "s3:GetBucketAcl"
      ],
      "Resource": [
        "arn:aws:s3:::LogDestination/*",
        "arn:aws:s3:::LogDestination"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": "arn:aws:kms:REGION:ACCOUNT:key/KMS-KEY-ID"
    }
  ]
}
```

 **Etapas do documento** 
+  `aws:assertAwsResourceProperty` :Confirma se o sistema operacional do valor especificado no parâmetro `EKSInstanceId` é Linux. 
+  `aws:runCommand` :Reúne arquivos de log relacionados ao sistema operacional e ao Amazon EKS, compactando-os em um arquivo no diretório `/var/log`. 
+  `aws:branch` :Confirma se um valor foi especificado para o parâmetro de `LogDestination`. 
+  `aws:runCommand`- Carrega o arquivo de log no bucket do Amazon S3 que você especifica no `LogDestination` parâmetro. 

# `AWSSupport-SetupK8sApiProxyForEKS`
<a name="automation-awssupport-setupk8sapiproxyforeks"></a>

 **Descrição** 

O runbook de automação do **AWSSupport-SetupK8 sApiProxy ForEks** fornece uma maneira de criar uma AWS Lambda função que atua como proxy para fazer chamadas de API do plano de controle para o endpoint do cluster Amazon Elastic Kubernetes Service. Ele serve como um alicerce para runbooks que exigem a realização de chamadas de API no plano de controle para automatizar tarefas e solucionar problemas com um cluster Amazon EKS.

**Importante**  
Todos os recursos criados por essa automação são marcados para que possam ser facilmente encontrados. As tags usadas são:  
 `AWSSupport-SetupK8sApiProxyForEKS`: true 

**nota**  
A automação é um runbook auxiliar e não pode ser executada como um runbook independente. Ela é invocada como uma automação secundária para runbooks que exigem chamadas de API de plano de controle para o cluster Amazon EKS.
Certifique-se de executar a `Cleanup` operação após o uso para evitar custos indesejados.

**Tipo de documento**

Automação

**Proprietário**

Amazon

**Plataformas**

Linux

**Parâmetros**
+ AutomationAssumeRole

  Tipo: String

  Descrição: (opcional) o nome do recurso da Amazon (ARN) do perfil do AWS Identity and Access Management (IAM) que permite que o Systems Manager Automation realize ações em seu nome. Se nenhum perfil for especificado, o Systems Manager Automation usa as permissões do usuário que inicia este runbook.
+ ClusterName

  Tipo: string

  Descrição: (Obrigatório) O nome do cluster Amazon Elastic Kubernetes Service.
+ Operation

  Tipo: string

  Descrição: (Obrigatório) Operação a ser executada: `Setup` provisiona a função Lambda na conta, `Cleanup` desprovisionará recursos criados como parte da fase de configuração.

  Valores permitidos: `Setup` \$1 `Cleanup`

  Padrão: Configuração
+ LambdaRoleArn

  Tipo: string

  Descrição: (Opcional) O ARN da função do IAM que permite que a AWS Lambda função acesse os AWS serviços e recursos necessários. Se nenhuma função for especificada, esse Systems Manager Automation criará uma função do IAM para Lambda em sua conta com o nome `Automation-K8sProxy-Role-<ExecutionId>` que inclui as políticas gerenciadas: e. `AWSLambdaBasicExecutionRole` `AWSLambdaVPCAccessExecutionRole`

 **Como funciona?** 

 O runbook executa as seguintes etapas: 
+ Valida se a automação está sendo executada como uma execução secundária. O runbook não funcionará quando invocado como um runbook autônomo, pois ele não executa nenhum trabalho significativo sozinho.
+ Verifica a CloudFormation pilha existente da função proxy Lambda para o cluster especificado.
  + Se a pilha existir, a infraestrutura existente será reutilizada em vez de recriá-la.
  + Um contador de referência é mantido usando tags para garantir que um runbook não exclua a infraestrutura se ela estiver sendo reutilizada por outro runbook para o mesmo cluster.
+ Execute o tipo de operação (`Setup`/`Cleanup`) especificado para a invocação:
  + **Configuração:** cria ou descreve os recursos existentes.

    **Limpeza:** remove os recursos provisionados, se a infraestrutura não estiver sendo usada por nenhum outro runbook.

 **Permissões obrigatórias do IAM** 

O `AutomationAssumeRole` parâmetro exige que as seguintes permissões concedidas ` LambdaRoleArn` não sejam passadas:
+  `cloudformation:CreateStack` 
+  `cloudformation:DescribeStacks` 
+  `cloudformation:DeleteStack` 
+  `cloudformation:UpdateStack` 
+  `ec2:CreateNetworkInterface` 
+  `ec2:DescribeNetworkInterfaces` 
+  `ec2:DescribeRouteTables` 
+  `ec2:DescribeSecurityGroups` 
+  `ec2:DescribeSubnets` 
+  `ec2:DescribeVpcs` 
+  `ec2:DeleteNetworkInterface` 
+  `eks:DescribeCluster` 
+  `lambda:CreateFunction` 
+  `lambda:DeleteFunction` 
+  `lambda:ListTags` 
+  `lambda:GetFunction` 
+  `lambda:ListTags` 
+  `lambda:TagResource` 
+  `lambda:UntagResource` 
+  `lambda:UpdateFunctionCode` 
+  `logs:CreateLogGroup` 
+  `logs:PutRetentionPolicy` 
+  `logs:TagResource` 
+  `logs:UntagResource` 
+  `logs:DescribeLogGroups` 
+  `logs:DescribeLogStreams` 
+  `logs:ListTagsForResource` 
+  `iam:CreateRole` 
+  `iam:AttachRolePolicy` 
+  `iam:DetachRolePolicy` 
+  `iam:PassRole` 
+  `iam:GetRole` 
+  `iam:DeleteRole` 
+  `iam:TagRole` 
+  `iam:UntagRole` 
+  `tag:GetResources` 
+  `tag:TagResources` 

Quando `LambdaRoleArn` fornecida, a automação não precisa criar a função e as seguintes permissões podem ser excluídas:
+  `iam:CreateRole` 
+  `iam:DeleteRole` 
+  `iam:TagRole` 
+  `iam:UntagRole` 
+  `iam:AttachRolePolicy` 
+  `iam:DetachRolePolicy` 

Abaixo está um exemplo de política que demonstra as permissões necessárias para ` AutomationAssumeRole` quando não `LambdaRoleArn` é aprovada:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "tag:GetResources",
                "tag:TagResources",
                "ec2:CreateNetworkInterface",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeRouteTables",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "ec2:DeleteNetworkInterface",
                "eks:DescribeCluster",
                "iam:GetRole",
                "cloudformation:DescribeStacks",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams",
                "lambda:GetFunction",
                "lambda:ListTags",
                "logs:ListTagsForResource"
            ],
            "Resource": "*",
            "Effect": "Allow",
            "Sid": "AllowActionsWithoutConditions"
        },
        {
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/AWSSupport-SetupK8sApiProxyForEKS": "true"
                }
            },
            "Action": "iam:CreateRole",
            "Resource": [
                "arn:aws:iam::111122223333:role/Automation-K8sProxy*"
            ],
            "Effect": "Allow",
            "Sid": "AllowCreateRoleWithRequiredTag"
        },
        {
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/AWSSupport-SetupK8sApiProxyForEKS": "true"
                }
            },
            "Action": [
                "iam:DeleteRole",
                "iam:TagRole",
                "iam:UntagRole"
            ],
            "Resource": [
                "arn:aws:iam::111122223333:role/Automation-K8sProxy*"
            ],
            "Effect": "Allow",
            "Sid": "IAMActions"
        },
        {
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/AWSSupport-SetupK8sApiProxyForEKS": "true"
                },
                "StringLike": {
                    "iam:PolicyARN": [
                        "arn:aws:iam::111122223333:policy/service-role/AWSLambdaBasicExecutionRole",
                        "arn:aws:iam::111122223333:policy/service-role/AWSLambdaVPCAccessExecutionRole"
                    ]
                }
            },
            "Action": [
                "iam:AttachRolePolicy",
                "iam:DetachRolePolicy"
            ],
            "Resource": [
                "arn:aws:iam::111122223333:role/Automation-K8sProxy*"
            ],
            "Effect": "Allow",
            "Sid": "AttachRolePolicy"
        },
        {
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/AWSSupport-SetupK8sApiProxyForEKS": "true"
                }
            },
            "Action": [
                "lambda:CreateFunction",
                "lambda:DeleteFunction",
                "lambda:TagResource",
                "lambda:UntagResource",
                "lambda:UpdateFunctionCode"
            ],
            "Resource": "arn:aws:lambda:us-east-1:111122223333:function:Automation-K8sProxy*",
            "Effect": "Allow",
            "Sid": "LambdaActions"
        },
        {
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/AWSSupport-SetupK8sApiProxyForEKS": "true"
                }
            },
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:DeleteStack",
                "cloudformation:UpdateStack"
            ],
            "Resource": "arn:aws:cloudformation:us-east-1:111122223333:stack/AWSSupport-SetupK8sApiProxyForEKS*",
            "Effect": "Allow",
            "Sid": "CloudFormationActions"
        },
        {
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/AWSSupport-SetupK8sApiProxyForEKS": "true"
                }
            },
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:PutRetentionPolicy",
                "logs:TagResource",
                "logs:UntagResource"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:111122223333:log-group:/aws/lambda/Automation-K8sProxy*",
                "arn:aws:logs:us-east-1:111122223333:log-group:/aws/lambda/Automation-K8sProxy*:*"
            ],
            "Effect": "Allow",
            "Sid": "LogsActions"
        },
        {
            "Condition": {
                "StringLikeIfExists": {
                    "iam:PassedToService": "lambda.amazonaws.com"
                }
            },
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::111122223333:role/Automation-K8sProxy-Role*"
            ],
            "Effect": "Allow",
            "Sid": "PassRoleToLambda"
        }
    ]
}
```

------

 Caso `LambdaRoleArn` seja aprovado, certifique-se de que ele tenha uma [ AWSLambdaBasicExecutionRole ](https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/details/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2Fservice-role%2FAWSLambdaBasicExecutionRole)política anexada para clusters públicos e, além disso, [ AWSLambdaVPCAccessExecutionRole ](https://console.aws.amazon.com/iam/home?region=us-east-1#/policies/details/arn%3Aaws%3Aiam%3A%3Aaws%3Apolicy%2Fservice-role%2FAWSLambdaVPCAccessExecutionRole)para clusters privados. 

 **Recursos criados** 

Os seguintes recursos são criados durante a `Setup` operação:

1. AWS Lambda função

1. Função do IAM: função de execução do Lambda, se não for fornecida.

1. CloudWatch Grupo de registros (Lambda Logs)

 *A função Lambda e a função de execução são mantidas até que a `Cleanup` operação seja executada. O grupo de registros do Lambda será retido por 30 dias ou até que seja excluído manualmente.* 

 **Instruções** 

O runbook é um utilitário auxiliar projetado para ser executado a partir de outros runbooks como uma automação infantil. Ele facilita a criação de uma infraestrutura que permite que o runbook principal faça chamadas à API do plano de controle do Amazon EKS K8s. Para usar o runbook, você pode seguir as etapas abaixo no contexto da automação principal.

1. **Fase de configuração**: invoque a automação usando a operação de ` aws:executeAutomation` ação do runbook que gostaria de fazer chamadas de API do plano de controle do Amazon EKS K8s com a operação definida como. `Setup`

   Exemplo de parâmetros de entrada:

   ```
      {
        "AutomationAssumeRole": "<role-arn>",
        "ClusterName": "<eks-cluster-name>",
        "Operation": "Setup"
      }
   ```

   A saída da `aws:executeAutomation` etapa conterá o ARN da função proxy Lambda.

1. **Usando o Lambda Proxy**: invoque a função Lambda dentro da `aws:executeScript` ação usando `boto3`'s ` Lambda.Client.invoke(...)` com uma lista de caminhos de chamada de API e token portador. A função Lambda executará `GET` chamadas HTTP para o caminho especificado passando o token portador como parte do cabeçalho de autorização.

   Exemplo do evento de invocação do Lambda:

   ```
      {
          "ApiCalls": ["/api/v1/pods/", ...],
          "BearerToken": "..."
      }
   ```
**nota**  
O token portador deve ser gerado como parte do script de automação principal. Você precisa garantir que o principal que executa o runbook principal tenha permissão somente de leitura para o cluster Amazon EKS especificado.

1. **Fase de limpeza**: invoque a automação usando a operação de ` aws:executeAutomation` ação do runbook que gostaria de fazer chamadas de API do plano de controle do Amazon EKS K8s com a operação definida como. `Cleanup`

   Exemplo de parâmetros de entrada:

   ```
      {
        "AutomationAssumeRole": "<role-arn>",
        "ClusterName": "<eks-cluster-name>",
        "Operation": "Cleanup"
      }
   ```

 **Etapas de automação** 

1.  **ValidateExecution** 
   + Verifica se a automação não está sendo executada como uma execução autônoma.

1.  **CheckForExistingStack** 
   + Verifica se uma CloudFormation pilha já foi provisionada para o nome do cluster especificado.
   + Retorna o status de existência da pilha e se é seguro excluí-la.

1.  **BranchOnIsStackExists** 
   + Etapa de decisão que se ramifica com base na existência da pilha.
   + Rotas para atualizar o nome da pilha existente ou continuar com a ramificação da operação.

1.  **UpdateStackName** 
   + Atualiza a `StackName` variável com o nome da pilha existente.
   + Executado somente se a pilha já existir.

1.  **BranchOnOperation** 
   + Encaminha a automação com base no `Operation` parâmetro (`Setup`/`Cleanup`).
   + Para`Setup`: Rotas para criar uma nova pilha ou descrever os recursos existentes.
   + Para`Cleanup`: Prossegue com a exclusão da pilha, se for seguro excluir.

1.  **GetClusterNetworkConfig** 
   + Descreve o cluster Amazon EKS para obter a configuração da VPC.
   + Recupera dados do endpoint, da VPC ID, da sub-rede IDs, do grupo de segurança e da CA.

1.  **ProvisionResources** 
   + Cria uma CloudFormation pilha com os recursos necessários.
   + Provisiona a função Lambda com a configuração de rede necessária.
   + Marca todos os recursos para rastreamento e gerenciamento.

1.  **DescribeStackResources** 
   + Recupera informações sobre a created/existing pilha.
   + Obtém o ARN da função Lambda provisionada.

1.  **BranchOnIsLambdaDeploymentRequired** 
   + Determina se a implantação do código Lambda é necessária.
   + Só prossegue com a implantação de pilhas recém-criadas.

1.  **DeployLambdaFunctionCode** 
   + Implanta o código da função Lambda usando o pacote de implantação.
   + Atualiza a função com a implementação do proxy.

1.  **AssertLambdaAvailable** 
   + Verifica se a atualização do código da função Lambda foi bem-sucedida.
   + Espera que a função esteja no `Successful` estado.

1.  **PerformStackCleanup** 
   + Exclui a CloudFormation pilha e os recursos associados.
   + Executado durante `Cleanup` a operação ou em caso de falha na ` Setup` operação.

 **Saídas** 

*LambdaFunctionArn*: ARN da função proxy Lambda

**Referências**

Automação do Systems Manager
+ [Executar uma automação](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [Configurar a automação](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [Fluxos de trabalho de automação de suporte](https://aws.amazon.com/premiumsupport/technology/saw/)

# `AWSSupport-TroubleshootEbsCsiDriversForEks`
<a name="automation-awssupport-troubleshoot-ebs-csi-drivers-for-eks"></a>

 **Descrição** 

 O `AWSSupport-TroubleshootEbsCsiDriversForEks` runbook ajuda a solucionar problemas com montagens de volume do Amazon Elastic Block Store no Amazon Elastic Kubernetes Service (Amazon EKS) e problemas de driver do Amazon EBS Container Storage Interface (CSI) 

**Importante**  
Atualmente, o driver CSI do Amazon EBS em execução não AWS Fargate é suportado.

 **Como funciona?** 

 O runbook `AWSSupport-TroubleshootEbsCsiDriversForEks` executa as seguintes etapas de alto nível: 
+ Verifica se o cluster de destino do Amazon EKS existe e está no estado ativo.
+ Implanta os recursos de autenticação necessários para fazer chamadas de API do Kubernetes com base no fato de o complemento ser gerenciado ou autogerenciado pelo Amazon EKS.
+ Executa verificações e diagnósticos de saúde do controlador Amazon EBS CSI.
+ Executa verificações de permissões do IAM nas funções dos nós e nas funções da conta de serviço.
+ Diagnostica problemas persistentes de criação de volume para o pod de aplicativo especificado.
+ Verifica o node-to-pod agendamento e examina os eventos do pod.
+ Coleta registros relevantes do Kubernetes e do aplicativo, enviando-os para o bucket especificado do Amazon S3.
+ Executa verificações de integridade dos nós e verifica a conectividade com os endpoints do Amazon EC2.
+ Analisa os anexos persistentes do dispositivo de bloqueio de volume e o status de montagem.
+ Limpa a infraestrutura de autenticação criada durante a solução de problemas.
+ Gera um relatório abrangente de solução de problemas combinando todos os resultados do diagnóstico.

**nota**  
O modo de autenticação do cluster Amazon EKS deve ser definido como `API` ou`API_AND_CONFIG_MAP`. Recomendamos usar a entrada Amazon EKS Access. O runbook exige permissões de controle de acesso baseado em funções (RBAC) do Kubernetes para realizar as chamadas de API necessárias.
Se você não especificar uma função do IAM para a função Lambda (`LambdaRoleArn`parâmetro), a automação cria uma função nomeada `Automation-K8sProxy-Role-<ExecutionId>` na sua conta. Essa função inclui as políticas gerenciadas `AWSLambdaBasicExecutionRole` `AWSLambdaVPCAccessExecutionRole` e.
Algumas etapas de diagnóstico exigem que os nós de trabalho do Amazon EKS sejam instâncias gerenciadas pelo Systems Manager. Se os nós não forem instâncias gerenciadas pelo Systems Manager, as etapas que exigem acesso ao Systems Manager serão ignoradas, mas outras verificações continuarão.
A automação inclui uma etapa de limpeza que remove os recursos da infraestrutura de autenticação. Essa etapa de limpeza é executada mesmo quando as etapas anteriores falham, o que ajuda a evitar recursos órfãos em sua conta. AWS 

 [Executar esta automação (console)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootEbsCsiDriversForEks) 

**Tipo de documento**

Automação

**Proprietário**

Amazon

**Plataformas**

/

**Permissões obrigatórias do IAM**

O parâmetro `AutomationAssumeRole` requer as seguintes ações para usar o runbook com êxito.
+ `ec2:DescribeIamInstanceProfileAssociations`
+ `ec2:DescribeInstanceStatus`
+ `ec2:GetEbsEncryptionByDefault`
+ `eks:DescribeAddon`
+ `eks:DescribeAddonVersions`
+ `eks:DescribeCluster`
+ `iam:GetInstanceProfile`
+ `iam:GetOpenIDConnectProvider`
+ `iam:GetRole`
+ `iam:ListOpenIDConnectProviders`
+ `iam:SimulatePrincipalPolicy`
+ `s3:GetBucketLocation`
+ `s3:GetBucketPolicyStatus`
+ `s3:GetBucketPublicAccessBlock`
+ `s3:GetBucketVersioning`
+ `s3:ListBucket`
+ `s3:ListBucketVersions`
+ `ssm:DescribeInstanceInformation`
+ `ssm:GetAutomationExecution`
+ `ssm:GetDocument`
+ `ssm:ListCommandInvocations`
+ `ssm:ListCommands`
+ `ssm:SendCommand`
+ `ssm:StartAutomationExecution`

 **Instruções** 

Siga estas etapas para configurar a automação:

1. Crie uma função de automação de SSM `TroubleshootEbsCsiDriversForEks-SSM-Role` em sua conta. Verifique se a relação de confiança contém a seguinte política.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Principal": {
                   "Service": "ssm.amazonaws.com"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. Anexe a política abaixo à função do IAM para conceder as permissões necessárias para realizar as ações especificadas nos recursos especificados.
   + Se você espera fazer o upload de registros de execução e recursos para o bucket do Amazon S3 na AWS mesma região, `arn:{partition}:s3:::BUCKET_NAME/*` substitua os seus em. `OptionalRestrictPutObjects`
     + O bucket do Amazon S3 deve apontar para o bucket correto do Amazon S3 se você `S3BucketName` selecionar na execução do SSM.
     + Essa permissão é opcional se você não especificar `S3BucketName`
     + O bucket do Amazon S3 deve ser privado e estar na mesma AWS região em que você executa a automação do SSM.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "OptionalRestrictPutObjects",
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject"
               ],
               "Resource": [
                   "arn:aws:s3:::amzn-s3-demo-bucket/*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:DescribeIamInstanceProfileAssociations",
                   "ec2:DescribeInstanceStatus",
                   "ec2:GetEbsEncryptionByDefault",
                   "eks:DescribeAddon",
                   "eks:DescribeAddonVersions",
                   "eks:DescribeCluster",
                   "iam:GetInstanceProfile",
                   "iam:GetOpenIDConnectProvider",
                   "iam:GetRole",
                   "iam:ListOpenIDConnectProviders",
                   "iam:SimulatePrincipalPolicy",
                   "s3:GetBucketLocation",
                   "s3:GetBucketPolicyStatus",
                   "s3:GetBucketPublicAccessBlock",
                   "s3:GetBucketVersioning",
                   "s3:ListBucket",
                   "s3:ListBucketVersions",
                   "ssm:DescribeInstanceInformation",
                   "ssm:GetAutomationExecution",
                   "ssm:GetDocument",
                   "ssm:ListCommandInvocations",
                   "ssm:ListCommands",
                   "ssm:SendCommand",
                   "ssm:StartAutomationExecution"
               ],
               "Resource": "*"
           },
           {
               "Sid": "SetupK8sApiProxyForEKSActions",
               "Effect": "Allow",
               "Action": [
                   "cloudformation:CreateStack",
                   "cloudformation:DeleteStack",
                   "cloudformation:DescribeStacks",
                   "cloudformation:UpdateStack",
                   "ec2:CreateNetworkInterface",
                   "ec2:DeleteNetworkInterface",
                   "ec2:DescribeNetworkInterfaces",
                   "ec2:DescribeRouteTables",
                   "ec2:DescribeSecurityGroups",
                   "ec2:DescribeSubnets",
                   "ec2:DescribeVpcs",
                   "eks:DescribeCluster",
                   "iam:CreateRole",
                   "iam:DeleteRole",
                   "iam:GetRole",
                   "iam:TagRole",
                   "iam:UntagRole",
                   "lambda:CreateFunction",
                   "lambda:DeleteFunction",
                   "lambda:GetFunction",
                   "lambda:InvokeFunction",
                   "lambda:ListTags",
                   "lambda:TagResource",
                   "lambda:UntagResource",
                   "lambda:UpdateFunctionCode",
                   "logs:CreateLogGroup",
                   "logs:CreateLogStream",
                   "logs:DescribeLogGroups",
                   "logs:DescribeLogStreams",
                   "logs:ListTagsForResource",
                   "logs:PutLogEvents",
                   "logs:PutRetentionPolicy",
                   "logs:TagResource",
                   "logs:UntagResource",
                   "ssm:DescribeAutomationExecutions",
                   "tag:GetResources",
                   "tag:TagResources"
               ],
               "Resource": "*"
           },
           {
               "Sid": "PassRoleToAutomation",
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": [
                   "arn:aws:iam::*:role/TroubleshootEbsCsiDriversForEks-SSM-Role",
                   "arn:aws:iam::*:role/Automation-K8sProxy-Role-*"
               ],
               "Condition": {
                   "StringLikeIfExists": {
                       "iam:PassedToService": [
                           "lambda.amazonaws.com",
                           "ssm.amazonaws.com"
                       ]
                   }
               }
           },
           {
               "Sid": "AttachRolePolicy",
               "Effect": "Allow",
               "Action": [
                   "iam:AttachRolePolicy",
                   "iam:DetachRolePolicy"
               ],
               "Resource": "*",
               "Condition": {
                   "StringLikeIfExists": {
                       "iam:ResourceTag/AWSSupport-SetupK8sApiProxyForEKS": "true"
                   }
               }
           }
       ]
   }
   ```

------

1. Conceda as permissões necessárias para o cluster RBAC (Role-Based Access Control) do Amazon EKS. A abordagem recomendada é criar uma entrada de acesso no seu cluster Amazon EKS.

    No console do Amazon EKS, navegue até seu cluster. Para entradas de acesso do Amazon EKS, verifique se sua configuração de acesso está definida como `API_AND_CONFIG_MAP` ou`API`. Para ver as etapas para configurar o modo de autenticação para entradas de acesso, consulte [Configurando entradas de acesso](https://docs.aws.amazon.com//eks/latest/userguide/setting-up-access-entries.html). 

   Selecione **Criar entrada de acesso**.
   + Para o *ARN principal do IAM*, selecione a função do IAM que você criou para a automação do SSM na etapa anterior.
   + Em *Tipo*, selecione `Standard`.

1. Adicione uma política de acesso:
   + Em *Escopo do Access*, selecione`Cluster`.
   + Em *Nome da política*, selecione`AmazonEKSAdminViewPolicy`.

   Escolha **Add policy**.

   Se você não estiver usando entradas de acesso para gerenciar as permissões da API Kubernetes, `aws-auth` ConfigMap atualize e crie uma associação de função entre seu usuário ou função do IAM. Certifique-se de que sua entidade do IAM tenha as seguintes permissões de API Kubernetes somente para leitura:
   + GET `/apis/apps/v1/namespaces/{namespace}/deployments/{name}`
   + GET `/apis/apps/v1/namespaces/{namespace}/replicasets/{name}`
   + GET `/apis/apps/v1/namespaces/{namespace}/daemonsets/{name}`
   + GET `/api/v1/nodes/{name}`
   + GET `/api/v1/namespaces/{namespace}/serviceaccounts/{name}`
   + GET `/api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}`
   + GET `/api/v1/persistentvolumes/{name}`
   + GET `/apis/storage.k8s.io/v1/storageclasses/{name}`
   + GET `/api/v1/namespaces/{namespace}/pods/{name}`
   + GET `/api/v1/namespaces/{namespace}/pods`
   + GET `/api/v1/namespaces/{namespace}/pods/{name}/log`
   + GET `/api/v1/events`

1. Execute a automação [AWSSupport-TroubleshootEbsCsiDriversForEks (console)](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootEbsCsiDriversForEks/description)

1. Selecione **Execute automation (Executar automação)**.

1. Para os parâmetros de entrada, insira o seguinte:
   + **AutomationAssumeRole (Opcional):**
     + Descrição: (Opcional) O Amazon Resource Name (ARN) da função AWS Identity and Access Management (IAM) que permite que o SSM Automation execute as ações em seu nome. A função precisa ser adicionada à sua entrada de acesso ao cluster Amazon EKS ou à permissão RBAC para permitir chamadas de API do Kubernetes.
     + Tipo: `AWS::IAM::Role::Arn`
     + Exemplo: `TroubleshootEbsCsiDriversForEks-SSM-Role`
   + **EksClusterName:**
     + Descrição: O nome do cluster de destino do Amazon Elastic Kubernetes Service (Amazon EKS).
     + Tipo: `String`
   + **ApplicationPodName:**
     + Descrição: O nome do pod do aplicativo Kubernetes com problemas com o driver CSI do Amazon EBS.
     + Tipo: `String`
   + **ApplicationNamespace:**
     + Descrição: O namespace Kubernetes para o pod do aplicativo com problemas com o driver CSI do Amazon EBS.
     + Tipo: `String`
   + **EbsCsiControllerDeploymentName(Opcional):**
     + Descrição: (Opcional) O nome da implantação do pod controlador CSI do Amazon EBS.
     + Tipo: `String`
     + Padrão: `ebs-csi-controller`
   + **EbsCsiControllerNamespace(Opcional):**
     + Descrição: (Opcional) O namespace Kubernetes para o pod controlador CSI do Amazon EBS.
     + Tipo: `String`
     + Padrão: `kube-system`
   + **S3 BucketName (opcional):**
     + Descrição: (Opcional) O nome do bucket de destino do Amazon S3 para o qual os registros de solução de problemas serão carregados.
     + Tipo: `AWS::S3::Bucket::Name`
   + **LambdaRoleArn (Opcional):**
     + Descrição: (Opcional) O ARN da função do IAM que permite que a AWS Lambda função acesse os AWS serviços e recursos necessários.
     + Tipo: `AWS::IAM::Role::Arn`

   Selecione **Executar**.

1. Depois de concluído, revise a seção *Saídas* para obter os resultados detalhados da execução.

**Referências**

Automação do Systems Manager
+ [Execute esta automação (console)](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootEbsCsiDriversForEks/description)
+ [Executar uma automação](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [Configurar a automação](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [Support Automation Workflows](https://aws.amazon.com/premiumsupport/technology/saw/)

Para obter mais informações sobre o Amazon EBS CSI Driver, consulte [Amazon EBS](https://docs.aws.amazon.com//eks/latest/userguide/ebs-csi.html) CSI Driver.

# `AWSSupport-TroubleshootEKSALBControllerIssues`
<a name="automation-awssupport-troubleshoot-eks-alb-controller-issues"></a>

 **Descrição** 

 O runbook de `AWSSupport-TroubleshootEKSALBControllerIssues` automação ajuda a diagnosticar problemas comuns que impedem o Load AWS Balancer Controller de provisionar e gerenciar adequadamente o Application Load Balancer (ALB) e o Network Load Balancer (NLB) para entradas e serviços do Kubernetes. 

 Esse runbook executa a end-to-end validação de componentes essenciais, incluindo configuração do provedor de identidade OIDC, configuração do IRSA, pré-requisitos de rede, configuração e cotas de recursos. ingress/service Ele também captura registros do controlador e configurações de recursos relevantes do Kubernetes para ajudar a identificar configurações incorretas ou problemas operacionais. 

**Importante**  
Esse runbook de automação foi projetado para clusters do Amazon EKS usando grupos de nós do Amazon Elastic Compute Cloud (Amazon EC2) e atualmente não oferece suporte a clusters em execução. AWS Fargate

 **Como funciona?** 

 O runbook `AWSSupport-TroubleshootEKSALBControllerIssues` executa as seguintes etapas de alto nível: 
+ Valida o status do cluster Amazon EKS, a configuração da entrada de acesso e a configuração do provedor OIDC.
+ Cria um proxy Lambda temporário para comunicação com a API Kubernetes.
+ Verifica a implantação do AWS Load Balancer Controller e a configuração da conta de serviço.
+ Verifica a identidade do pod, o webhook e a injeção de função do IAM.
+ Valida a configuração e a marcação da sub-rede para o provisionamento do Application Load Balancer e do Network Load Balancer.
+ Verifica as cotas das contas do Application Load Balancer e do Network Load Balancer em relação ao uso atual.
+ Valida as anotações de entrada e de recursos de serviço.
+ Verifica a marcação do grupo de segurança do nó de trabalho quanto à integração do balanceador de carga.
+ Coleta os registros do pod do controlador para diagnóstico.
+ Limpa os recursos de autenticação temporária.
+ Gera relatório de diagnóstico com descobertas e etapas de remediação.

**nota**  
O cluster Amazon EKS deve ter uma entrada de acesso configurada para a entidade IAM que executa essa automação. O modo de autenticação do cluster deve ser definido como `API` ou`API_AND_CONFIG_MAP`. Sem a configuração adequada da entrada de acesso, a automação será encerrada durante a validação inicial.
O `LambdaRoleArn` parâmetro é obrigatório e deve ter as políticas AWS gerenciadas `AWSLambdaBasicExecutionRole` e `AWSLambdaVPCAccessExecutionRole` anexadas para permitir que a função proxy se comunique com a API Kubernetes.
O AWS Load Balancer Controller deve ser uma versão `v2.1.1` ou posterior.
A automação inclui uma etapa de limpeza que remove os recursos temporários da infraestrutura de autenticação. Essa etapa de limpeza é executada mesmo quando as etapas anteriores falham, garantindo que nenhum recurso órfão permaneça na sua conta. AWS 

 [Executar esta automação (console)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootEKSALBControllerIssues) 

**Tipo de documento**

Automação

**Proprietário**

Amazon

**Plataformas**

/

**Permissões obrigatórias do IAM**

O parâmetro `AutomationAssumeRole` requer as seguintes ações para usar o runbook com êxito.
+ `cloudformation:CreateStack`
+ `cloudformation:DeleteStack`
+ `cloudformation:DescribeStacks`
+ `cloudformation:UpdateStack`
+ `ec2:CreateNetworkInterface`
+ `ec2:DeleteNetworkInterface`
+ `ec2:DescribeInstances`
+ `ec2:DescribeNetworkInterfaces`
+ `ec2:DescribeRouteTables`
+ `ec2:DescribeSecurityGroups`
+ `ec2:DescribeSubnets`
+ `ec2:DescribeVpcs`
+ `eks:DescribeCluster`
+ `eks:ListAssociatedAccessPolicies`
+ `elasticloadbalancing:DescribeAccountLimits`
+ `elasticloadbalancing:DescribeLoadBalancers`
+ `iam:GetRole`
+ `iam:ListOpenIDConnectProviders`
+ `iam:PassRole`
+ `lambda:CreateFunction`
+ `lambda:DeleteFunction`
+ `lambda:GetFunction`
+ `lambda:InvokeFunction`
+ `lambda:ListTags`
+ `lambda:TagResource`
+ `lambda:UntagResource`
+ `lambda:UpdateFunctionCode`
+ `logs:CreateLogGroup`
+ `logs:CreateLogStream`
+ `logs:DescribeLogGroups`
+ `logs:DescribeLogStreams`
+ `logs:ListTagsForResource`
+ `logs:PutLogEvents`
+ `logs:PutRetentionPolicy`
+ `logs:TagResource`
+ `logs:UntagResource`
+ `ssm:DescribeAutomationExecutions`
+ `ssm:GetAutomationExecution`
+ `ssm:StartAutomationExecution`
+ `tag:GetResources`
+ `tag:TagResources`

 **Instruções** 

Siga estas etapas para configurar e executar a automação:

**nota**  
Antes de executar a automação, siga estas etapas para configurar as funções necessárias do IAM: uma para que o Systems Manager Automation execute o runbook e outra para o Lambda se comunicar com a API Kubernetes:  
Crie uma função de automação de SSM `TroubleshootEKSALBController-SSM-Role` em sua conta. Verifique se a relação de confiança contém a seguinte política.  

   ```
   {
               "Version": "2012-10-17",		 	 	 
               "Statement": [
                   {
                       "Sid": "",
                       "Effect": "Allow",
                       "Principal": {
                           "Service": "ssm.amazonaws.com"
                       },
                       "Action": "sts:AssumeRole"
                   }
               ]
           }
   ```
Anexe a seguinte política do IAM para conceder as permissões necessárias:  

   ```
   {
               "Version": "2012-10-17",		 	 	 
               "Statement": [{
                   "Sid": "TroubleshootEKSALBControllerIssuesActions",
                   "Effect": "Allow",
                   "Action": [
                       "eks:DescribeCluster",
                       "eks:ListAssociatedAccessPolicies",
                       "iam:GetRole",
                       "iam:ListOpenIDConnectProviders",
                       "ssm:StartAutomationExecution",
                       "ssm:GetAutomationExecution",
                       "ssm:DescribeAutomationExecutions",
                       "ec2:DescribeSubnets",
                       "ec2:DescribeRouteTables",
                       "elasticloadbalancing:DescribeLoadBalancers",
                       "elasticloadbalancing:DescribeAccountLimits",
                       "ec2:DescribeInstances",
                       "ec2:DescribeNetworkInterfaces",
                       "ec2:DescribeSecurityGroups"
                   ],
                   "Resource": "*"
               },
               {
                   "Sid": "SetupK8sApiProxyForEKSActions",
                   "Effect": "Allow",
                   "Action": [
                       "cloudformation:CreateStack",
                       "cloudformation:DeleteStack",
                       "cloudformation:DescribeStacks",
                       "cloudformation:UpdateStack",
                       "ec2:CreateNetworkInterface",
                       "ec2:DeleteNetworkInterface",
                       "ec2:DescribeNetworkInterfaces",
                       "ec2:DescribeRouteTables",
                       "ec2:DescribeSecurityGroups",
                       "ec2:DescribeSubnets",
                       "ec2:DescribeVpcs",
                       "eks:DescribeCluster",
                       "iam:GetRole",
                       "lambda:CreateFunction",
                       "lambda:DeleteFunction",
                       "lambda:GetFunction",
                       "lambda:InvokeFunction",
                       "lambda:ListTags",
                       "lambda:TagResource",
                       "lambda:UntagResource",
                       "lambda:UpdateFunctionCode",
                       "logs:CreateLogGroup",
                       "logs:CreateLogStream",
                       "logs:DescribeLogGroups",
                       "logs:DescribeLogStreams",
                       "logs:ListTagsForResource",
                       "logs:PutLogEvents",
                       "logs:PutRetentionPolicy",
                       "logs:TagResource",
                       "logs:UntagResource",
                       "ssm:DescribeAutomationExecutions",
                       "tag:GetResources",
                       "tag:TagResources"
                   ],
                   "Resource": "*"
               },
               {
                   "Sid": "PassRoleToAutomation",
                   "Effect": "Allow",
                   "Action": "iam:PassRole",
                   "Resource": "*",
                   "Condition": {
                       "StringLikeIfExists": {
                           "iam:PassedToService": [
                               "lambda.amazonaws.com",
                               "ssm.amazonaws.com"
                           ]
                       }
                   }
               }]
           }
   ```
Configure a entrada de acesso para seu cluster Amazon EKS. Esse é um requisito obrigatório para a automação. Para ver as etapas para configurar o modo de autenticação para entradas de acesso, consulte [Configurando entradas de acesso](https://docs.aws.amazon.com//eks/latest/userguide/setting-up-access-entries.html).  
No console do Amazon EKS, navegue até seu cluster e siga estas etapas:  
Na seção **Acesso**, verifique se sua configuração de autenticação está definida como `API` ou`API_AND_CONFIG_MAP`.
Escolha **Criar entrada de acesso** e configure:  
Para o *ARN principal do IAM*, selecione a função do IAM que você criou ()`TroubleshootEKSALBController-SSM-Role`.
Em *Tipo*, selecione `Standard`.
Adicione uma política de acesso:  
Em *Nome da política*, selecione`AmazonEKSAdminViewPolicy`.
Em *Escopo do Access*, selecione`Cluster`.
Escolha **Add policy**.
Verifique os detalhes e escolha **Criar**.
Crie uma função do IAM para a função Lambda (referenciada `LambdaRoleArn` nos parâmetros de entrada):  
Crie uma nova função do IAM com a seguinte política de confiança:  

     ```
     {
                 "Version": "2012-10-17",		 	 	 
                 "Statement": [
                     {
                         "Effect": "Allow",
                         "Principal": {
                             "Service": "lambda.amazonaws.com"
                         },
                         "Action": "sts:AssumeRole"
                     }
                 ]
             }
     ```
Anexe as seguintes políticas AWS gerenciadas a essa função:  
`AWSLambdaBasicExecutionRole`
`AWSLambdaVPCAccessExecutionRole`
Observe o ARN dessa função, pois você precisará dele para o parâmetro `LambdaRoleArn` de entrada.

1. Navegue até [AWSSupport-TroubleshootEKSALBControllerIssues](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootEKSALBControllerIssues/description)o console do AWS Systems Manager.

1. Escolha **Execute automation**.

1. Você pode usar os seguintes parâmetros de entrada:
   + **AutomationAssumeRole (Opcional):**

     Tipo AWS::IAM::Role: :Arn

     Descrição: (Opcional) O Amazon Resource Name (ARN) da função AWS Identity and Access Management (IAM) que permite que o Systems Manager Automation execute ações em seu nome. Se nenhum perfil for especificado, o Systems Manager Automation usa as permissões do usuário que inicia este runbook.

     Padrão permitido: ^arn :(? :aws\$1aws-cn\$1aws-us-gov) :iam::\$1 d \$112\$1 :função/? [A-zA-Z\$10-9\$1=, .@\$1 -\$1/] \$1\$1
   + **EksClusterName (Obrigatório):**

     Tipo: string

     Descrição: (Obrigatório) Nome do cluster Amazon Elastic Kubernetes Service (Amazon EKS).

     Padrão permitido: ^ [0-9a-zA-z] [a-zA-z0-9-\$1] \$10,99\$1 \$1
   + **ALBControllerDeploymentName (Opcional):**

     Tipo: string

     Descrição: (Opcional) O nome da implantação do AWS Load Balancer Controller em seu cluster Amazon EKS. Normalmente, é 'aws-load-balancer-controller', a menos que você o tenha personalizado durante a instalação.

     Padrão permitido: ^ [a-z0-9] ([-.a-z0-9] \$10,251\$1 [a-z0-9])? \$1

     Padrão: aws-load-balancer-controller
   + **ALBControllerNamespace (opcional):**

     Tipo: string

     Descrição: (Opcional) O namespace Kubernetes em que o Load Balancer AWS Controller é implantado. Por padrão, isso é 'kube-system', mas pode ser diferente se você tiver instalado o controlador em um namespace personalizado.

     Padrão permitido: ^ [a-z0-9] ([-a-z0-9] \$10,61\$1 [a-z0-9])? \$1

     Padrão: kube-system
   + **ServiceAccountName (Opcional):**

     Tipo: string

     Descrição: (Opcional) O nome da conta de serviço do Kubernetes associada ao Load Balancer Controller AWS . Normalmente, isso é 'aws-load-balancer-controller', a menos que seja personalizado durante a instalação.

     Padrão permitido: ^ [a-z0-9] ([-.a-z0-9] \$10,251\$1 [a-z0-9])? \$1

     Padrão: aws-load-balancer-controller
   + **ServiceAccountNamespace (Opcional):**

     Tipo: string

     Descrição: (Opcional) O namespace Kubernetes em que a conta de serviço do Load Balancer AWS Controller está localizada. Normalmente, isso é 'kube-system', mas pode ser diferente se você tiver usado um namespace personalizado.

     Padrão permitido: ^ [a-z0-9] ([-a-z0-9] \$10,61\$1 [a-z0-9])? \$1

     Padrão: kube-system
   + **IngressName (Opcional):**

     Tipo: string

     Descrição: (Opcional) Nome do recurso do Ingress a ser validado (Application Load Balancer). Se não for especificada, a validação do Ingress será ignorada.

     Padrão permitido: ^\$1\$1^ [a-z0-9] [a-z0-9.-] \$10,251\$1 [a-z0-9] \$1

     Padrão: “” (string vazia)
   + **IngressNamespace (Opcional):**

     Tipo: string

     Descrição: (Opcional) Namespace do recurso Ingress. Necessário, se `IngressName` for especificado.

     Padrão permitido: ^\$1\$1^ [a-z0-9] [a-z0-9-] \$10,61\$1 [a-z0-9] \$1

     Padrão: “” (string vazia)
   + **ServiceName (Opcional):**

     Tipo: string

     Descrição: (Opcional) Nome de um recurso de serviço específico para validar as anotações do Network Load Balancer (Network Load Balancer). Se não for especificado, a validação dos recursos do serviço será ignorada.

     Padrão permitido: ^\$1\$1^ [a-z0-9] [a-z0-9.-] \$10,251\$1 [a-z0-9] \$1

     Padrão: “” (string vazia)
   + **ServiceNamespace (Opcional):**

     Tipo: string

     Descrição: (Opcional) Namespace do recurso de serviço. Necessário, se `ServiceName` for especificado.

     Padrão permitido: ^\$1\$1^ [a-z0-9] [a-z0-9-] \$10,61\$1 [a-z0-9] \$1

     Padrão: “” (string vazia)
   + **LambdaRoleArn (Obrigatório):**

     Tipo AWS::IAM::Role: :Arn

     Descrição: (Obrigatório) O ARN da função do IAM que permite que a função ( AWS Lambda Lambda) acesse os serviços e recursos necessários AWS . Associe as políticas AWS gerenciadas: `AWSLambdaBasicExecutionRole` e `AWSLambdaVPCAccessExecutionRole` à sua função IAM de execução da função lambda.

     Padrão permitido: ^arn :(? :aws\$1aws-cn\$1aws-us-gov) :iam::\$1 d \$112\$1 :função/? [A-zA-Z\$10-9\$1=, .@\$1 -\$1/] \$1\$1

1. Clique em **Executar**.

1. A automação é iniciada.

1. O bucket realiza as seguintes etapas:

   1. **ValidateAccessEntryAndOIDCProvider:**

      Valida a configuração do IAM do cluster Amazon EKS verificando as permissões de entrada de acesso e a configuração do provedor OIDC.

   1. **Configurar K8: sAuthenticationClient**

      Execute o documento SAW AWSSupport-SetupK 8 sApiProxy forEKS para configurar uma função lambda para executar chamadas de API do Amazon EKS no cluster.

   1. **Verifique ALBController eIRSASetup:**

      Verifica se o controlador de Service Account & Application Load Balancer fornecido existe em seus respectivos namespaces. Também verifica a política de Anotação e Confiança da Função da Conta de Serviço do controlador do Application Load Balancer.

   1. **VerifyPodIdentityWebhookAndEnv:**

      Verifica se pod-identity-webhook está em execução. Também verifica se o IRSA é injetado nas variáveis ENV do pod.

   1. **ValidateSubnetRequirements:**

      Verifique pelo menos duas sub-redes em duas AZs com 8 IPs disponíveis. Existe uma marcação de sub-rede adequada para balanceadores de carga. public/private 

   1. **CheckLoadBalancerLimitsAndUsage:**

      Compare o limite da conta com o número de Application Load Balancer e Network Load Balancer.

   1. **CheckIngressOrServiceAnnotations:**

      Verifica as anotações e especificações corretas nos recursos do Ingress e do Service para garantir que estejam configurados adequadamente para o uso do Application Load Balancer e do Network Load Balancer.

   1. **CheckWorkerNodeSecurityGroupTags:**

      Verifique se exatamente um grupo de segurança anexado aos nós de trabalho tem a tag de cluster necessária.

   1. **ALBControllerRegistros de captura:**

      Recupera os registros de diagnóstico mais recentes dos pods do AWS Load Balancer Controller em execução no cluster Amazon EKS.

   1. **Limpeza K8: sAuthenticationClient**

      Executa o documento SAW 'AWSSupport-SetupK8 sApiProxy forEks' usando a operação 'Cleanup' para limpar os recursos criados como parte da automação.

   1. **GenerateReport:**

      Gera o relatório de automação.

1. Após a conclusão da execução, revise a seção Saídas para obter os resultados detalhados da execução:

   1. **Relatório:**

      Fornece um resumo abrangente de todas as verificações realizadas, incluindo o status do cluster Amazon EKS, a configuração do Application Load Balancer Controller, a configuração do IRSA, os requisitos de sub-rede, os limites do balanceador de carga, as ingress/service anotações, as tags do grupo de segurança do nó de trabalho e os registros do Application Load Balancer Controller. Também inclui todos os problemas identificados e as etapas de correção recomendadas.

**Referências**

Automação do Systems Manager
+ [Execute esta automação (console)](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootEKSALBControllerIssues/description)
+ [Executar uma automação](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [Configurando a automação](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [Fluxos de trabalho de automação de suporte](https://aws.amazon.com/premiumsupport/technology/saw/)

Documentação relacionada ao AWS Load Balancer Controller
+ [AWS Controlador de balanceador de carga](https://docs.aws.amazon.com//eks/latest/userguide/aws-load-balancer-controller.html)
+ [Configurando entradas de acesso](https://docs.aws.amazon.com//eks/latest/userguide/setting-up-access-entries.html)