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 Amazon ECS Windows avec un environnement sans domaine gMSA à l'aide du AWS CLI
Le didacticiel suivant explique comment créer une ECS tâche Amazon qui exécute un conteneur Windows qui possède des informations d'identification pour accéder à Active Directory avec l' AWS CLI. En utilisant sans domaine gMSA, 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
- Prérequis
- Étape 1 : Créer et configurer gMSA compte sur les services de domaine Active Directory (AD DS)
- Étape 2 : charger les informations d'identification dans Secrets Manager
- Étape 3 : Modifiez votre CredSpec JSONpour inclure les applications sans domaine gMSA Informations
- Étape 4 : Chargement CredSpec vers Amazon S3
- Étape 5 (facultative) : créer un ECS cluster Amazon
- Étape 6 : créer un IAM rôle pour les instances de conteneur
- Étape 7 : créer un rôle d'exécution de tâche personnalisé
- Étape 8 : créer un rôle de tâche pour Amazon ECS Exec
- Étape 9 : enregistrer une définition de tâche qui utilise sans domaine gMSA
- Étape 10 : enregistrer une instance de conteneur Windows dans le cluster
- Étape 11 : vérifier l'instance de conteneur
- Étape 12 : exécuter une tâche Windows
- Étape 13 : vérifier que le conteneur possède gMSA informations d'identification
- Étape 14 : nettoyer
- Débogage d'Amazon sans domaine ECS gMSA pour 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 AWS utilisateur dispose des autorisations requises spécifiées dans l'exemple Amazon ECS _ FullAccess IAM de politique.
-
La dernière version de l' AWS CLI est installée et configurée. Pour plus d'informations sur l'installation ou la mise à niveau de votre AWS CLI, consultez Installation de l' AWS Command Line Interface.
-
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 AmazonEC2. 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 ECS Linux Amazon peut se joindre au domaine. Pour de plus amples informations, veuillez consulter AWS Direct Connect.
-
-
Vous disposez de sous-réseaux VPC et capables de résoudre le nom de domaine Active Directory.
-
Vous avez choisi entre le mode sans domaine gMSAet en joignant chaque instance à un seul domaine. En utilisant sans domaine gMSA, 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 des données pour CredSpec et, éventuellement, pour les informations d'identification utilisateur Active Directory pour les sans domaine gMSA.
Amazon ECS utilise un fichier de spécification des informations d'identification Active Directory (CredSpec). Ce fichier comprend les éléments de clé. gMSA métadonnées utilisées pour propager le gMSA contexte du compte pour le conteneur. Vous générez les CredSpec puis stockez-le dans l'un des CredSpec options de stockage 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 CredSpec le fichier peut spécifier des informations d'identification dans l'un des domainless user credentialsoptions de stockage du tableau suivant, spécifique 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 Amazon Manager Manager Manager Manager EC2 Parameter Manager Manager Parameter Manager Parameter Manager Manager Manager CredSpec CredSpec, informations d'identification utilisateur sans domaine Fichier local N/A CredSpec -
(Facultatif) AWS CloudShell est un outil qui donne aux clients une ligne de commande sans avoir besoin de créer leur propre EC2 instance. Pour de plus amples informations, veuillez consulter Présentation d'dans Présentation d' AWS CloudShell dans dans le guide de AWS CloudShell l'utilisateur.
Étape 1 : Créer et configurer gMSA compte sur les services de domaine Active Directory (AD DS)
Création et configuration d'un gMSA compte 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é KDS racine et gMSA les autorisations sont configurées avec votre AD Microsoft AWS géré par.
Si vous n'avez pas encore créé un gMSA Compte de service dans votre domaine, vous devez d'abord générer une clé racine du service de diffusion de clés (KDS). L'KDSest responsable de la création, de la rotation et de la libération de l' gMSA mot de passe pour les hôtes autorisés. Quand le
ccg.exe
besoin de récupérer gMSA informations d'identification, il KDS contacte pour récupérer le mot de passe actuel.Pour vérifier si la clé KDS racine a déjà été créée, exécutez l' PowerShellapplet de commande suivante avec des privilèges d'administrateur de domaine sur un contrôleur de domaine à l'aide du
ActiveDirectory
PowerShell module. Pour plus d'informations sur le module, veuillez consulter ActiveDirectory Modulesur le site Web de Microsoft Learn (langue française non garantie). 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é KDS racine 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é KDS racine soit répliquée et puisse être utilisée sur tous les contrôleurs de domaine. -
Créer le gMSA compte
Pour créer le gMSA et autorisez le
ccg.exe
à récupérer le gMSA mot de passe, exécutez les PowerShell commandes suivantes à partir d'un serveur ou d'un client Windows ayant accès au domaine. RemplacezExampleAccount
par le nom que vous souhaitez pour votre 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 dans 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 CredSpec objets dans Active Directory et publient le CredSpec JSON.
PS C:\>
Install-PackageProvider -Name NuGet -Force
PS C:\>
Install-Module CredentialSpec
-
PS C:\>
New-CredentialSpec -AccountName
ExampleAccount
-
-
Copiez le JSON résultat de la commande précédente dans un fichier appelé
gmsa-cred-spec.json
. C'est le CredSpec dans le fichier. Il est utilisé à l'étape 3, Étape 3 : Modifiez votre CredSpec JSONpour inclure les applications sans domaine gMSA Informations.
É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. C'est le domaine sans domaine gMSA Méthode. En utilisant sans domaine gMSA, 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. Gardez le ARN secret pour l'utiliser à l'étape suivante, Étape 3 : Modifiez votre CredSpec JSONpour inclure les applications sans domaine gMSA Informations
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 : Modifiez votre CredSpec JSONpour inclure les applications sans domaine gMSA Informations
Avant de télécharger le CredSpec à l'une des options de stockage, ajoutez des informations au CredSpec avec le secret ARN de l'étape précédente dans Secrets Manager. Pour plus d'informations, veuillez consulter Configuration de spécifications d'informations d'identification supplémentaires pour non-domain-joined un cas d'usage avec un hôte de conteneur sur le site
-
Ajoutez les informations suivantes à CredSpec fichier à l'intérieur du
ActiveDirectoryConfig
. Remplacez l'ARNpar le secret de l'étape précédente dans Secrets Manager.Veuillez noter que la
PluginGUID
valeur doit correspondre GUID à celle 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 le ARN format suivant :
\"arn:aws:ssm:
.aws-region
:111122223333:parameter/gmsa-plugin-input
\" -
Après avoir modifié le CredSpec fichier, 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 : Chargement CredSpec vers 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
.
-
Copier le CredSpec fichier sur l'ordinateur ou l'environnement dans lequel vous exécutez AWS CLI les commandes.
-
Exécutez la AWS CLI commande suivante pour télécharger CredSpec à 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 ECS cluster Amazon
Par défaut, votre compte possède un ECS cluster Amazon 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 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 IAM rôle pour les instances de conteneur
Une instance de conteneur est un ordinateur hôte permettant d'exécuter des conteneurs dans ECS des tâches, par exemple EC2 des instances Amazon. Chaque instance de conteneur s'enregistre dans un ECS cluster Amazon. Avant de pouvoir lancer EC2 des instances Amazon et de les enregistrer dans un cluster, vous devez créer IAM le rôle que vos instances de conteneur utiliseront.
Pour créer le rôle d'instance de conteneur, veuillez consulter IAMRôle de l'instance de ECS conteneur Amazon. 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 IAM rôle 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 ECS pour exécuter 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 Well-Architected AWS .
-
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 la ARN pour
Resource
dans la première instruction par le compartiment et l'emplacement Amazon S3, et la secondeResource
par la 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
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 ssmmessages
d'autorisations. Pour connaître la IAM politique requise, voirECSAutorisations d'exécution.
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 l' 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 IAM rôle. 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 IAM politique 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 sans domaine 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
.
-
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 ECS conteneur pour l'enregistrer en tant qu'instance de conteneur dans le cluster. ECSexé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.
-
Dans gMSA, les données utilisateur doivent définir la variable d'environnement
ECS_GMSA_SUPPORTED
avant de démarrer l'agent de ECS conteneur.Pour ECS Exec, l'agent doit commencer par l'argument
-EnableTaskIAMRole
.Pour sécuriser le IAM rôle d'instance en empêchant les tâches d'atteindre le service EC2 IMDS Web 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 l' AWS Management Console. Ce didacticiel utilise donc l' 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 ID différent de celui de l'EC2instance.
$
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 ECS tâche Amazon. 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 gMSA informations d'identification
Vérifiez que le conteneur de la tâche possède un Kerberos jeton. 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
-
Résiliez l'EC2instance Amazon. Ensuite, l'instance de conteneur du cluster sera automatiquement supprimée au bout d'une heure.
Vous pouvez détecter 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'EC2instance dans la sortie 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 les photos ou les vidéos CredSpec fichier 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. ECScré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 ECS cluster, si vous en avez créé un.
$
aws ecs delete-cluster --cluster
windows-domainless-gmsa-cluster
Débogage d'Amazon sans domaine ECS gMSA pour conteneurs Windows
- Statut de ECS tâche Amazon
-
ECSessaie 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 l' AWS Management Console, consultez le champ Motif de l'arrêt de la tâche afin de connaître 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
-
Événements Windows pour gMSA dans les conteneurs sont enregistrés dans le fichier
Microsoft-Windows-Containers-CCG
journal 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, veuillez consulter Résoudre des problèmes de conteneurs Windows sur gMSAs lesite Web de Microsoft Learn (langue française non garantie). - ECSagent gMSA .
-
Journalisation pour gMSA le plug-in pour l'ECSagent 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.