Usar contêineres do Windows no Amazon ECS com gMSA sem domínio usando a AWS CLI - Amazon Elastic Container Service

Usar contêineres do Windows no Amazon ECS com gMSA sem domínio usando a AWS CLI

O tutorial a seguir mostra como criar uma tarefa do Amazon ECS que execute um contêiner do Windows com credenciais para acessar o Active Directory com a AWS CLI. Ao usar gMSA sem domínio, a instância de contêiner não será associada ao domínio, outras aplicações na instância não podem usar as credenciais para acessar o domínio e as tarefas que associam domínios diferentes podem ser executadas na mesma instância.

Pré-requisitos

Este tutorial pressupõe que os seguintes pré-requisitos foram concluídos:

  • As etapas em Configuração para usar o Amazon ECS foram concluídas.

  • Seu usuário da AWS tem as permissões necessárias especificadas no exemplo de política AmazonECS_FullAccess do IAM.

  • A versão mais recente da AWS CLI está instalada e configurada. Para obter mais informações sobre como instalar ou fazer upgrade da AWS CLI, consulte Instalar a AWS Command Line Interface.

  • Você configurou um domínio do Active Directory com os recursos que deseja que seus contêineres acessem. O Amazon ECS oferece suporte às configurações a seguir:

    • Um Active Directory AWS Directory Service. O AWS Directory Service é um Active Directory gerenciado pela AWS e hospedado no Amazon EC2. Para obter mais informações, consulte Conceitos básicos do Microsoft AD gerenciado pela AWS no Guia de administração do AWS Directory Service.

    • Um Active Directory on-premises. Você deve garantir que a instância de contêiner Linux do Amazon ECS possa se associar ao domínio. Para ter mais informações, consulte AWS Direct Connect.

  • Você tem uma VPC e sub-redes que podem resolver o nome de domínio do Active Directory.

  • Você escolhe entre gMSA sem domínio e associar cada instância a um único domínio. Ao usar gMSA sem domínio, a instância de contêiner não será associada ao domínio, outras aplicações na instância não podem usar as credenciais para acessar o domínio e as tarefas que associam domínios diferentes podem ser executadas na mesma instância.

    Em seguida, escolha o armazenamento de dados para o CredSpec e, opcionalmente, para as credenciais de usuário do Active Directory para o gMSA sem domínio.

    O Amazon ECS usa um arquivo de especificação de credenciais do Active Directory (CredSpec). Esse arquivo contém os metadados de gMSA usados para propagar o contexto da conta de gMSA para o contêiner. Você gera o arquivo CredSpec e o armazena em uma das opções de armazenamento do CredSpec na tabela a seguir, específica para o sistema operacional das instâncias de contêiner. Para usar o método sem domínio, uma seção opcional no arquivo CredSpec pode especificar credenciais em uma das opções de armazenamento de domainless user credentials na tabela a seguir, específica para o sistema operacional das instâncias de contêiner.

    Local de armazenamento Linux Windows
    Amazon Simple Storage Service CredSpec CredSpec
    AWS Secrets Manager credenciais do usuário sem domínio credenciais do usuário sem domínio
    Armazenamento de parâmetros do Amazon EC2 Systems Manager CredSpec CredSpec, credenciais do usuário sem domínio
    Arquivo local N/D CredSpec
  • (Opcional) O AWS CloudShell é uma ferramenta que oferece aos clientes uma linha de comando sem precisar criar a própria instância do EC2. Para obter mais informações, consulte O que é o AWS CloudShell? no Guia do usuário do AWS CloudShell.

Etapa 1: criar e configurar a conta gMSA nos Serviços de Domínio Active Directory (AD DS)

