Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo di contenitori Amazon ECS Windows con sistema domainless gMSA utilizzando il AWS CLI
Il tutorial seguente mostra come creare un'attività Amazon ECS che esegue un container Windows con credenziali per accedere ad Active Directory con la AWS CLI. Utilizzando domainless gMSA, l'istanza del contenitore non è aggiunta al dominio, le altre applicazioni sull'istanza non possono utilizzare le credenziali per accedere al dominio e le attività che si uniscono a domini diversi possono essere eseguite sulla stessa istanza.
Argomenti
Fase 1: Creare e configurare gMSA account su Active Directory Domain Services (AD DS)
Passaggio 3: Modifica il tuo CredSpec JSON da includere senza dominio gMSA Informazioni
Fase 6: creazione di un ruolo IAM per le istanze di container
Fase 7: creazione di un ruolo di esecuzione dell'attività personalizzata
Fase 8: creazione di un ruolo dell'attività per Amazon ECS Exec
Passaggio 9: Registrare una definizione di attività che utilizzi la modalità domainless gMSA
Fase 10: registrazione di un'istanza di container Windows nel cluster
Passaggio 13: verifica che il contenitore abbia gMSA credenziali
Eseguire il debug di Amazon ECS senza dominio gMSA per contenitori Windows
Prerequisiti
Questo tutorial presuppone che siano stati soddisfatti i prerequisiti seguenti:
-
Hai completato le fasi descritte in Configurazione per l'uso di Amazon ECS.
-
Il tuo AWS utente dispone delle autorizzazioni richieste specificate nell'esempio di Amazon ECS_ FullAccess policy IAM.
-
La versione più recente di AWS CLI è installata e configurata. Per ulteriori informazioni sull'installazione o l'aggiornamento di AWS CLI, vedere Installazione di. AWS Command Line Interface
-
Configura un dominio Active Directory con le risorse a cui desideri che i tuoi container accedano. Amazon ECS supporta le configurazioni seguenti:
-
Un AWS Directory Service Active Directory. AWS Directory Service è un Active Directory AWS gestito ospitato su Amazon EC2. Per ulteriori informazioni, vedere Guida introduttiva a AWS Managed Microsoft AD nella Guida all'AWS Directory Service amministrazione.
-
Una Active Directory on-premise. Devi assicurarti che l'istanza di container Linux di Amazon ECS possa essere aggiunta al dominio. Per ulteriori informazioni, consulta AWS Direct Connect.
-
-
Disponi di un VPC e delle sottoreti in grado di risolvere il nome di dominio Active Directory.
-
Hai scelto tra senza dominio gMSAe unendo ogni istanza a un singolo dominio. Utilizzando domainless gMSA, l'istanza del contenitore non è aggiunta al dominio, le altre applicazioni sull'istanza non possono utilizzare le credenziali per accedere al dominio e le attività che si uniscono a domini diversi possono essere eseguite sulla stessa istanza.
Quindi, scegli l'archiviazione dei dati per CredSpec e, facoltativamente, per le credenziali utente di Active Directory per la modalità domainless gMSA.
Amazon ECS utilizza un file di specifiche delle credenziali di Active Directory (CredSpec). Questo file contiene gMSA metadati utilizzati per propagare il gMSA contesto dell'account nel contenitore. Tu generi il CredSpec file e poi lo archivia in uno dei CredSpec opzioni di archiviazione nella tabella seguente, specifiche del sistema operativo delle istanze del contenitore. Per utilizzare il metodo senza dominio, è disponibile una sezione facoltativa in CredSpec il file può specificare le credenziali in uno dei domainless user credentialsopzioni di archiviazione nella tabella seguente, specifiche del sistema operativo delle istanze del contenitore.
Posizione di archiviazione Linux Windows Amazon Simple Storage Service CredSpec CredSpec AWS Secrets Manager credenziali utente senza dominio credenziali utente senza dominio Amazon EC2 Systems Manager Parameter Store CredSpec CredSpec, credenziali utente senza dominio File locale N/D CredSpec -
(Facoltativo) AWS CloudShell è uno strumento che offre ai clienti una riga di comando senza la necessità di creare una propria EC2 istanza. Per ulteriori informazioni, consulta Cos'è AWS CloudShell? nella Guida AWS CloudShell per l'utente.
Fase 1: Creare e configurare gMSA account su Active Directory Domain Services (AD DS)
Creare e configurare un gMSA account nel dominio Active Directory.
-
Genera una chiave principale del servizio di distribuzione delle chiavi
Nota
Se lo stai utilizzando AWS Directory Service, puoi saltare questo passaggio.
La chiave principale di KDS e gMSA le autorizzazioni sono configurate con Microsoft AD AWS gestito.
Se non hai già creato un gMSA Account di servizio nel tuo dominio, devi prima generare una chiave radice del Key Distribution Service (KDS). Il KDS è responsabile della creazione, della rotazione e del rilascio di gMSA password per gli host autorizzati. Quando è
ccg.exe
necessario recuperare gMSA credenziali, contatta KDS per recuperare la password corrente.Per verificare se la chiave radice KDS è già stata creata, esegui il seguente PowerShell cmdlet con privilegi di amministratore di dominio su un controller di dominio utilizzando il modulo.
ActiveDirectory
PowerShell Per ulteriori informazioni sul modulo, vedere ActiveDirectory Modulenel sito Web Microsoft Learn. PS C:\>
Get-KdsRootKey
Se il comando restituisce un ID chiave, puoi ignorare il resto della procedura. In caso contrario, crea la chiave principale KDS eseguendo il comando seguente:
PS C:\>
Add-KdsRootKey -EffectiveImmediately
Sebbene l'argomento
EffectiveImmediately
del comando implichi l'efficacia immediata della chiave, devi attendere 10 ore prima che la chiave principale KDS venga replicata e sia disponibile per l'uso su tutti i controller di dominio. -
Crea il gMSA account
Per creare il gMSA account e consentire
ccg.exe
loro di recuperare il gMSA password, esegui PowerShell i seguenti comandi da un server o client Windows con accesso al dominio. SostituisciloExampleAccount
con il nome che desideri assegnare al tuo gMSA conto.-
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" -
Crea un utente con una password permanente senza scadenza. Queste credenziali vengono archiviate AWS Secrets Manager e utilizzate da ogni attività per entrare a far parte del 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
" -
Installa il PowerShell modulo per la creazione CredSpec oggetti in Active Directory e visualizza il CredSpec JSON.
PS C:\>
Install-PackageProvider -Name NuGet -Force
PS C:\>
Install-Module CredentialSpec
-
PS C:\>
New-CredentialSpec -AccountName
ExampleAccount
-
-
Copia l'output JSON del comando precedente in un file denominato
gmsa-cred-spec.json
. Questa è la CredSpec file. che viene utilizzato nella fase 3, Passaggio 3: Modifica il tuo CredSpec JSON da includere senza dominio gMSA Informazioni.
Fase 2: caricamento delle credenziali in Secrets Manager
Copia le credenziali di Active Directory in un sistema di archiviazione sicuro delle credenziali, in modo che ogni attività possa recuperarle. Questa è la versione senza dominio gMSA metodo. Utilizzando domainless gMSA, l'istanza del contenitore non è aggiunta al dominio, le altre applicazioni sull'istanza non possono utilizzare le credenziali per accedere al dominio e le attività che si uniscono a domini diversi possono essere eseguite sulla stessa istanza.
Questo passaggio utilizza il. AWS CLI Puoi eseguire questi comandi in AWS CloudShell nella shell (interprete di comandi) predefinita, ovvero bash
.
-
Esegui il AWS CLI comando seguente e sostituisci il nome utente, la password e il nome di dominio in modo che corrispondano al tuo ambiente. Mantieni l'ARN del segreto da utilizzare nella fase successiva, Passaggio 3: Modifica il tuo CredSpec JSON da includere senza dominio gMSA Informazioni
Il comando seguente utilizza i caratteri di continuazione (barra rovesciata) utilizzati da
sh
e dalle shell compatibili. Questo comando non è compatibile con PowerShell. È necessario modificare il comando con cui utilizzarlo PowerShell.$
aws secretsmanager create-secret \ --name
gmsa-plugin-input
\ --description "Amazon ECS - gMSA Portable Identity.
" \ --secret-string "{\"username\":\"ExampleAccount
\",\"password\":\"Test123
\",\"domainName\":\"contoso.com
\"}"
Passaggio 3: Modifica il tuo CredSpec JSON da includere senza dominio gMSA Informazioni
Prima di caricare il CredSpec a una delle opzioni di archiviazione, aggiungi informazioni al CredSpec con l'ARN del segreto in Secrets Manager del passaggio precedente. Per ulteriori informazioni, vedi lo use case Additional Credential Spec Configuration for non-domain-joined Container Host nel
-
Aggiungi le seguenti informazioni al CredSpec file all'interno di
ActiveDirectoryConfig
. Sostituisci l'ARN con il segreto in Secrets Manager del passaggio precedente.Tieni presente che il valore
PluginGUID
deve corrispondere al GUID nel seguente frammento di codice esemplificativo ed è obbligatorio."HostAccountConfig": { "PortableCcgVersion": "1", "PluginGUID": "{859E1386-BDB4-49E8-85C7-3070B13920E1}", "PluginInput": "{\"credentialArn\": \"arn:aws:secretsmanager:
aws-region
:111122223333:secret:gmsa-plugin-input
\"}" }Puoi anche usare un segreto nell'archivio parametri SSM con l'ARN in questo formato:
\"arn:aws:ssm:
.aws-region
:111122223333:parameter/gmsa-plugin-input
\" -
Dopo aver modificato il CredSpec il file dovrebbe essere simile al seguente esempio:
{ "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
\"}" } } }
Fase 4: Caricare CredSpec su Amazon S3
Questo passaggio utilizza il. AWS CLI Puoi eseguire questi comandi in AWS CloudShell nella shell (interprete di comandi) predefinita, ovvero bash
.
-
Copia il CredSpec file nel computer o nell'ambiente in cui si eseguono AWS CLI i comandi.
-
Eseguite il AWS CLI comando seguente per caricare il CredSpec su Amazon S3. Sostituisci
MyBucket
con il nome del bucket Amazon S3. Puoi archiviare il file come oggetto in qualsiasi bucket e posizione, ma devi consentire l'accesso a tale bucket e tale posizione nella policy associata al ruolo di esecuzione dell'attività.Il comando seguente utilizza i caratteri di continuazione (barra rovesciata) utilizzati da
sh
e dalle shell compatibili. Questo comando non è compatibile con PowerShell. È necessario modificare il comando con cui utilizzarlo PowerShell.$
aws s3 cp gmsa-cred-spec.json \ s3://
MyBucket/ecs-domainless-gmsa-credspec
Fase 5: creazione di un cluster Amazon ECS (facoltativo)
Per impostazione predefinita, l'account dispone di un cluster Amazon ECS denominato default
. Questo cluster viene utilizzato per impostazione predefinita in AWS CLI SDKs, e AWS CloudFormation. Puoi utilizzare cluster aggiuntivi per raggruppare e organizzare le attività e l'infrastruttura e assegnare impostazioni predefinite per alcune configurazioni.
È possibile creare un cluster da AWS Management Console AWS CLI, SDKs, o AWS CloudFormation. Le impostazioni e la configurazione nel cluster non influiscono gMSA.
Questo passaggio utilizza il AWS CLI. Puoi eseguire questi comandi in AWS CloudShell nella shell (interprete di comandi) predefinita, ovvero bash
.
$
aws ecs create-cluster --cluster-name windows-domainless-gmsa-cluster
Importante
Se vuoi creare un cluster personalizzato, devi specificare --cluster
clusterName
per ogni comando che prevedi di usare con tale cluster.
Fase 6: creazione di un ruolo IAM per le istanze di container
Un'istanza container è un computer host per eseguire contenitori in attività ECS, ad esempio EC2 istanze Amazon. Ogni istanza di container viene registrata in un cluster Amazon ECS. Prima di avviare EC2 le istanze Amazon e registrarle in un cluster, devi creare un ruolo IAM da utilizzare per le istanze di container.
Per creare il ruolo dell'istanza di container, consulta Ruolo IAM delle istanze di container Amazon ECS. Il ruolo ecsInstanceRole
predefinito dispone di autorizzazioni sufficienti per completare questo tutorial.
Fase 7: creazione di un ruolo di esecuzione dell'attività personalizzata
Amazon ECS può utilizzare un ruolo IAM diverso per le autorizzazioni necessarie all'avvio di ogni attività, anziché il ruolo dell'istanza di container. Questo ruolo è il ruolo di esecuzione dell'attività. Ti consigliamo di creare un ruolo di esecuzione dell'attività con le sole autorizzazioni necessarie per l'esecuzione dell'attività da parte di ECS, note anche come autorizzazioni con privilegi minimi. Per ulteriori informazioni sul principio del privilegio minimo, consulta SEC03-BP02 Concessione dell'accesso con privilegio minimo nel Framework AWS Well-Architected.
-
Per creare un ruolo di esecuzione dell'attività, consulta Creazione del ruolo di esecuzione attività. Le autorizzazioni predefinite consentono all'istanza del contenitore di estrarre le immagini dei contenitori da Amazon Elastic Container Registry
stdout
estderr
dalle tue applicazioni per registrarle su Amazon CloudWatch Logs.Poiché il ruolo richiede autorizzazioni personalizzate per questo tutorial, puoi assegnare al ruolo un nome diverso da
ecsTaskExecutionRole
. Questo tutorial utilizzaecsTaskExecutionRole
nelle fasi successive. -
Aggiungi le seguenti autorizzazioni creando una policy personalizzata, una policy in linea che esiste solo per questo ruolo o una policy che puoi riutilizzare. Sostituisci l'ARN della
Resource
nella prima istruzione con il bucket e la posizione di Amazon S3 e la secondaResource
con l'ARN del segreto in Secrets Manager.Se esegui la crittografa del segreto in Secrets Manager con una chiave personalizzata, devi consentire anche
kms:Decrypt
per la chiave.Se al posto di Secrets Manager utilizzi l'archivio parametri SSM, devi consentire
ssm:GetParameter
per il parametro, anzichésecretsmanager: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
" } ] }
Fase 8: creazione di un ruolo dell'attività per Amazon ECS Exec
Questo tutorial utilizza Amazon ECS Exec per verificare la funzionalità eseguendo un comando all'interno di un'attività in esecuzione. Per utilizzare ECS Exec, è necessario attivare ECS Exec nel servizio o nell'attività. Inoltre, il ruolo dell'attività (non il ruolo di esecuzione dell'attività) deve disporre delle autorizzazioni ssmmessages
. Per informazioni sulla policy IAM richiesta, consulta Autorizzazioni ECS Exec.
Questo passaggio utilizza il. AWS CLI Puoi eseguire questi comandi in AWS CloudShell nella shell (interprete di comandi) predefinita, ovvero bash
.
Per creare un ruolo di attività utilizzando il AWS CLI, segui questi passaggi.
-
Crea un file denominato
ecs-tasks-trust-policy.json
con i seguenti contenuti:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Crea un ruolo IAM. Puoi sostituire il nome
ecs-exec-demo-task-role
ma mantenerlo per i passaggi successivi.Il comando seguente utilizza i caratteri di continuazione (barra rovesciata) utilizzati da
sh
e dalle shell compatibili. Questo comando non è compatibile con PowerShell. È necessario modificare il comando con cui utilizzarlo PowerShell.$
aws iam create-role --role-name
ecs-exec-demo-task-role
\ --assume-role-policy-document file://ecs-tasks-trust-policy.jsonPuoi eliminare il file
ecs-tasks-trust-policy.json
. -
Crea un file denominato
ecs-exec-demo-task-role-policy.json
con i seguenti contenuti:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }
-
Crea una policy IAM e collegala al ruolo della fase precedente.
Il comando seguente utilizza i caratteri di continuazione (barra rovesciata) utilizzati da
sh
e dalle shell compatibili. Questo comando non è compatibile con PowerShell. È necessario modificare il comando con cui utilizzarlo 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.jsonPuoi eliminare il file
ecs-exec-demo-task-role-policy.json
.
Passaggio 9: Registrare una definizione di attività che utilizzi la modalità domainless gMSA
Questo passaggio utilizza il. AWS CLI Puoi eseguire questi comandi in AWS CloudShell nella shell (interprete di comandi) predefinita, ovvero bash
.
-
Crea un file denominato
windows-gmsa-domainless-task-def.json
con i seguenti contenuti:{ "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" }
-
Registra la definizione di attività con il comando seguente:
Il comando seguente utilizza i caratteri di continuazione (barra rovesciata) utilizzati da
sh
e dalle shell compatibili. Questo comando non è compatibile con PowerShell. È necessario modificare il comando con cui utilizzarlo PowerShell.$
aws ecs register-task-definition \ --cli-input-json file://
windows-gmsa-domainless-task-def.json
Fase 10: registrazione di un'istanza di container Windows nel cluster
Avvia un'istanza Amazon EC2 Windows ed esegui l'agente contenitore ECS per registrarla come istanza di contenitore nel cluster. ECS esegue le attività sulle istanze di container registrate nel cluster in cui vengono avviate le attività.
-
Per avviare un'istanza Amazon EC2 Windows configurata per Amazon ECS in AWS Management Console, consultaAvvio di un'istanza di container Windows di Amazon ECS. Fermati alla fase relativa ai dati utente.
-
In gMSA, i dati utente devono impostare la variabile di ambiente
ECS_GMSA_SUPPORTED
prima di avviare l'agente contenitore ECS.Per ECS Exec, l'agente deve iniziare con l'argomento
-EnableTaskIAMRole
.Per proteggere il ruolo IAM dell'istanza impedendo alle attività di raggiungere il servizio web EC2 IMDS per recuperare le credenziali del ruolo, aggiungi l'argomento.
-AwsvpcBlockIMDS
Ciò si applica solo alle attività che utilizzano la modalità di reteawsvpc
.<powershell> [Environment]::SetEnvironmentVariable("ECS_GMSA_SUPPORTED", $TRUE, "Machine") Import-Module ECSTools Initialize-ECSAgent -Cluster
windows-domainless-gmsa-cluster
-EnableTaskIAMRole -AwsvpcBlockIMDS </powershell> -
Analizza un riepilogo della configurazione dell'istanza nel pannello Summary (Riepilogo) e, quando è tutto pronto, scegli Launch instance (Avvia istanza).
Fase 11: verifica dell'istanza di container
Puoi verificare la presenza di un'istanza di container nel cluster utilizzando la AWS Management Console. Tuttavia, gMSA necessita di funzionalità aggiuntive indicate come attributi. Questi attributi non sono visibili in AWS Management Console, quindi questo tutorial utilizza il AWS CLI.
Questo passaggio utilizza il AWS CLI. Puoi eseguire questi comandi in AWS CloudShell nella shell (interprete di comandi) predefinita, ovvero bash
.
-
Elenca le istanze di container nel cluster. Le istanze del contenitore hanno un ID diverso dall'ID dell' EC2 istanza.
$
aws ecs list-container-instances
Output:
{ "containerInstanceArns": [ "arn:aws:ecs:
aws-region
:111122223333:container-instance/default
/MyContainerInstanceID
" ] }Ad esempio,
526bd5d0ced448a788768334e79010fd
è un ID di istanza di container valido. -
Utilizza l'ID istanza di container della fase precedente per informazioni dettagliate sull'istanza di container. Sostituisci
MyContainerInstanceID
con l'ID.Il comando seguente utilizza i caratteri di continuazione (barra rovesciata) utilizzati da
sh
e dalle shell compatibili. Questo comando non è compatibile con PowerShell. È necessario modificare il comando con cui utilizzarlo PowerShell.$
aws ecs describe-container-instances \ ----container-instances MyContainerInstanceID
Nota che l'output è molto lungo.
-
Verifica che l'elenco
attributes
contenga un oggetto con la chiave denominataname
e un valoreecs.capability.gmsa-domainless
. Di seguito è mostrato un esempio dell'oggetto.Output:
{ "name": "ecs.capability.gmsa-domainless" }
Fase 12: esecuzione di un'attività di Windows
Esegui un'attività Amazon ECS. Se nel cluster è presente una sola istanza di container, puoi utilizzare run-task
. Se sono presenti molte istanze di container diverse, potrebbe essere più semplice utilizzare start-task
e specificare l'ID dell'istanza di container su cui eseguire l'attività piuttosto che aggiungere vincoli di posizionamento alla definizione di attività per controllare il tipo di istanza su cui eseguire l'attività.
Questo passaggio utilizza il AWS CLI. Puoi eseguire questi comandi in AWS CloudShell nella shell (interprete di comandi) predefinita, ovvero bash
.
-
Il comando seguente utilizza i caratteri di continuazione (barra rovesciata) utilizzati da
sh
e dalle shell compatibili. Questo comando non è compatibile con PowerShell. È necessario modificare il comando con cui utilizzarlo PowerShell.aws ecs run-task --task-definition windows-gmsa-domainless-task \ --enable-execute-command --cluster windows-domainless-gmsa-cluster
Prendi nota dell'ID attività restituito dal comando.
-
Esegui il comando seguente per verificare che l'attività sia stata avviata. Questo comando resta in attesa e non restituisce il prompt della shell (interprete di comandi) fino all'avvio dell'attività. Sostituisci
MyTaskID
con l'ID attività ottenuto nella fase precedente.$
aws ecs wait tasks-running --task MyTaskID
Passaggio 13: verifica che il contenitore abbia gMSA credenziali
Verifica che il contenitore dell'operazione abbia un Kerberos gettone. gMSA
Questo passaggio utilizza il AWS CLI. Puoi eseguire questi comandi in AWS CloudShell nella shell (interprete di comandi) predefinita, ovvero bash
.
-
Il comando seguente utilizza i caratteri di continuazione (barra rovesciata) utilizzati da
sh
e dalle shell compatibili. Questo comando non è compatibile con PowerShell. È necessario modificare il comando con cui utilizzarlo PowerShell.$
aws ecs execute-command \ --task MyTaskID \ --container windows_sample_app \ --interactive \ --command powershell.exe
L'output sarà un PowerShell prompt.
-
Esegui il seguente comando nel PowerShell terminale all'interno del contenitore.
PS C:\>
klist get ExampleAccount$
Tieni presente che il
Principal
presente nell'output è uguale a quello creato in precedenza.
Fase 14: pulizia
Una volta terminato questo tutorial, è necessario eliminare le risorse associate per evitare costi aggiuntivi per le risorse non utilizzate.
Questo passaggio utilizza il AWS CLI. Puoi eseguire questi comandi in AWS CloudShell nella shell (interprete di comandi) predefinita, ovvero bash
.
-
Interrompi l'attività. Sostituisci
MyTaskID
con l'ID attività della fase 12, Fase 12: esecuzione di un'attività di Windows.$
aws ecs stop-task --task
MyTaskID
-
Termina l' EC2 istanza Amazon. Successivamente, l'istanza di container nel cluster verrà eliminata automaticamente dopo un'ora.
Puoi trovare e terminare l'istanza utilizzando la EC2 console Amazon. o puoi eseguire il comando seguente. Per eseguire il comando, trova l'ID dell' EC2 istanza nell'output del
aws ecs describe-container-instances
comando del passaggio 1Fase 11: verifica dell'istanza di container. i-10a64379 è un esempio di ID di istanza. EC2$
aws ec2 terminate-instances --instance-ids
MyInstanceID
-
Elimina le foto o i video CredSpec file in Amazon S3. Sostituisci
MyBucket
con il nome del bucket Amazon S3.$
aws s3api delete-object --bucket
MyBucket
--keyecs-domainless-gmsa-credspec/gmsa-cred-spec.json
-
Elimina il segreto da Secrets Manager. Se invece hai utilizzato l'archivio parametri SSM, elimina il parametro.
Il comando seguente utilizza i caratteri di continuazione (barra rovesciata) utilizzati da
sh
e dalle shell compatibili. Questo comando non è compatibile con PowerShell. È necessario modificare il comando con cui utilizzarlo PowerShell.$
aws secretsmanager delete-secret --secret-id
gmsa-plugin-input
\ --force-delete-without-recovery -
Annulla la registrazione della definizione di attività ed eliminala. Dopo aver annullato la registrazione, la definizione di attività viene contrassegnata come inattiva, in modo che non possa essere utilizzata per avviare nuove attività. Puoi quindi eliminare la definizione di attività.
-
Annulla la registrazione della definizione di attività specificando la versione. ECS crea automaticamente delle versioni delle definizioni di attività, numerate a partire da 1. Fai riferimento alle versioni nello stesso formato delle etichette sulle immagini di container, ad esempio
:1
.$
aws ecs deregister-task-definition --task-definition
windows-gmsa-domainless-task:1
-
Elimina la definizione di attività.
$
aws ecs delete-task-definitions --task-definition
windows-gmsa-domainless-task:1
-
-
(Facoltativo) Elimina il cluster ECS, se ne hai creato uno.
$
aws ecs delete-cluster --cluster
windows-domainless-gmsa-cluster
Eseguire il debug di Amazon ECS senza dominio gMSA per contenitori Windows
- Stato dell'attività di Amazon ECS
-
ECS tenta di avviare esattamente un'attività una volta. Se un'attività presenza un problema, viene interrotta e impostata nello stato
STOPPED
. Esistono due tipi comuni di problemi relativi alle attività. Innanzitutto, le attività che non possono essere avviate. In secondo luogo, le attività in cui l'applicazione si è interrotta all'interno di uno dei container. Nel campo Motivo interrotto dell'attività AWS Management Console, esamina il motivo per cui l'attività è stata interrotta. Nella AWS CLI, descrivi l'attività e osserva il campostoppedReason
. Per i passaggi da seguire AWS CLI, consultaVisualizzazione degli errori delle attività interrotte da Amazon ECS. AWS Management Console - Eventi Windows
-
Eventi Windows per gMSA i contenitori in vengono registrati nel file di
Microsoft-Windows-Containers-CCG
registro e sono disponibili nel Visualizzatore eventi nella sezione Applicazioni e servizi inLogs\Microsoft\Windows\Containers-CCG\Admin
. Per ulteriori suggerimenti sul debug, consulta Risoluzione dei problemi relativi ai contenitori g MSAs for Windows sulsito Web Microsoft Learn. - Agente ECS gMSA plugin
-
Registrazione per gMSA il plug-in per l'agente ECS sull'istanza del contenitore Windows si trova nella seguente directory,.
C:/ProgramData/Amazon/gmsa-plugin/
Verifica all'interno del log se le credenziali utente senza dominio sono state scaricate dalla posizione di archiviazione, ad esempio Secrets Manager, e se il formato delle credenziali è stato letto correttamente.