Uso de contenedores de Amazon ECS para Windows con gMSA sin dominio mediante la AWS CLI
En el siguiente tutorial, se muestra cómo crear una tarea de Amazon ECS que ejecute un contenedor de Windows que tenga credenciales para acceder a Active Directory con la AWS CLI. Al usar una gMSA sin dominio, la instancia de contenedor no se une al dominio, las demás aplicaciones de la instancia no pueden utilizar las credenciales para acceder al dominio y las tareas que unen diferentes dominios se pueden ejecutar en la misma instancia.
Temas
Paso 1: Crear y configurar la cuenta de gMSA en los servicios de dominio de Active Directory (AD DS)
Paso 3: Modifique el JSON CredSpec para incluir información de gMSA sin dominio
Paso 9: Registrar una definición de tarea que utilice gMSA sin dominio
Paso 10: Registrar una instancia de contenedor de Windows en el clúster
Paso 13: Comprobar que el contenedor tenga credenciales de gMSA
Depuración de gMSA sin dominio de Amazon ECS para contenedores de Windows
Requisitos previos
En este tutorial se supone que los siguientes requisitos previos se han completado:
-
Se han completado los pasos que se indican en Configuración para utilizar Amazon ECS.
-
Su usuario de AWS dispone de los permisos requeridos que se especifican en la política de IAM AmazonECS_FullAccess de ejemplo.
-
La última versión de la AWS CLI está instalada y configurada. Para obtener más información acerca de cómo instalar o actualizar la AWS CLI, consulte Instalación de la AWS Command Line Interface.
-
Configure un dominio de Active Directory con los recursos a los que desea que accedan sus contenedores. Amazon ECS admite las siguientes configuraciones:
-
Un AWS Directory Service Active Directory. AWS Directory Service es un Active Directory administrado por AWS y alojado en Amazon EC2. Para obtener más información, consulte Introducción a Microsoft AD administrado por AWS en la Guía de administración de AWS Directory Service.
-
Un Active Directory en las instalaciones. Debe asegurarse de que la instancia de contenedor de Linux de Amazon ECS pueda unirse al dominio. Para obtener más información, consulte AWS Direct Connect.
-
-
Tiene una VPC y subredes que pueden resolver el nombre de dominio de Active Directory.
-
Puede elegir entre gMSA sin dominio o unir cada instancia a un único dominio. Al usar una gMSA sin dominio, la instancia de contenedor no se une al dominio, las demás aplicaciones de la instancia no pueden utilizar las credenciales para acceder al dominio y las tareas que unen diferentes dominios se pueden ejecutar en la misma instancia.
A continuación, seleccione el almacenamiento de datos para las CredSpec y, de forma opcional, para las credenciales de usuario de Active Directory para gMSA sin dominio.
Amazon ECS utiliza un archivo de especificaciones de credenciales de Active Directory (CredSpec). Este archivo contiene los metadatos de gMSA utilizados para propagar el contexto de la cuenta de gMSA al contenedor. Genera el archivo de CredSpec y, a continuación, lo almacena en una de las opciones de almacenamiento de CredSpec de la siguiente tabla, específica del sistema operativo de las instancias de contenedor. Para usar el método sin dominio, en una sección opcional del archivo de CredSpec se pueden especificar las credenciales de una de las opciones de almacenamiento domainless user credentials de la siguiente tabla, específicas del sistema operativo de las instancias de contenedor.
Ubicación de almacenamiento Linux Windows Amazon Simple Storage Service CredSpec CredSpec AWS Secrets Manager credenciales de usuario sin dominio credenciales de usuario sin dominio Parameter Store de Amazon EC2 Systems Manager CredSpec CredSpec, credenciales de usuario sin dominio Archivo local N/A CredSpec -
(Opcional) AWS CloudShell es una herramienta que proporciona a los clientes una línea de comandos sin necesidad de crear su propia instancia de EC2. Para obtener más información, consulte ¿Qué es AWS CloudShell? en la Guía del usuario de AWS CloudShell.
Paso 1: Crear y configurar la cuenta de gMSA en los servicios de dominio de Active Directory (AD DS)
Cree y configure una cuenta de gMSA en el dominio de Active Directory.
-
Generar una clave raíz del servicio de distribución de claves
nota
Si utiliza AWS Directory Service, puede omitir este paso.
La clave raíz de KDS y los permisos de gMSA se configuran con su Microsoft AD administrado por AWS.
Si aún no ha creado una cuenta de servicio de gMSA en su dominio, primero tendrá que generar una clave raíz del Servicio de distribución de claves (KDS). El KDS es responsable de crear, rotar y divulgar la contraseña de gMSA a los hosts autorizados. Cuando
ccg.exe
necesita recuperar las credenciales de gMSA, se pone en contacto con KDS para recuperar la contraseña actual.Para comprobar si la clave raíz de KDS ya se ha creado, ejecute el siguiente cmdlet de PowerShell con privilegios de administrador de dominio en un controlador de dominio mediante el módulo PowerShell de
ActiveDirectory
. Para obtener más información sobre el módulo, consulte el Módulo de ActiveDirectoryen el sitio web de Microsoft Learn. PS C:\>
Get-KdsRootKey
Si el comando devuelve un ID de clave, puede omitir el resto de este paso. De lo contrario, cree la clave raíz de KDS mediante el siguiente comando:
PS C:\>
Add-KdsRootKey -EffectiveImmediately
Aunque el argumento
EffectiveImmediately
al comando implica que la clave entra en vigor inmediatamente, debe esperar 10 horas antes de que la clave raíz de KDS se replique y esté disponible para su uso en todos los controladores de dominio. -
Crear la cuenta de gMSA
Para crear la cuenta de gMSA y permitir que
ccg.exe
recupere la contraseña de gMSA, ejecute los siguientes comandos de PowerShell desde un servidor o cliente de Windows con acceso al dominio. ReemplaceExampleAccount
por el nombre que desee para la cuenta de 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" -
Cree un usuario con una contraseña permanente que no caduque. Estas credenciales se almacenan en AWS Secrets Manager y utilizan en cada tarea para unirse al dominio.
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 el módulo de PowerShell para crear objetos de CredSpec en Active Directory y generar el JSON CredSpec.
PS C:\>
Install-PackageProvider -Name NuGet -Force
PS C:\>
Install-Module CredentialSpec
-
PS C:\>
New-CredentialSpec -AccountName
ExampleAccount
-
-
Copie la salida JSON del comando anterior en un archivo llamado
gmsa-cred-spec.json
. Este es el archivo CredSpec. Se usa en el paso 3, Paso 3: Modifique el JSON CredSpec para incluir información de gMSA sin dominio.
Paso 2: Cargar credenciales a Secrets Manager
Copie las credenciales de Active Directory en un sistema de almacenamiento de credenciales seguro para que cada tarea las recupere. Este es el método de gMSA sin dominio. Al usar una gMSA sin dominio, la instancia de contenedor no se une al dominio, las demás aplicaciones de la instancia no pueden utilizar las credenciales para acceder al dominio y las tareas que unen diferentes dominios se pueden ejecutar en la misma instancia.
En este paso se utiliza la AWS CLI. Puede ejecutar estos comandos en AWS CloudShell en el intérprete de comandos predeterminado, que es bash
.
-
Ejecute el siguiente comando de AWS CLI y sustituya el nombre de usuario, la contraseña y el nombre de dominio por los correspondientes a su entorno. Guardar el ARN del secreto para usarlo en el siguiente paso, Paso 3: Modifique el JSON CredSpec para incluir información de gMSA sin dominio
El siguiente comando utiliza caracteres de continuación con barra invertida que utilizan los intérpretes de comandos compatibles y
sh
. No se admite este comando con PowerShell. Debe modificar el comando para usarlo con PowerShell.$
aws secretsmanager create-secret \ --name
gmsa-plugin-input
\ --description "Amazon ECS - gMSA Portable Identity.
" \ --secret-string "{\"username\":\"ExampleAccount
\",\"password\":\"Test123
\",\"domainName\":\"contoso.com
\"}"
Paso 3: Modifique el JSON CredSpec para incluir información de gMSA sin dominio
Antes de subir las CredSpec a una de las opciones de almacenamiento, agregue información a las CredSpec con el ARN del secreto en Secrets Manager del paso anterior. Para obtener más información, consulte Configuración de especificaciones de credenciales adicionales para el caso de uso de hosts de contenedores no unidos a un dominio
-
Agregue la siguiente información al archivo de CredSpec que se encuentra dentro del
ActiveDirectoryConfig
. Reemplace el ARN con el secreto de Secrets Manager del paso anterior.Tenga en cuenta que el valor de
PluginGUID
debe coincidir con el GUID del siguiente fragmento de ejemplo y es obligatorio."HostAccountConfig": { "PortableCcgVersion": "1", "PluginGUID": "{859E1386-BDB4-49E8-85C7-3070B13920E1}", "PluginInput": "{\"credentialArn\": \"arn:aws:secretsmanager:
aws-region
:111122223333:secret:gmsa-plugin-input
\"}" }También puede utilizar un secreto en SSM Parameter Store mediante el ARN en este formato:
\"arn:aws:ssm:
.aws-region
:111122223333:parameter/gmsa-plugin-input
\" -
Tras modificar el archivo de CredSpec, tendrá un aspecto semejante al de este ejemplo:
{ "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
\"}" } } }
Paso 4: Cargar CredSpec a Amazon S3
En este paso se utiliza la AWS CLI. Puede ejecutar estos comandos en AWS CloudShell en el intérprete de comandos predeterminado, que es bash
.
-
Copie el archivo CredSpec en la computadora o el entorno en el que esté ejecutando los comandos de la AWS CLI.
-
Ejecute el siguiente comando de la AWS CLI para cargar el CredSpec a Amazon S3. Reemplace
MyBucket
con el nombre de su bucket de Amazon S3. Puede almacenar el archivo como un objeto en cualquier bucket y ubicación, pero debe permitir el acceso a ese bucket y ubicación en la política que asocie al rol de ejecución de la tarea.El siguiente comando utiliza caracteres de continuación con barra invertida que utilizan los intérpretes de comandos compatibles y
sh
. No se admite este comando con PowerShell. Debe modificar el comando para usarlo con PowerShell.$
aws s3 cp gmsa-cred-spec.json \ s3://
MyBucket/ecs-domainless-gmsa-credspec
Paso 5: (Opcional) crear un clúster de Amazon ECS
De forma predeterminada, su cuenta tiene un clúster de Amazon ECS denominado default
. Este clúster se utiliza de forma predeterminada en AWS CLI, los SDK y AWS CloudFormation. Puede utilizar clústeres adicionales para agrupar y organizar las tareas y la infraestructura, y asignar valores predeterminados para algunas configuraciones.
Puede crear un clúster con la AWS Management Console, la AWS CLI, los SDK o AWS CloudFormation. Los ajustes y la configuración del clúster no afectan gMSA.
En este paso se utiliza la AWS CLI. Puede ejecutar estos comandos en AWS CloudShell en el intérprete de comandos predeterminado, que es bash
.
$
aws ecs create-cluster --cluster-name windows-domainless-gmsa-cluster
importante
Si decide crear su propio clúster, debe especificar --cluster
clusterName
para cada comando que pretenda utilizar con dicho clúster.
Paso 6: crear un rol de IAM para instancias de contenedor
Una instancia de contenedor es una computadora host para ejecutar contenedores en tareas de ECS, por ejemplo, instancias de Amazon EC2. Cada instancia de contenedor se registra en un clúster de Amazon ECS. Antes de lanzar instancias de Amazon EC2 y registrarlas en un clúster, debe crear un rol de IAM para que lo utilicen las instancias de contenedor.
Para crear el rol de instancia de contenedor, consulte Rol de IAM de instancia de contenedor de Amazon ECS. La opción predeterminada ecsInstanceRole
tiene permisos suficientes para completar este tutorial.
Paso 7: Crear un rol de ejecución de tarea personalizado
Amazon ECS puede usar un rol de IAM diferente para los permisos necesarios para iniciar cada tarea, en lugar del rol de instancia de contenedor. Este rol se denomina rol de ejecución de tareas. Recomendamos crear un rol de ejecución de tareas con solo los permisos necesarios para que ECS ejecute la tarea, también conocidos como permisos con privilegios mínimos. Para obtener más información sobre el principio de privilegios mínimos, consulte SEC03-BP02 Conceder acceso con privilegios mínimos en el AWS Well-Architected Framework.
-
Para crear un rol de ejecución de tareas, consulte Creación del rol de de ejecución de tareas. Los permisos predeterminados permiten a la instancia de contenedor extraer imágenes de contenedores de Amazon Elastic Container Registry y
stdout
ystderr
de sus aplicaciones para registrarlas en registros de Amazon CloudWatch.Como el rol necesita permisos personalizados para este tutorial, puede asignarle un nombre diferente al de
ecsTaskExecutionRole
. Este tutorial utilizaecsTaskExecutionRole
en otros pasos. -
Agregue los siguientes permisos creando una política personalizada, ya sea una política en línea que solo exista para este rol o una política que pueda reutilizar. Sustituya el ARN con el
Resource
en la primera declaración con el bucket y la ubicación de Amazon S3, y el segundoResource
con el ARN del secreto de Secrets Manager.Si cifra el secreto en Secrets Manager con una clave personalizada, también debe permitir
kms:Decrypt
para la clave.Si utiliza SSM Parameter Store en lugar de Secrets Manager, debe permitir
ssm:GetParameter
para el parámetro, en lugar 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
" } ] }
Paso 8: crear un rol de tarea para Amazon ECS Exec
En este tutorial, se utiliza Amazon ECS Exec para verificar la funcionalidad mediante la ejecución de un comando dentro de una tarea en ejecución. Para usar ECS Exec, el servicio o la tarea debe activar ECS Exec y el rol de la tarea (pero no el rol de ejecución de la tarea) debe tener permisos de ssmmessages
. Para obtener información sobre la política de IAM necesaria, consulte Permisos de ECS Exec.
En este paso se utiliza la AWS CLI. Puede ejecutar estos comandos en AWS CloudShell en el intérprete de comandos predeterminado, que es bash
.
Para crear un rol de tarea mediante la AWS CLI, siga estos pasos.
-
Cree un archivo denominado
ecs-tasks-trust-policy.json
con el siguiente contenido:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Crear un rol de IAM. Puede reemplazar el nombre
ecs-exec-demo-task-role
, pero consérvelo para los siguientes pasos.El siguiente comando utiliza caracteres de continuación con barra invertida que utilizan los intérpretes de comandos compatibles y
sh
. No se admite este comando con PowerShell. Debe modificar el comando para usarlo con PowerShell.$
aws iam create-role --role-name
ecs-exec-demo-task-role
\ --assume-role-policy-document file://ecs-tasks-trust-policy.jsonPuede eliminar el archivo
ecs-tasks-trust-policy.json
. -
Cree un archivo denominado
ecs-exec-demo-task-role-policy.json
con el siguiente contenido:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }
-
Cree una política de IAM y asóciela al rol del paso anterior.
El siguiente comando utiliza caracteres de continuación con barra invertida que utilizan los intérpretes de comandos compatibles y
sh
. No se admite este comando con PowerShell. Debe modificar el comando para usarlo con 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.jsonPuede eliminar el archivo
ecs-exec-demo-task-role-policy.json
.
Paso 9: Registrar una definición de tarea que utilice gMSA sin dominio
En este paso se utiliza la AWS CLI. Puede ejecutar estos comandos en AWS CloudShell en el intérprete de comandos predeterminado, que es bash
.
-
Cree un archivo denominado
windows-gmsa-domainless-task-def.json
con el siguiente contenido:{ "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 la definición de tarea ejecutando el siguiente comando:
El siguiente comando utiliza caracteres de continuación con barra invertida que utilizan los intérpretes de comandos compatibles y
sh
. No se admite este comando con PowerShell. Debe modificar el comando para usarlo con PowerShell.$
aws ecs register-task-definition \ --cli-input-json file://
windows-gmsa-domainless-task-def.json
Paso 10: Registrar una instancia de contenedor de Windows en el clúster
Lance una instancia de Amazon EC2 para Windows y ejecute el agente de contenedor de ECS para registrarla como instancia de contenedor en el clúster. ECS ejecuta las tareas en las instancias de contenedor que están registradas en el clúster en el que se inician las tareas.
-
Para lanzar una instancia de Amazon EC2 para Windows que esté configurada para Amazon ECS en la AWS Management Console, consulte Lanzamiento de una instancia de contenedor de Windows de Amazon ECS. Deténgase en el paso correspondiente a los datos de usuario.
-
Para gMSA, los datos del usuario deben configurar la variable de entorno
ECS_GMSA_SUPPORTED
antes de iniciar el agente de contenedor de ECS.En el caso de ECS Exec, el agente debe empezar con el argumento
-EnableTaskIAMRole
.Para proteger el rol de IAM de la instancia impidiendo que las tareas lleguen al servicio web IMDS de EC2 para recuperar las credenciales del rol, agregue el argumento
-AwsvpcBlockIMDS
. Esto solo se aplica a las tareas que utilizan el modo de red deawsvpc
.<powershell> [Environment]::SetEnvironmentVariable("ECS_GMSA_SUPPORTED", $TRUE, "Machine") Import-Module ECSTools Initialize-ECSAgent -Cluster
windows-domainless-gmsa-cluster
-EnableTaskIAMRole -AwsvpcBlockIMDS </powershell> -
Revise un resumen de la configuración de su instancia en el panel Summary (Resumen); cuando haya terminado, elija Launch instance.
Paso 11: Verificar la instancia de contenedor
Puede comprobar que hay una instancia de contenedor en el clúster mediante la AWS Management Console. Sin embargo, gMSA necesita otras características que se indican como atributos. Estos atributos no están visibles en la AWS Management Console, por lo que en este tutorial se utiliza la AWS CLI.
En este paso se utiliza la AWS CLI. Puede ejecutar estos comandos en AWS CloudShell en el intérprete de comandos predeterminado, que es bash
.
-
Haga una lista de las instancias de contenedor del clúster. Las instancias de contenedor tienen un ID diferente del ID de la instancia de EC2.
$
aws ecs list-container-instances
Salida:
{ "containerInstanceArns": [ "arn:aws:ecs:
aws-region
:111122223333:container-instance/default
/MyContainerInstanceID
" ] }Por ejemplo,
526bd5d0ced448a788768334e79010fd
es un ID de instancia de contenedor válido. -
Utilice el ID de instancia de contenedor del paso anterior para obtener los detalles de la instancia de contenedor. Reemplace
MyContainerInstanceID
por el ID.El siguiente comando utiliza caracteres de continuación con barra invertida que utilizan los intérpretes de comandos compatibles y
sh
. No se admite este comando con PowerShell. Debe modificar el comando para usarlo con PowerShell.$
aws ecs describe-container-instances \ ----container-instances MyContainerInstanceID
Tenga en cuenta que el resultado es muy largo.
-
Compruebe que la lista de
attributes
tenga un objeto con la clave llamadoname
y un valorecs.capability.gmsa-domainless
. A continuación, se muestra un ejemplo del objeto.Salida:
{ "name": "ecs.capability.gmsa-domainless" }
Paso 12: Ejecutar una tarea de Windows
Ejecute una tarea de Amazon ECS. Si solo hay una instancia de contenedor en el clúster, puede usar run-task
. Si hay muchas instancias de contenedor diferentes, puede ser más fácil utilizar start-task
y especificar el ID de la instancia de contenedor en la que ejecutará la tarea, antes que agregar restricciones de ubicación a la definición de la tarea para controlar en qué tipo de instancia de contenedor se va a ejecutar la tarea.
En este paso se utiliza la AWS CLI. Puede ejecutar estos comandos en AWS CloudShell en el intérprete de comandos predeterminado, que es bash
.
-
El siguiente comando utiliza caracteres de continuación con barra invertida que utilizan los intérpretes de comandos compatibles y
sh
. No se admite este comando con PowerShell. Debe modificar el comando para usarlo con PowerShell.aws ecs run-task --task-definition windows-gmsa-domainless-task \ --enable-execute-command --cluster windows-domainless-gmsa-cluster
Tenga en cuenta el ID de la tarea que devuelve el comando.
-
Ejecute el siguiente comando para comprobar que la tarea ha comenzado. Este comando espera y no devuelve el indicador del intérprete de comandos hasta que se inicie la tarea. Sustituya
MyTaskID
por el ID de la tarea del paso anterior.$
aws ecs wait tasks-running --task MyTaskID
Paso 13: Comprobar que el contenedor tenga credenciales de gMSA
Compruebe que el contenedor de la tarea tenga un token Kerberos. gMSA
En este paso se utiliza la AWS CLI. Puede ejecutar estos comandos en AWS CloudShell en el intérprete de comandos predeterminado, que es bash
.
-
El siguiente comando utiliza caracteres de continuación con barra invertida que utilizan los intérpretes de comandos compatibles y
sh
. No se admite este comando con PowerShell. Debe modificar el comando para usarlo con PowerShell.$
aws ecs execute-command \ --task MyTaskID \ --container windows_sample_app \ --interactive \ --command powershell.exe
El resultado será un indicador de PowerShell.
-
Ejecute el siguiente comando en la terminal de PowerShell dentro del contenedor.
PS C:\>
klist get ExampleAccount$
En la salida, tenga en cuenta que
Principal
es la que creó anteriormente.
Paso 14: Limpiar
Cuando termine este tutorial, debe limpiar los recursos asociados para evitar incurrir en cargos generados por recursos sin utilizar.
En este paso se utiliza la AWS CLI. Puede ejecutar estos comandos en AWS CloudShell en el intérprete de comandos predeterminado, que es bash
.
-
Detenga la tarea. Sustituya
MyTaskID
por el ID de la tarea del paso 12, Paso 12: Ejecutar una tarea de Windows.$
aws ecs stop-task --task
MyTaskID
-
Termine la instancia de Amazon EC2. Después, la instancia de contenedor del clúster se eliminará automáticamente al cabo de una hora.
Puede buscar y terminar la instancia con la consola de Amazon EC2. O bien, puede ejecutar el siguiente comando. Para ejecutar el comando, busque el ID de instancia de EC2 en el resultado del comando
aws ecs describe-container-instances
del paso 1, Paso 11: Verificar la instancia de contenedor. El ID i-10a64379 es un ejemplo de un ID de instancia de EC2.$
aws ec2 terminate-instances --instance-ids
MyInstanceID
-
Elimine el archivo CredSpec en Amazon S3. Reemplace
MyBucket
con el nombre de su bucket de Amazon S3.$
aws s3api delete-object --bucket
MyBucket
--keyecs-domainless-gmsa-credspec/gmsa-cred-spec.json
-
Elimine el secreto de Secrets Manager. Si utilizó SSM Parameter Store en su lugar, elimine el parámetro.
El siguiente comando utiliza caracteres de continuación con barra invertida que utilizan los intérpretes de comandos compatibles y
sh
. No se admite este comando con PowerShell. Debe modificar el comando para usarlo con PowerShell.$
aws secretsmanager delete-secret --secret-id
gmsa-plugin-input
\ --force-delete-without-recovery -
Anule el registro y elimine la definición de tarea. Al anular el registro de la definición de tarea, se marca como inactiva para que no se pueda utilizar para iniciar nuevas tareas. A continuación, puede eliminar la definición de tarea.
-
Anule el registro de la definición de la tarea especificando la versión. ECS crea automáticamente versiones de las definiciones de tareas, numeradas a partir del 1. Se hace referencia a las versiones en el mismo formato que las etiquetas de las imágenes de los contenedores, por ejemplo
:1
.$
aws ecs deregister-task-definition --task-definition
windows-gmsa-domainless-task:1
-
Elimine la definición de tareas.
$
aws ecs delete-task-definitions --task-definition
windows-gmsa-domainless-task:1
-
-
(Opcional) Elimine el clúster de ECS si creó un clúster.
$
aws ecs delete-cluster --cluster
windows-domainless-gmsa-cluster
Depuración de gMSA sin dominio de Amazon ECS para contenedores de Windows
- Estado de tarea de Amazon ECS
-
ECS intenta iniciar una tarea exactamente una vez. Cualquier tarea que tenga un problema se detiene y se establece en el estado
STOPPED
. Hay dos tipos comunes de problemas con las tareas. En primer lugar, las tareas que no se pudieron iniciar. En segundo lugar, las tareas en las que la aplicación se ha detenido dentro de uno de los contenedores. En la AWS Management Console, observe el campo Motivo de la detención de la tarea y busque el motivo por el que se detuvo la tarea. En la AWS CLI, describa la tarea y observe elstoppedReason
. Para ver los pasos a seguir en laAWS Management Console y AWS CLI, consulte Visualización de los errores de las tareas detenidas de Amazon ECS. - Eventos de Windows
-
Los eventos de Windows para gMSA que se encuentran en contenedores se registran en el archivo de registro de
Microsoft-Windows-Containers-CCG
y se encuentran en el Visor de eventos, en la sección Aplicaciones y servicios deLogs\Microsoft\Windows\Containers-CCG\Admin
. Para obtener más consejos de depuración, consulte Solución de problemas de gMSA para contenedores de Windowsen el sitio web de Microsoft Learn. - Complemento de gMSA para agente de ECS
-
El registro del complemento de gMSA para el agente de ECS en la instancia de contenedor de Windows se encuentra en el siguiente directorio,
C:/ProgramData/Amazon/gmsa-plugin/
. Consulte este registro para comprobar si las credenciales de usuario sin dominio se descargaron de la ubicación de almacenamiento, como Secrets Manager, y si el formato de la credencial se leyó correctamente.