Crie e configure uma conta gMSA no domínio do Active Directory.

  1. Gerar uma chave raiz do Serviço de Distribuição de Chaves
    nota

    Se estiver usando o AWS Directory Service, será possível ignorar esta etapa.

    A chave raiz do KDS e as permissões do gMSA são configuradas com seu Microsoft AD gerenciado pela AWS.

    Se você ainda não criou uma conta de serviço do gMSA em seu domínio, primeiro precisará gerar uma chave raiz do Serviço de Distribuição de Chaves (KDS). O KDS é responsável por criar, alternar e liberar a senha do gMSA para os hosts autorizados. Quando o ccg.exe precisa recuperar as credenciais do gMSA, ele entra em contato com o KDS para recuperar a senha atual.

    Para verificar se a chave raiz do KDS já foi criada, execute o cmdlet do PowerShell a seguir com privilégios de administrador de domínio em um controlador de domínio usando o módulo do ActiveDirectory do PowerShell. Para obter mais informações sobre o módulo, consulte Módulo do ActiveDirectory no site do Microsoft Learn.

    PS C:\> Get-KdsRootKey

    Se o comando retornar uma ID de chave, será possível ignorar o restante desta etapa. Caso contrário, crie a chave raiz do KDS executando o comando a seguir:

    PS C:\> Add-KdsRootKey -EffectiveImmediately

    Embora o argumento EffectiveImmediately para o comando implique que a chave entra em vigor imediatamente, é preciso esperar 10 horas antes que a chave raiz do KDS seja replicada e esteja disponível para uso em todos os controladores de domínio.

  2. Criar a conta gMSA

    Para criar a conta gMSA e permitir que o ccg.exe recupere a senha do gMSA, execute os comandos a seguir do PowerShell em um Windows Server ou cliente com acesso ao domínio. Substitua ExampleAccount pelo nome que você deseja para sua conta gMSA.

    1. PS C:\> Install-WindowsFeature RSAT-AD-PowerShell
    2. PS C:\> New-ADGroup -Name "ExampleAccount Authorized Hosts" -SamAccountName "ExampleAccountHosts" -GroupScope DomainLocal
    3. PS C:\> New-ADServiceAccount -Name "ExampleAccount" -DnsHostName "contoso" -ServicePrincipalNames "host/ExampleAccount", "host/contoso" -PrincipalsAllowedToRetrieveManagedPassword "ExampleAccountHosts"
    4. Crie um usuário com uma senha permanente que não expire. Essas credenciais são armazenadas no AWS Secrets Manager e usadas por cada tarefa para se associar ao domínio.

      PS C:\> New-ADUser -Name "ExampleAccount" -AccountPassword (ConvertTo-SecureString -AsPlainText "Test123" -Force) -Enabled 1 -PasswordNeverExpires 1
    5. PS C:\> Add-ADGroupMember -Identity "ExampleAccountHosts" -Members "ExampleAccount"
    6. Instale o módulo PowerShell para criar objetos do CredSpec no Active Directory e gere a saída de JSON do CredSpec.

      PS C:\> Install-PackageProvider -Name NuGet -Force
      PS C:\> Install-Module CredentialSpec
    7. PS C:\> New-CredentialSpec -AccountName ExampleAccount
  3. Copie a saída de JSON do comando anterior em um arquivo chamado gmsa-cred-spec.json. Esse é o arquivo CredSpec. Ele será usado na Etapa 3, Etapa 3: modificar seu JSON do CredSpec para incluir informações do gMSA sem domínio.

Etapa 2: fazer upload de credenciais no Secrets Manager

Copie as credenciais do Active Directory em um sistema seguro de armazenamento de credenciais, para que cada tarefa as recupere. Esse é o método do gMSA sem domínio. Ao usar gMSA sem domínio, a instância de contêiner não será associada ao domínio, outras aplicações na instância não podem usar as credenciais para acessar o domínio e as tarefas que associam domínios diferentes podem ser executadas na mesma instância.

Esta etapa usa a AWS CLI. É possível executar esses comandos no AWS CloudShell no shell padrão, que é o bash.

  • Execute o comando AWS CLI a seguir e substitua o nome de usuário, a senha e o nome do domínio de acordo com o seu ambiente. Guarde o ARN do segredo para usar na próxima etapa, Etapa 3: modificar seu JSON do CredSpec para incluir informações do gMSA sem domínio

    O comando a seguir usa caracteres de continuação de barra invertida que são usados pelo sh e por shells compatíveis. Esse comando não é compatível com o PowerShell. Você deve modificar o comando para usá-lo com o PowerShell.

    $ aws secretsmanager create-secret \ --name gmsa-plugin-input \ --description "Amazon ECS - gMSA Portable Identity." \ --secret-string "{\"username\":\"ExampleAccount\",\"password\":\"Test123\",\"domainName\":\"contoso.com\"}"

