Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisation de conteneurs Windows Amazon ECS avec des conteneurs sans domaine à gMSA l'aide du AWS CLI
Le didacticiel suivant explique comment créer une tâche Amazon ECS qui exécute un conteneur Windows qui possède des informations d'identification pour accéder à Active Directory avec l' AWS CLI. En utilisant les gMSA sans domaine, l'instance de conteneur n'est pas jointe au domaine, les autres applications de l'instance ne peuvent pas utiliser les informations d'identification pour accéder au domaine et les tâches qui joignent différents domaines peuvent s'exécuter sur la même instance.
Rubriques
Étape 1 : créer et configurer le compte gMSA sur les services de domaine Active Directory (AD DS)
Étape 2 : charger les informations d'identification dans Secrets Manager
Étape 3 : modifier votre JSON CredSpec pour inclure des informations gMSA sans domaine
Étape 9 : enregistrer une définition de tâche qui utilise gMSA sans domaine
Étape 10 : enregistrer une instance de conteneur Windows dans le cluster
Étape 13 : vérifier que le conteneur possède les informations d'identification gMSA
Débogage des gMSA Amazon ECS sans domaine pour les conteneurs Windows
Prérequis
Le didacticiel suppose de remplir les prérequis suivants :
-
Vous devez avoir suivi les étapes de Configurer l'utilisation d'Amazon ECS.
-
Votre utilisateur IAM dispose des autorisations requises spécifiées dans l'exemple de politique Amazon ECS_ FullAccess IAM.
-
La dernière version du AWS CLI est installée et configurée. Pour plus d'informations sur l'installation ou la mise à niveau de votre AWS CLI AWS Command Line Interface.
Note
Vous pouvez utiliser des points de terminaison de service à double pile pour interagir avec Amazon ECS à partir de AWS CLI SDKs, et de l'API Amazon ECS via les deux IPv4 et. IPv6 Pour de plus amples informations, veuillez consulter Utilisation des points de terminaison à double pile Amazon ECS.
-
Vous configurez un domaine Active Directory avec les ressources auxquelles vous souhaitez que vos conteneurs accèdent. Amazon ECS prend en charge les configurations suivantes :
-
Un AWS Directory Service Active Directory. AWS Directory Service est un Active Directory AWS géré hébergé sur Amazon EC2. Pour plus d'informations, consultez Getting Started with AWS Managed Microsoft AD dans le Guide d'AWS Directory Service administration.
-
Un répertoire Active Directory sur site. Vous devez vous assurer que l'instance de conteneur Linux Amazon ECS peut se joindre au domaine. Pour de plus amples informations, veuillez consulter AWS Direct Connect.
-
-
Vous disposez d'un VPC et de sous-réseaux capables de résoudre le nom de domaine Active Directory.
-
Vous avez choisi entre les gMSA sans domaine et joindre chaque instance à un seul domaine. En utilisant les gMSA sans domaine, l'instance de conteneur n'est pas jointe au domaine, les autres applications de l'instance ne peuvent pas utiliser les informations d'identification pour accéder au domaine et les tâches qui joignent différents domaines peuvent s'exécuter sur la même instance.
Choisissez ensuite le stockage de données pour CredSpec et, éventuellement, pour les informations d'identification utilisateur Active Directory pour les gMSA sans domaine.
Amazon ECS utilise un fichier de spécification des informations d'identification Active Directory (CredSpec). Ce fichier contient les métadonnées gMSA servant à propager le contexte du compte gMSA au conteneur. Vous générez le fichier CredSpec, puis vous le stockez dans l'une des options de stockage CredSpec du tableau suivant, spécifique au système d'exploitation des instances de conteneur. Pour utiliser la méthode sans domaine, une section facultative du fichier CredSpec peut spécifier les informations d'identification dans l'une des options de stockage domainless user credentials du tableau suivant, spécifiques au système d'exploitation des instances de conteneur.
Emplacement de stockage Linux Windows Amazon Simple Storage Service CredSpec CredSpec AWS Secrets Manager informations d'identification utilisateur sans domaine informations d'identification utilisateur sans domaine Boutique de paramètres Amazon EC2 Systems Manager CredSpec CredSpec, informations d'identification utilisateur sans domaine Fichier local N/A CredSpec -
(Facultatif) AWS CloudShell est un outil qui fournit aux clients une ligne de commande sans avoir à créer leur propre EC2 instance. Pour plus d'informations, voir Qu'est-ce que c'est AWS CloudShell ? dans le guide de AWS CloudShell l'utilisateur.
Étape 1 : créer et configurer le compte gMSA sur les services de domaine Active Directory (AD DS)
Créez et configurez un compte gMSA sur le domaine Active Directory.
-
Génération d'une clé racine du service de diffusion de clés
Note
Si vous utilisez AWS Directory Service, vous pouvez ignorer cette étape.
La clé racine KDS et les autorisations gMSA sont configurées avec votre AD Microsoft géré par AWS .
Si vous n'avez pas encore créé de compte de service gMSA dans votre domaine, vous devez d'abord générer une clé racine du service de diffusion de clés (KDS). Le KDS est responsable de la création, de la rotation et de la diffusion du mot de passe gMSA aux hôtes autorisés. Lorsque
ccg.exe
a besoin de récupérer les informations d'identification gMSA, il contacte KDS pour récupérer le mot de passe actuel.Pour vérifier si la clé racine KDS a déjà été créée, exécutez l' PowerShellapplet de commande suivante avec les privilèges d'administrateur de domaine sur un contrôleur de domaine à l'aide du module.
ActiveDirectory
PowerShell Pour plus d'informations sur le module, voir ActiveDirectory Modulesur le site Web de Microsoft Learn. PS C:\>
Get-KdsRootKey
Si la commande renvoie un ID de clé, vous pouvez ignorer le reste de cette étape. Dans le cas contraire, créez la clé racine KDS en exécutant la commande suivante :
PS C:\>
Add-KdsRootKey -EffectiveImmediately
Bien que l'argument
EffectiveImmediately
de la commande implique que la clé est effective immédiatement, vous devez attendre 10 heures avant que la clé racine KDS soit répliquée et puisse être utilisée sur tous les contrôleurs de domaine. -
Création du compte gMSA
Pour créer le gMSA compte et autoriser le
ccg.exe
à récupérer le gMSA mot de passe, exécutez les PowerShell commandes suivantes depuis un serveur ou un client Windows ayant accès au domaine. RemplacezExampleAccount
par le nom que vous souhaitez attribuer à votre compte 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" -
Créez un utilisateur avec un mot de passe permanent qui n'expire pas. Ces informations d'identification sont stockées AWS Secrets Manager et utilisées par chaque tâche pour rejoindre le domaine.
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
" -
Installez le PowerShell module de création d'CredSpecobjets dans Active Directory et générez le CredSpec JSON.
PS C:\>
Install-PackageProvider -Name NuGet -Force
PS C:\>
Install-Module CredentialSpec
-
PS C:\>
New-CredentialSpec -AccountName
ExampleAccount
-
-
Copiez le résultat JSON de la commande précédente dans un fichier appelé
gmsa-cred-spec.json
. Il s'agit du fichier CredSpec. Il est utilisé à l'étape 3, Étape 3 : modifier votre JSON CredSpec pour inclure des informations gMSA sans domaine.
Étape 2 : charger les informations d'identification dans Secrets Manager
Copiez les informations d'identification Active Directory dans un système de stockage d'informations d'identification sécurisé, afin que chaque tâche les récupère. Il s'agit de la méthode gMSA sans domaine. En utilisant les gMSA sans domaine, l'instance de conteneur n'est pas jointe au domaine, les autres applications de l'instance ne peuvent pas utiliser les informations d'identification pour accéder au domaine et les tâches qui joignent différents domaines peuvent s'exécuter sur la même instance.
Cette étape utilise le AWS CLI. Vous pouvez exécuter ces commandes dans AWS CloudShell dans le shell par défaut, qui est bash
.
-
Exécutez la AWS CLI commande suivante et remplacez le nom d'utilisateur, le mot de passe et le nom de domaine en fonction de votre environnement. Conservez l'ARN du secret pour l'utiliser à l'étape suivante, Étape 3 : modifier votre JSON CredSpec pour inclure des informations gMSA sans domaine.
La commande suivante utilise des barres obliques inverses qui sont utilisées par
sh
et les shells compatibles. Cette commande n'est pas compatible avec PowerShell. Vous devez modifier la commande pour l'utiliser avec PowerShell.$
aws secretsmanager create-secret \ --name
gmsa-plugin-input
\ --description "Amazon ECS - gMSA Portable Identity.
" \ --secret-string "{\"username\":\"ExampleAccount
\",\"password\":\"Test123
\",\"domainName\":\"contoso.com
\"}"
Étape 3 : modifier votre JSON CredSpec pour inclure des informations gMSA sans domaine
Avant de charger le CredSpec vers l'une des options de stockage, ajoutez des informations au CredSpec à l'aide de l'ARN du secret dans Secrets Manager provenant de l'étape précédente. Pour plus d'informations, consultez la section Configuration des spécifications d'identification supplémentaires pour le cas d'utilisation d' non-domain-joinedun hôte de conteneur sur le site
-
Ajoutez les informations suivantes au fichier CredSpec contenu dans le
ActiveDirectoryConfig
. Remplacez l'ARN par le secret de l'étape précédente dans Secrets Manager.Veuillez noter que la valeur
PluginGUID
doit correspondre au GUID de l'extrait de code suivant et qu'elle est obligatoire."HostAccountConfig": { "PortableCcgVersion": "1", "PluginGUID": "{859E1386-BDB4-49E8-85C7-3070B13920E1}", "PluginInput": "{\"credentialArn\": \"arn:aws:secretsmanager:
aws-region
:111122223333:secret:gmsa-plugin-input
\"}" }Vous pouvez également utiliser un secret dans SSM Parameter Store en utilisant l'ARN au format suivant :
\"arn:aws:ssm:
.aws-region
:111122223333:parameter/gmsa-plugin-input
\" -
Une fois le fichier CredSpec modifié, il doit ressembler à l'exemple suivant :
{ "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
\"}" } } }
Étape 4 : charger CredSpec dans Amazon S3
Cette étape utilise le AWS CLI. Vous pouvez exécuter ces commandes dans AWS CloudShell dans le shell par défaut, qui est bash
.
-
Copiez le fichier CredSpec sur l'ordinateur ou l'environnement dans lequel vous exécutez les commandes AWS CLI .
-
Exécutez la AWS CLI commande suivante pour le CredSpec télécharger sur Amazon S3. Remplacez
MyBucket
par le nom de votre compartiment Simple Storage Service (Amazon S3). Vous pouvez stocker le fichier sous forme d'objet dans n'importe quel compartiment et à n'importe quel emplacement, mais vous devez autoriser l'accès à ce compartiment et à cet emplacement dans la stratégie que vous associez au rôle d'exécution des tâches.La commande suivante utilise des barres obliques inverses qui sont utilisées par
sh
et les shells compatibles. Cette commande n'est pas compatible avec PowerShell. Vous devez modifier la commande pour l'utiliser avec PowerShell.$
aws s3 cp gmsa-cred-spec.json \ s3://
MyBucket/ecs-domainless-gmsa-credspec
Étape 5 (facultative) : créer un cluster Amazon ECS
Par défaut, votre compte possède un cluster Amazon ECS nommé default
. Ce cluster est utilisé par défaut dans AWS CloudFormation les AWS CLI SDKs Vous pouvez utiliser des clusters supplémentaires pour regrouper et organiser les tâches et l'infrastructure, et attribuer des valeurs par défaut pour certaines configurations.
Vous pouvez créer un cluster à partir du AWS Management Console AWS CLI, SDKs, ou AWS CloudFormation. Les paramètres et la configuration du cluster n'ont aucune incidence sur gMSA.
Cette étape utilise le AWS CLI. Vous pouvez exécuter ces commandes dans AWS CloudShell dans le shell par défaut, qui est bash
.
$
aws ecs create-cluster --cluster-name windows-domainless-gmsa-cluster
Important
Si vous choisissez de créer votre propre cluster, vous devez spécifier --cluster
clusterName
pour chaque commande que vous prévoyez d'utiliser avec ce cluster.
Étape 6 : créer un rôle IAM pour les instances de conteneur
Une instance de conteneur est un ordinateur hôte permettant d'exécuter des conteneurs dans des tâches ECS, par exemple EC2 des instances Amazon. Chaque instance de conteneur s'enregistre dans un cluster Amazon ECS. Avant de lancer EC2 des instances Amazon et de les enregistrer dans un cluster, vous devez créer un rôle IAM que vos instances de conteneur pourront utiliser.
Pour créer le rôle d'instance de conteneur, veuillez consulter Rôle IAM d'instance de conteneur Amazon ECS. Le ecsInstanceRole
par défaut dispose des autorisations suffisantes pour terminer ce didacticiel.
Étape 7 : créer un rôle d'exécution de tâche personnalisé
Amazon ECS peut utiliser un rôle IAM différent pour les autorisations nécessaires au démarrage de chaque tâche, au lieu du rôle d'instance de conteneur. Il s'agit du rôle d'exécution de tâche. Nous recommandons de créer un rôle d'exécution de tâche avec uniquement les autorisations requises pour qu'ECS exécute la tâche, également appelées autorisations de moindre privilège. Pour plus d'informations sur le principe du moindre privilège, veuillez consulter SEC03-BP02 Accorder un accès selon le principe du moindre privilège dans le cadre AWS Well-Architected.
-
Pour créer un rôle d'exécution de tâche, veuillez consulter Création du rôle d'exécution de tâche. Les autorisations par défaut permettent à l'instance de conteneur d'extraire des images de conteneur d'Amazon Elastic Container Registry
stdout
etstderr
de vos applications pour les connecter à Amazon CloudWatch Logs.Comme le rôle nécessite des autorisations personnalisées pour ce didacticiel, vous pouvez lui donner un nom différent de
ecsTaskExecutionRole
. Ce didacticiel utiliseecsTaskExecutionRole
dans les étapes suivantes. -
Ajoutez les autorisations suivantes en créant une stratégie personnalisée, soit une stratégie en ligne qui n'existe que pour ce rôle, soit une stratégie que vous pouvez réutiliser. Remplacez l'ARN de la
Resource
dans la première instruction par le compartiment et l'emplacement Amazon S3, et la secondeResource
par l'ARN du secret dans Secrets Manager.Si vous chiffrez le secret dans Secrets Manager avec une clé personnalisée, vous devez également autoriser
kms:Decrypt
pour la clé.Si vous utilisez SSM Parameter Store au lieu de Secrets Manager, vous devez autoriser
ssm:GetParameter
pour le paramètre, au lieu 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
" } ] }
Étape 8 : créer un rôle de tâche pour Amazon ECS Exec
Ce didacticiel utilise Amazon ECS Exec pour vérifier le fonctionnement en exécutant une commande dans une tâche en cours d'exécution. Pour utiliser ECS Exec, le service ou la tâche doit activer ECS Exec, et le rôle de tâche (mais pas le rôle d'exécution de tâche) doit disposer d'autorisations ssmmessages
. Pour la politique IAM requise, veuillez consulter Autorisations ECS Exec.
Cette étape utilise le AWS CLI. Vous pouvez exécuter ces commandes dans AWS CloudShell dans le shell par défaut, qui est bash
.
Pour créer un rôle de tâche à l'aide de AWS CLI, procédez comme suit.
-
Créez un fichier nommé
ecs-tasks-trust-policy.json
avec le contenu suivant :{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Créez un rôle IAM. Vous pouvez remplacer le nom
ecs-exec-demo-task-role
mais le conserver pour les étapes suivantes.La commande suivante utilise des barres obliques inverses qui sont utilisées par
sh
et les shells compatibles. Cette commande n'est pas compatible avec PowerShell. Vous devez modifier la commande pour l'utiliser avec PowerShell.$
aws iam create-role --role-name
ecs-exec-demo-task-role
\ --assume-role-policy-document file://ecs-tasks-trust-policy.jsonVous pouvez supprimer le fichier
ecs-tasks-trust-policy.json
. -
Créez un fichier nommé
ecs-exec-demo-task-role-policy.json
avec le contenu suivant :{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }
-
Créez une politique IAM et attachez-la au rôle de l'étape précédente.
La commande suivante utilise des barres obliques inverses qui sont utilisées par
sh
et les shells compatibles. Cette commande n'est pas compatible avec PowerShell. Vous devez modifier la commande pour l'utiliser avec 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.jsonVous pouvez supprimer le fichier
ecs-exec-demo-task-role-policy.json
.
Étape 9 : enregistrer une définition de tâche qui utilise gMSA sans domaine
Cette étape utilise le AWS CLI. Vous pouvez exécuter ces commandes dans AWS CloudShell dans le shell par défaut, qui est bash
.
-
Créez un fichier nommé
windows-gmsa-domainless-task-def.json
avec le contenu suivant :{ "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" }
-
Enregistrez la définition de tâche en exécutant la commande suivante :
La commande suivante utilise des barres obliques inverses qui sont utilisées par
sh
et les shells compatibles. Cette commande n'est pas compatible avec PowerShell. Vous devez modifier la commande pour l'utiliser avec PowerShell.$
aws ecs register-task-definition \ --cli-input-json file://
windows-gmsa-domainless-task-def.json
Étape 10 : enregistrer une instance de conteneur Windows dans le cluster
Lancez une instance Amazon EC2 Windows et exécutez l'agent de conteneur ECS pour l'enregistrer en tant qu'instance de conteneur dans le cluster. ECS exécute des tâches sur les instances de conteneur enregistrées dans le cluster dans lequel les tâches sont démarrées.
-
Pour lancer une instance Amazon EC2 Windows configurée pour Amazon ECS dans le AWS Management Console, consultezLancement d'une instance de conteneur Amazon ECS Windows. Arrêtez-vous à l'étape des données utilisateur.
-
Pour gMSA, les données utilisateur doivent définir la variable d'environnement
ECS_GMSA_SUPPORTED
avant de démarrer l'agent de conteneur ECS.Pour ECS Exec, l'agent doit commencer par l'argument
-EnableTaskIAMRole
.Pour sécuriser le rôle IAM de l'instance en empêchant les tâches d'atteindre le service Web EC2 IMDS pour récupérer les informations d'identification du rôle, ajoutez l'argument.
-AwsvpcBlockIMDS
Cela s'applique uniquement aux tâches qui utilisent le mode réseauawsvpc
.<powershell> [Environment]::SetEnvironmentVariable("ECS_GMSA_SUPPORTED", $TRUE, "Machine") Import-Module ECSTools Initialize-ECSAgent -Cluster
windows-domainless-gmsa-cluster
-EnableTaskIAMRole -AwsvpcBlockIMDS </powershell> -
Consultez un résumé de la configuration de votre instance dans le panneau Summary (Récapitulatif) et, lorsque vous êtes prêt, choisissez Launch instance (Lancer l’instance).
Étape 11 : vérifier l'instance de conteneur
Vous pouvez vérifier qu'il existe une instance de conteneur dans le cluster à l'aide de l' AWS Management Console. Cependant, gMSA nécessite des fonctionnalités supplémentaires indiquées sous forme d'attributs. Ces attributs ne sont pas visibles dans le AWS Management Console. Ce didacticiel utilise donc le AWS CLI.
Cette étape utilise le AWS CLI. Vous pouvez exécuter ces commandes dans AWS CloudShell dans le shell par défaut, qui est bash
.
-
Répertoriez les instances de conteneur dans le cluster. Les instances de conteneur ont un identifiant différent de celui de l' EC2 instance.
$
aws ecs list-container-instances
Sortie :
{ "containerInstanceArns": [ "arn:aws:ecs:
aws-region
:111122223333:container-instance/default
/MyContainerInstanceID
" ] }Par exemple,
526bd5d0ced448a788768334e79010fd
est un ID d'instance de conteneur valide. -
Utilisez l'ID d'instance de conteneur indiqué à l'étape précédente pour obtenir les détails de l'instance de conteneur. Remplacez
MyContainerInstanceID
par l'ID.La commande suivante utilise des barres obliques inverses qui sont utilisées par
sh
et les shells compatibles. Cette commande n'est pas compatible avec PowerShell. Vous devez modifier la commande pour l'utiliser avec PowerShell.$
aws ecs describe-container-instances \ ----container-instances MyContainerInstanceID
Veuillez noter que la sortie est très longue.
-
Vérifiez que la liste
attributes
contient un objet avec la clé appeléename
et une valeurecs.capability.gmsa-domainless
. Voici un exemple de l'objet.Sortie :
{ "name": "ecs.capability.gmsa-domainless" }
Étape 12 : exécuter une tâche Windows
Exécutez une tâche Amazon ECS. S'il n'y a qu'une seule instance de conteneur dans le cluster, vous pouvez utiliser run-task
. S'il existe de nombreuses instances de conteneur différentes, il peut être plus facile d'utiliser start-task
et de spécifier l'ID d'instance de conteneur sur lequel exécuter la tâche, plutôt que d'ajouter des contraintes de placement à la définition de la tâche pour contrôler le type d'instance de conteneur sur lequel exécuter cette tâche.
Cette étape utilise le AWS CLI. Vous pouvez exécuter ces commandes dans AWS CloudShell dans le shell par défaut, qui est bash
.
-
La commande suivante utilise des barres obliques inverses qui sont utilisées par
sh
et les shells compatibles. Cette commande n'est pas compatible avec PowerShell. Vous devez modifier la commande pour l'utiliser avec PowerShell.aws ecs run-task --task-definition windows-gmsa-domainless-task \ --enable-execute-command --cluster windows-domainless-gmsa-cluster
Notez l'ID de tâche qui est renvoyé par la commande.
-
Exécutez la commande suivante pour vérifier que la tâche a démarré. Cette commande attend et ne renvoie pas l'invite du shell tant que la tâche ne démarre pas. Remplacez
MyTaskID
par l'ID de tâche de l'étape précédente.$
aws ecs wait tasks-running --task MyTaskID
Étape 13 : vérifier que le conteneur possède les informations d'identification gMSA
Vérifiez que le conteneur de la tâche possède un jeton Kerberos. gMSA
Cette étape utilise le AWS CLI. Vous pouvez exécuter ces commandes dans AWS CloudShell dans le shell par défaut, qui est bash
.
-
La commande suivante utilise des barres obliques inverses qui sont utilisées par
sh
et les shells compatibles. Cette commande n'est pas compatible avec PowerShell. Vous devez modifier la commande pour l'utiliser avec PowerShell.$
aws ecs execute-command \ --task MyTaskID \ --container windows_sample_app \ --interactive \ --command powershell.exe
Le résultat sera une PowerShell invite.
-
Exécutez la commande suivante dans le PowerShell terminal à l'intérieur du conteneur.
PS C:\>
klist get ExampleAccount$
Dans la sortie, notez que le
Principal
est celui que vous avez créé précédemment.
Étape 14 : nettoyer
Une fois que vous avez terminé ce didacticiel, vous devez nettoyer les ressources qui lui sont associées afin d'éviter la facturation de frais pour des ressources inutilisées.
Cette étape utilise le AWS CLI. Vous pouvez exécuter ces commandes dans AWS CloudShell dans le shell par défaut, qui est bash
.
-
Arrêtez la tâche. Remplacez
MyTaskID
par l'ID de tâche de l'étape 12, Étape 12 : exécuter une tâche Windows.$
aws ecs stop-task --task
MyTaskID
-
Mettez fin à l' EC2 instance Amazon. Ensuite, l'instance de conteneur du cluster sera automatiquement supprimée au bout d'une heure.
Vous pouvez rechercher et résilier l'instance à l'aide de la EC2 console Amazon. Vous pouvez également exécuter la commande suivante. Pour exécuter la commande, recherchez l'ID d' EC2 instance dans le résultat de la
aws ecs describe-container-instances
commande de l'étape 1Étape 11 : vérifier l'instance de conteneur. i-10a64379 est un exemple d'ID d'instance. EC2$
aws ec2 terminate-instances --instance-ids
MyInstanceID
-
Supprimez le fichier CredSpec dans Amazon S3. Remplacez
MyBucket
par le nom de votre compartiment Simple Storage Service (Amazon S3).$
aws s3api delete-object --bucket
MyBucket
--keyecs-domainless-gmsa-credspec/gmsa-cred-spec.json
-
Supprimez le secret dans Secrets Manager. Si vous avez plutôt utilisé SSM Parameter Store, supprimez le paramètre.
La commande suivante utilise des barres obliques inverses qui sont utilisées par
sh
et les shells compatibles. Cette commande n'est pas compatible avec PowerShell. Vous devez modifier la commande pour l'utiliser avec PowerShell.$
aws secretsmanager delete-secret --secret-id
gmsa-plugin-input
\ --force-delete-without-recovery -
Annulez l'enregistrement et supprimez la définition de tâche. En annulant l'enregistrement de la définition de tâche, vous la marquez comme inactive afin qu'elle ne puisse pas être utilisée pour démarrer de nouvelles tâches. Ensuite, vous pouvez supprimer la définition de tâche.
-
Annulez l'enregistrement de la définition de tâche en spécifiant la version. ECS crée automatiquement des versions des définitions de tâches, qui sont numérotées à partir de 1. Vous faites référence aux versions dans le même format que les étiquettes sur les images des conteneurs, telles que
:1
.$
aws ecs deregister-task-definition --task-definition
windows-gmsa-domainless-task:1
-
Supprimez la définition de tâche.
$
aws ecs delete-task-definitions --task-definition
windows-gmsa-domainless-task:1
-
-
(Facultatif) Supprimez le cluster ECS, si vous en avez créé un.
$
aws ecs delete-cluster --cluster
windows-domainless-gmsa-cluster
Débogage des gMSA Amazon ECS sans domaine pour les conteneurs Windows
- Statut de tâche Amazon ECS
-
ECS essaie de démarrer une tâche une seule fois. Toute tâche présentant un problème est arrêtée et définie sur le statut
STOPPED
. Il existe deux types courants de problèmes liés aux tâches. Premièrement, les tâches qui n'ont pas pu être démarrées. Deuxièmement, les tâches pour lesquelles l'application s'est arrêtée dans l'un des conteneurs. Dans le AWS Management Console champ Motif de l'arrêt de la tâche, recherchez la raison pour laquelle la tâche a été arrêtée. Dans l' AWS CLI, décrivez la tâche et examinez lastoppedReason
. Pour les étapes à suivre dans AWS Management Console le AWS CLI sable, voirL'affichage d'Amazon ECS a permis de stopper les erreurs de tâches. - Événements Windows
-
Les événements Windows pour gMSA dans les conteneurs sont enregistrés dans le fichier journal
Microsoft-Windows-Containers-CCG
et se trouvent dans l'Observateur d'événements, dans la section Applications et services deLogs\Microsoft\Windows\Containers-CCG\Admin
. Pour obtenir d'autres conseils de débogage, consultez la section Résoudre les problèmes liés aux conteneurs g MSAs pour Windowssur le site Web de Microsoft Learn. - Plug-in gMSA d'agent ECS
-
La journalisation du plug-in gMSA pour l'agent ECS sur l'instance de conteneur Windows se trouve dans le répertoire suivant,
C:/ProgramData/Amazon/gmsa-plugin/
. Consultez ce journal pour voir si les informations d'identification de l'utilisateur sans domaine ont été téléchargées depuis l'emplacement de stockage, tel que Secrets Manager, et si le format des informations d'identification a été lu correctement.