Utilisation de conteneurs Amazon ECS Windows avec un environnement sans domaine gMSA à l'aide du AWS CLI - Amazon Elastic Container Service

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.

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.

  1. 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 Module sur 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.

  2. 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. Remplacez ExampleAccount par le nom que vous souhaitez pour votre gMSA .

    1. PS C:\> Install-WindowsFeature RSAT-AD-PowerShell
    2. PS C:\> New-ADGroup -Name "ExampleAccount Authorized Hosts" -SamAccountName "ExampleAccountHosts" -GroupScope DomainLocal
    3. PS C:\> New-ADServiceAccount -Name "ExampleAccount" -DnsHostName "contoso" -ServicePrincipalNames "host/ExampleAccount", "host/contoso" -PrincipalsAllowedToRetrieveManagedPassword "ExampleAccountHosts"
    4. 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
    5. PS C:\> Add-ADGroupMember -Identity "ExampleAccountHosts" -Members "ExampleAccount"
    6. 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
    7. PS C:\> New-CredentialSpec -AccountName ExampleAccount
  3. 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 Web de Microsoft Learn.

  1. Ajoutez les informations suivantes à CredSpec fichier à l'intérieur duActiveDirectoryConfig. 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\".

  2. 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.

  1. Copier le CredSpec fichier sur l'ordinateur ou l'environnement dans lequel vous exécutez AWS CLI les commandes.

  2. 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 .

  1. 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 et stderr 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 utilise ecsTaskExecutionRole dans les étapes suivantes.

  2. 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 seconde Resource 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.

  1. 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" } ] }
  2. 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.json

    Vous pouvez supprimer le fichier ecs-tasks-trust-policy.json.

  3. 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": "*" } ] }
  4. 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.json

    Vous 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.

  1. 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" }
  2. 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.

  1. 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.

  2. 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éseau awsvpc.

    <powershell> [Environment]::SetEnvironmentVariable("ECS_GMSA_SUPPORTED", $TRUE, "Machine") Import-Module ECSTools Initialize-ECSAgent -Cluster windows-domainless-gmsa-cluster -EnableTaskIAMRole -AwsvpcBlockIMDS </powershell>
  3. 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.

  1. 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.

  2. 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.

  3. Vérifiez que la liste attributes contient un objet avec la clé appelée name et une valeur ecs.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.

  1. 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.

  2. 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.

  1. 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.

  2. 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.

  1. 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
  2. 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
  3. 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 --key ecs-domainless-gmsa-credspec/gmsa-cred-spec.json
  4. 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
  5. 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.

    1. 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
    2. Supprimez la définition de tâche.

      $ aws ecs delete-task-definitions --task-definition windows-gmsa-domainless-task:1
  6. (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 la stoppedReason. 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 le site 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.