Etapa 3: modificar seu JSON do CredSpec para incluir informações do gMSA sem domínio

Antes de fazer o upload de CredSpec para uma das opções de armazenamento, adicione informações ao CredSpec com o ARN do segredo no Secrets Manager da etapa anterior. Para obter mais informações, consulte Configuração adicional de especificações de credenciais para o caso de uso de host de contêiner não associado a domínio no site do Microsoft Learn.

  1. Adicione as informações a seguir ao arquivo CredSpec dentro do ActiveDirectoryConfig. Substitua o ARN pelo segredo no Secrets Manager da etapa anterior.

    Observe que o valor PluginGUID deve corresponder ao GUID no trecho de exemplo a seguir, e é obrigatório.

    "HostAccountConfig": { "PortableCcgVersion": "1", "PluginGUID": "{859E1386-BDB4-49E8-85C7-3070B13920E1}", "PluginInput": "{\"credentialArn\": \"arn:aws:secretsmanager:aws-region:111122223333:secret:gmsa-plugin-input\"}" }

    Você também pode usar um segredo no SSM Parameter Store usando o ARN neste formato: \"arn:aws:ssm:aws-region:111122223333:parameter/gmsa-plugin-input\".

  2. Depois de modificar o arquivo CredSpec, ele será semelhante à saída do exemplo a seguir:

    { "CmsPlugins": [ "ActiveDirectory" ], "DomainJoinConfig": { "Sid": "S-1-5-21-4066351383-705263209-1606769140", "MachineAccountName": "ExampleAccount", "Guid": "ac822f13-583e-49f7-aa7b-284f9a8c97b6", "DnsTreeName": "contoso", "DnsName": "contoso", "NetBiosName": "contoso" }, "ActiveDirectoryConfig": { "GroupManagedServiceAccounts": [ { "Name": "ExampleAccount", "Scope": "contoso" }, { "Name": "ExampleAccount", "Scope": "contoso" } ], "HostAccountConfig": { "PortableCcgVersion": "1", "PluginGUID": "{859E1386-BDB4-49E8-85C7-3070B13920E1}", "PluginInput": "{\"credentialArn\": \"arn:aws:secretsmanager:aws-region:111122223333:secret:gmsa-plugin-input\"}" } } }

Etapa 4: fazer upload do CredSpec no Amazon S3

Esta etapa usa a AWS CLI. É possível executar esses comandos no AWS CloudShell no shell padrão, que é o bash.

  1. Copie o arquivo CredSpec para o computador ou ambiente em que você está executando os comandos da AWS CLI.

  2. Execute o comando AWS CLI a seguir para fazer upload do CredSpec no Amazon S3. Substitua MyBucket pelo nome do bucket do Amazon S3. É possível armazenar o arquivo como um objeto em qualquer bucket e local, mas deve permitir o acesso a esse bucket e ao local na política que você anexa ao perfil de execução da tarefa.

    O comando a seguir usa caracteres de continuação de barra invertida que são usados pelo sh e por shells compatíveis. Esse comando não é compatível com o PowerShell. Você deve modificar o comando para usá-lo com o PowerShell.

    $ aws s3 cp gmsa-cred-spec.json \ s3://MyBucket/ecs-domainless-gmsa-credspec

Etapa 5: (opcional) criar um cluster do Amazon ECS

Por padrão, sua conta tem um cluster Amazon ECS chamado default. Esse cluster é usado por padrão na AWS CLI, nos SDKs e no AWS CloudFormation. É possível usar clusters adicionais para agrupar e organizar tarefas e infraestrutura e atribuir padrões para algumas configurações.

