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.
Tópicos
- Pré-requisitos
- Etapa 1: criar e configurar a conta gMSA nos Serviços de Domínio Active Directory (AD DS)
- Etapa 2: fazer upload de credenciais no Secrets Manager
- Etapa 3: modificar seu JSON do CredSpec para incluir informações do gMSA sem domínio
- Etapa 4: fazer upload do CredSpec no Amazon S3
- Etapa 5: (opcional) criar um cluster do Amazon ECS
- Etapa 6: criar um perfil do IAM para instâncias de contêiner
- Etapa 7: criar um perfil de execução de tarefa personalizado
- Etapa 8: criar um perfil de tarefa para o Amazon ECS Exec
- Etapa 9: registrar uma definição de tarefa que usa gMSA sem domínio
- Etapa 10: registrar uma instância de contêiner do Windows no cluster
- Etapa 11: verificar a instância de contêiner
- Etapa 12: executar uma tarefa do Windows
- Etapa 13: verificar se o contêiner tem credenciais gMSA
- Etapa 14: limpar
- Depuração do gMSA sem domínio do Amazon ECS para contêineres Windows
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.
-
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 ActiveDirectoryno 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. -
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. SubstituaExampleAccount
pelo nome que você deseja para sua conta gMSA.-
PS C:\>
Install-WindowsFeature RSAT-AD-PowerShell
-
PS C:\>
New-ADGroup -Name "
ExampleAccount
Authorized Hosts" -SamAccountName "ExampleAccount
Hosts" -GroupScope DomainLocal -
PS C:\>
New-ADServiceAccount -Name "
ExampleAccount
" -DnsHostName "contoso
" -ServicePrincipalNames "host/ExampleAccount
", "host/contoso
" -PrincipalsAllowedToRetrieveManagedPassword "ExampleAccount
Hosts" -
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 -
PS C:\>
Add-ADGroupMember -Identity "
ExampleAccount
Hosts" -Members "ExampleAccount
" -
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
-
PS C:\>
New-CredentialSpec -AccountName
ExampleAccount
-
-
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
-
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
\" -
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
.
-
Copie o arquivo CredSpec para o computador ou ambiente em que você está executando os comandos da AWS CLI.
-
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.
-
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
estderr
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 usaecsTaskExecutionRole
em etapas adicionais. -
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 segundoResource
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 desecretsmanager: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.
-
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" } ] }
-
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
. -
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": "*" } ] }
-
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
.
-
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" }
-
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.
-
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.
-
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 redeawsvpc
.<powershell> [Environment]::SetEnvironmentVariable("ECS_GMSA_SUPPORTED", $TRUE, "Machine") Import-Module ECSTools Initialize-ECSAgent -Cluster
windows-domainless-gmsa-cluster
-EnableTaskIAMRole -AwsvpcBlockIMDS </powershell> -
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
.
-
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. -
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.
-
Verifique se a lista
attributes
tem um objeto com a chave chamadaname
e um valor deecs.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
.
-
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.
-
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
.
-
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.
-
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
.
-
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
-
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
-
Exclua o arquivo CredSpec no Amazon S3. Substitua
MyBucket
pelo nome do bucket do Amazon S3.$
aws s3api delete-object --bucket
MyBucket
--keyecs-domainless-gmsa-credspec/gmsa-cred-spec.json
-
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 -
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.
-
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
-
Exclua a definição da tarefa.
$
aws ecs delete-task-definitions --task-definition
windows-gmsa-domainless-task:1
-
-
(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 ostoppedReason
. 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 emLogs\Microsoft\Windows\Containers-CCG\Admin
. Para obter mais dicas de depuração, consulte Solucionar problemas de GMSAs para contêineres Windowsno 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.