É possível criar um cluster a partir do AWS Management Console, da AWS CLI, de SDKs ou do AWS CloudFormation. As definições e a configuração no cluster não afetam o gMSA.

Esta etapa usa a AWS CLI. É possível executar esses comandos no AWS CloudShell no shell padrão, que é o bash.

$ aws ecs create-cluster --cluster-name windows-domainless-gmsa-cluster
Importante

Caso você escolha criar seu o próprio cluster, você deverá especificar --cluster clusterName para cada comando que pretender usar com esse cluster.

Etapa 6: criar um perfil do IAM para instâncias de contêiner

Uma instância de contêiner é um computador host para executar contêineres em tarefas do ECS, por exemplo, instâncias do Amazon EC2. Cada instância de contêiner se registra em um cluster do Amazon ECS. Para poder iniciar instâncias do Amazon EC2 e registrá-las em um cluster, você deve criar um perfil do IAM para suas instâncias de contêiner usarem.

Para criar o perfil da instância de contêiner, consulte Função do IAM de instância de contêiner do Amazon ECS. O ecsInstanceRole padrão tem permissões suficientes para concluir este tutorial.

Etapa 7: criar um perfil de execução de tarefa personalizado

O Amazon ECS pode usar um perfil do IAM diferente para as permissões necessárias para iniciar cada tarefa, em vez do perfil da instância de contêiner. Esse perfil é chamado de perfil de execução de tarefa. Recomendamos criar um perfil de execução de tarefa apenas com as permissões necessárias para que o ECS execute a tarefa, também conhecidas como permissões de privilégio mínimo. Para obter mais informações sobre o princípio do privilégio mínimo, consulte SEC03-BP02 Conceder acesso com privilégio mínimo no AWS Well-Architected Framework.

  1. Para criar um perfil de execução de tarefa, consulte Criar a função de execução de tarefa do. As permissões padrão permitem que a instância de contêiner extraia imagens de contêiner do Amazon Elastic Container Registry e stdout e stderr de suas aplicações para serem registradas em log no Amazon CloudWatch Logs.

    Como o perfil precisa de permissões personalizadas para este tutorial, é possível atribuir ao perfil um nome diferente de ecsTaskExecutionRole. Este tutorial usa ecsTaskExecutionRole em etapas adicionais.

  2. Adicione as permissões a seguir criando uma política personalizada, uma política em linha que só exista para esse perfil ou uma política que você possa reutilizar. Substitua o ARN para o Resource na primeira declaração pelo bucket do Amazon S3 e a localização, e o segundo Resource pelo ARN do segredo no Secrets Manager.

    Se você criptografar o segredo no Secrets Manager com uma chave personalizada, também deverá permitir kms:Decrypt para a chave.

    Se você usar o SSM Parameter Store em vez do Secrets Manager, deverá permitir ssm:GetParameter para o parâmetro, em vez de secretsmanager:GetSecretValue.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::MyBucket/ecs-domainless-gmsa-credspec/gmsa-cred-spec.json" }, { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:aws-region:111122223333:secret:gmsa-plugin-input" } ] }

Etapa 8: criar um perfil de tarefa para o Amazon ECS Exec

Este tutorial usa o Amazon ECS Exec para verificar a funcionalidade executando um comando dentro de uma tarefa em execução. Para usar o ECS Exec, o serviço ou a tarefa deve ativar o ECS Exec, e o perfil da tarefa (mas não o perfil de execução da tarefa) deve ter permissões ssmmessages. Para saber mais sobre a política do IAM necessária, consulte Permissões do ECS Exec.

Esta etapa usa a AWS CLI. É possível executar esses comandos no AWS CloudShell no shell padrão, que é o bash.

Para criar um perfil de tarefa usando a AWS CLI, siga estas etapas.

  1. Crie um arquivo chamado ecs-tasks-trust-policy.json com o conteúdo a seguir:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Criar um perfil do IAM. É possível substituir o nome ecs-exec-demo-task-role, mas mantenha-o nas etapas a seguir.

    O comando a seguir usa caracteres de continuação de barra invertida que são usados pelo sh e por shells compatíveis. Esse comando não é compatível com o PowerShell. Você deve modificar o comando para usá-lo com o PowerShell.

    $ aws iam create-role --role-name ecs-exec-demo-task-role \ --assume-role-policy-document file://ecs-tasks-trust-policy.json

    É possível excluir o arquivo ecs-tasks-trust-policy.json.

  3. Crie um arquivo chamado ecs-exec-demo-task-role-policy.json com o conteúdo a seguir:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }
  4. Crie uma política do IAM e anexe-a ao perfil da etapa anterior.

    O comando a seguir usa caracteres de continuação de barra invertida que são usados pelo sh e por shells compatíveis. Esse comando não é compatível com o PowerShell. Você deve modificar o comando para usá-lo com o PowerShell.

    $ aws iam put-role-policy \ --role-name ecs-exec-demo-task-role \ --policy-name ecs-exec-demo-task-role-policy \ --policy-document file://ecs-exec-demo-task-role-policy.json

    É possível excluir o arquivo ecs-exec-demo-task-role-policy.json.

Etapa 9: registrar uma definição de tarefa que usa gMSA sem domínio

Esta etapa usa a AWS CLI. É possível executar esses comandos no AWS CloudShell no shell padrão, que é o bash.

  1. Crie um arquivo chamado windows-gmsa-domainless-task-def.json com o conteúdo a seguir:

    { "family": "windows-gmsa-domainless-task", "containerDefinitions": [ { "name": "windows_sample_app", "image": "mcr.microsoft.com/windows/servercore/iis", "cpu": 1024, "memory": 1024, "essential": true, "credentialSpecs": [ "credentialspecdomainless:arn:aws:s3:::ecs-domainless-gmsa-credspec/gmsa-cred-spec.json" ], "entryPoint": [ "powershell", "-Command" ], "command": [ "New-Item -Path C:\\inetpub\\wwwroot\\index.html -ItemType file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>' -Force ; C:\\ServiceMonitor.exe w3svc" ], "portMappings": [ { "protocol": "tcp", "containerPort": 80, "hostPort": 8080 } ] } ], "taskRoleArn": "arn:aws:iam::111122223333:role/ecs-exec-demo-task-role", "executionRoleArn": "arn:aws:iam::111122223333:role/ecsTaskExecutionRole" }
  2. Registre a definição de tarefa executando o comando a seguir.

    O comando a seguir usa caracteres de continuação de barra invertida que são usados pelo sh e por shells compatíveis. Esse comando não é compatível com o PowerShell. Você deve modificar o comando para usá-lo com o PowerShell.

    $ aws ecs register-task-definition \ --cli-input-json file://windows-gmsa-domainless-task-def.json

Etapa 10: registrar uma instância de contêiner do Windows no cluster

Inicie uma instância de Windows do Amazon EC2 e execute o agente de contêiner do ECS para registrá-la como uma instância de contêiner no cluster. O ECS executa tarefas nas instâncias de contêiner registradas no cluster em que as tarefas são iniciadas.

  1. Para iniciar uma instância de Windows do Amazon EC2 que esteja configurada para o Amazon ECS no AWS Management Console, consulte Iniciar uma instância de contêiner do Windows do Amazon ECS. Pare na etapa de dados do usuário.

  2. Em sgMSA, os dados do usuário devem definir a variável de ambiente ECS_GMSA_SUPPORTED antes de iniciar o agente de contêiner do ECS.

    Para o ECS Exec, o agente deve começar com o argumento -EnableTaskIAMRole.

    Para proteger o perfil do IAM da instância impedindo que as tarefas cheguem ao serviço da Web IMDS do EC2 para recuperar as credenciais do perfil, adicione o argumento -AwsvpcBlockIMDS. Isso se aplica somente às tarefas que usem o modo de rede awsvpc.

    <powershell> [Environment]::SetEnvironmentVariable("ECS_GMSA_SUPPORTED", $TRUE, "Machine") Import-Module ECSTools Initialize-ECSAgent -Cluster windows-domainless-gmsa-cluster -EnableTaskIAMRole -AwsvpcBlockIMDS </powershell>
  3. Revise um resumo da configuração da instância no painel Summary (Resumo) e, quando você estiver pronto, escolha Launch instance (Iniciar instância).

Etapa 11: verificar a instância de contêiner

É possível verificar se há uma instância de contêiner no cluster usando o AWS Management Console. No entanto, o gMSA precisa de recursos adicionais indicados como atributos. Esses atributos não são visíveis no AWS Management Console, portanto, este tutorial usa o AWS CLI.

Esta etapa usa a AWS CLI. É possível executar esses comandos no AWS CloudShell no shell padrão, que é o bash.

  1. Listar as instâncias de contêiner no cluster. As instâncias de contêiner têm um ID diferente do ID da instância do EC2.

    $ aws ecs list-container-instances

    Saída:

    {
        "containerInstanceArns": [
            "arn:aws:ecs:aws-region:111122223333:container-instance/default/MyContainerInstanceID"
        ]
    }

    Por exemplo, 526bd5d0ced448a788768334e79010fd é um ID de instância de contêiner válido.

  2. Use o ID da instância de contêiner da etapa anterior para obter os detalhes da instância de contêiner. Substitua MyContainerInstanceID pelo ID.

    O comando a seguir usa caracteres de continuação de barra invertida que são usados pelo sh e por shells compatíveis. Esse comando não é compatível com o PowerShell. Você deve modificar o comando para usá-lo com o PowerShell.

    $ aws ecs describe-container-instances \ ----container-instances MyContainerInstanceID

    Observe que a saída é muito longa.

  3. Verifique se a lista attributes tem um objeto com a chave chamada name e um valor de ecs.capability.gmsa-domainless. Veja a seguir um exemplo do objeto.

    Saída:

    {
        "name": "ecs.capability.gmsa-domainless"
    }

Etapa 12: executar uma tarefa do Windows

Execute uma tarefa do Amazon ECS. Se houver apenas uma instância de contêiner no cluster, será possível usar run-task. Se houver muitas instâncias de contêiner diferentes, talvez seja mais fácil usar start-task e especificar o ID da instância de contêiner para executar a tarefa do que adicionar restrições de posicionamento à definição da tarefa para controlar em que tipo de instância de contêiner executar essa tarefa.

Esta etapa usa a AWS CLI. É possível executar esses comandos no AWS CloudShell no shell padrão, que é o bash.

  1. O comando a seguir usa caracteres de continuação de barra invertida que são usados pelo sh e por shells compatíveis. Esse comando não é compatível com o PowerShell. Você deve modificar o comando para usá-lo com o PowerShell.

    aws ecs run-task --task-definition windows-gmsa-domainless-task \ --enable-execute-command --cluster windows-domainless-gmsa-cluster

    Anote o ID da tarefa retornado pelo comando.

  2. Execute o comando a seguir para verificar se a tarefa foi iniciada. Esse comando espera e não retorna o prompt do shell até que a tarefa seja iniciada. Substitua MyTaskID pelo ID da tarefa da etapa anterior.

    $ aws ecs wait tasks-running --task MyTaskID

Etapa 13: verificar se o contêiner tem credenciais gMSA

Verifique se o contêiner na tarefa tem um token Kerberos. gMSA

Esta etapa usa a AWS CLI. É possível executar esses comandos no AWS CloudShell no shell padrão, que é o bash.

  1. O comando a seguir usa caracteres de continuação de barra invertida que são usados pelo sh e por shells compatíveis. Esse comando não é compatível com o PowerShell. Você deve modificar o comando para usá-lo com o PowerShell.

    $ aws ecs execute-command \ --task MyTaskID \ --container windows_sample_app \ --interactive \ --command powershell.exe

    A saída será um prompt do PowerShell.

  2. Execute o comando a seguir no terminal do PowerShell dentro do contêiner.

    PS C:\> klist get ExampleAccount$

    Na saída, observe que Principal é o que você criou anteriormente.

Etapa 14: limpar

Ao concluir este tutorial, você deve limpar os recursos associados para evitar cobranças por recursos não utilizados.

Esta etapa usa a AWS CLI. É possível executar esses comandos no AWS CloudShell no shell padrão, que é o bash.

  1. Interrompa a tarefa. Substitua MyTaskID pelo ID da tarefa da etapa 12, Etapa 12: executar uma tarefa do Windows.

    $ aws ecs stop-task --task MyTaskID
  2. Encerre a instância do Amazon EC2. Depois disso, a instância de contêiner no cluster será excluída automaticamente após uma hora.

    É possível encontrar e encerrar a instância usando o console do Amazon EC2. É possível executar o comando a seguir: Para executar o comando, encontre o ID da instância do EC2 na saída do comando aws ecs describe-container-instances da etapa 1, Etapa 11: verificar a instância de contêiner. i-10a64379 é um exemplo de ID de instância do EC2.

    $ aws ec2 terminate-instances --instance-ids MyInstanceID
  3. Exclua o arquivo CredSpec no Amazon S3. Substitua MyBucket pelo nome do bucket do Amazon S3.

    $ aws s3api delete-object --bucket MyBucket --key ecs-domainless-gmsa-credspec/gmsa-cred-spec.json
  4. Exclua o segredo no Secrets Manager. Se você usou o SSM Parameter Store em vez disso, exclua o parâmetro.

    O comando a seguir usa caracteres de continuação de barra invertida que são usados pelo sh e por shells compatíveis. Esse comando não é compatível com o PowerShell. Você deve modificar o comando para usá-lo com o PowerShell.

    $ aws secretsmanager delete-secret --secret-id gmsa-plugin-input \ --force-delete-without-recovery
  5. Cancele o registro e exclua a definição de tarefa. Ao cancelar o registro da definição da tarefa, você a marca como inativa para que não possa ser usada para iniciar novas tarefas. Em seguida, é possível excluir a definição da tarefa.

    1. Cancele o registro da definição da tarefa especificando a versão. O ECS cria automaticamente versões das definições de tarefas, que são numeradas a partir de 1. Você faz referência às versões no mesmo formato dos rótulos nas imagens do contêiner, como :1.

      $ aws ecs deregister-task-definition --task-definition windows-gmsa-domainless-task:1
    2. Exclua a definição da tarefa.

      $ aws ecs delete-task-definitions --task-definition windows-gmsa-domainless-task:1
  6. (Opcional) Exclua o cluster do ECS se você tiver criado um cluster.

    $ aws ecs delete-cluster --cluster windows-domainless-gmsa-cluster

Depuração do gMSA sem domínio do Amazon ECS para contêineres Windows

Status da tarefa do Amazon ECS

O ECS tenta iniciar uma tarefa exatamente uma vez. Qualquer tarefa que tenha um problema é interrompida e definida para o status STOPPED. Há dois tipos comuns de problemas com tarefas. Primeiro, tarefas que não puderam ser iniciadas. Segundo, tarefas em que a aplicação foi interrompida dentro de um dos contêineres. No AWS Management Console, observe o campo Motivo da parada para obter o motivo pelo qual a tarefa foi interrompida. Na AWS CLI, descreva a tarefa e veja o stoppedReason. Para ver as etapas em AWS Management Console e AWS CLI, consulte Visualizar erros de tarefa interrompida do Amazon ECS.

Eventos do Windows

Os eventos do Windows para gMSA em contêineres são registrados em log no arquivo de Microsoft-Windows-Containers-CCG log e podem ser encontrados no Visualizador de Eventos na seção Aplicações e Serviços em Logs\Microsoft\Windows\Containers-CCG\Admin. Para obter mais dicas de depuração, consulte Solucionar problemas de GMSAs para contêineres Windows no site do Microsoft Learn.

Plug-in gMSA do agente do ECS

O registro em log do plug-in gMSA para o agente do ECS na instância do contêiner do Windows está no diretório a seguir, C:/ProgramData/Amazon/gmsa-plugin/. Examine esse log para ver se as credenciais do usuário sem domínio foram baixadas do local de armazenamento, como o Secrets Manager, e se o formato da credencial foi lido corretamente.