本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
gMSA 使用 搭配無網域使用 Amazon ECS Windows 容器 AWS CLI
以下教學課程示範如何建立一個執行 Windows 容器的 Amazon ECS 任務,此容器具有透過 AWS CLI存取 Active Directory 的憑證。使用無網域 gMSA 時,容器執行個體不會加入網域,執行個體上的其他應用程式無法使用憑證來存取網域,而加入不同網域的任務則可在相同的執行個體上執行。
主題
- 必要條件
- 步驟 1:在 Active Directory Domain Services (AD DS) 上建立和設定 gMSA 帳戶
- 步驟 2:將憑證上傳至 Secrets Manager
- 步驟 3:修改您的 CredSpec JSON 以包含無網域 gMSA 資訊
- 步驟 4:將 CredSpec 上傳至 Amazon S3
- 步驟 5:(選用) 建立 Amazon ECS 叢集
- 步驟 6:針對容器執行個體建立 IAM 角色
- 步驟 7:建立自訂任務執行角色
- 步驟 8:為 Amazon ECS Exec 建立任務角色
- 步驟 9:註冊使用無網域 gMSA 的任務定義
- 步驟 10:將 Windows 容器執行個體註冊至叢集
- 步驟 11:驗證容器執行個體
- 步驟 12:執行 Windows 任務
- 步驟 13:驗證容器具有 gMSA 憑證
- 步驟 14:清除
- 偵錯 Windows 容器的 Amazon ECS 無網域 gMSA
必要條件
本教學課程假設已完成下列先決條件:
-
已完成「設定以使用 Amazon ECS。」中的步驟。
-
您的 AWS 使用者具有 IAM AmazonECS_FullAccess 政策範例中指定的必要許可。
-
AWS CLI 已安裝並設定最新版本的 。如需安裝或升級 的詳細資訊 AWS CLI,請參閱安裝 AWS Command Line Interface。
-
您可以使用您希望容器存取的資源來設定 Active Directory 網域。Amazon ECS 支援下列設定:
-
AWS Directory Service Active Directory. AWS Directory Service 是託管在 Amazon EC2 上的 AWS 受管 Active Directory。如需詳細資訊,請參閱 AWS Directory Service 管理指南中的 AWS Managed Microsoft AD 入門。
-
內部部署 Active Directory。您必須確認 Amazon ECS Linux 容器執行個體可以加入網域。如需詳細資訊,請參閱AWS Direct Connect。
-
-
您擁有可以解析 Active Directory 網域的 VPC 和子網路。
-
您可以選擇無網域 gMSA 或將每個執行個體加入單一網域。使用無網域 gMSA 時,容器執行個體不會加入網域,執行個體上的其他應用程式無法使用憑證來存取網域,而加入不同網域的任務則可在相同的執行個體上執行。
然後,選擇 CredSpec 的資料儲存,也可以選擇無網域 gMSA 的 Active Directory 使用者憑證的資料儲存。
Amazon ECS 使用 Active Directory 憑證規格檔案 (CredSpec)。此檔案包含用於將 gMSA 帳戶內容傳播至容器的 gMSA 中繼資料。您會產生 CredSpec 檔案,然後將其儲存在下表中特定於容器執行個體的作業系統的 CredSpec 儲存選項之一。若要使用無網域方法,CredSpec 檔案中的選擇性區段可以在下表中的 domainless user credentials 儲存選項之一中指定憑證 (特定於容器執行個體的作業系統)。
儲存位置 Linux Windows Amazon Simple Storage Service CredSpec CredSpec AWS Secrets Manager 無網域使用者憑證 無網域使用者憑證 Amazon EC2 Systems Manager 參數存放區 CredSpec CredSpec,無網域使用者憑證 本機檔案 N/A CredSpec -
(選用) AWS CloudShell 是一種工具,可為客戶提供命令列,而不需要建立自己的 EC2 執行個體。如需詳細資訊,請參閱AWS CloudShell 《 使用者指南》中的什麼是 AWS CloudShell?。
步驟 1:在 Active Directory Domain Services (AD DS) 上建立和設定 gMSA 帳戶
在 Active Directory 網域上建立並設定 gMSA 帳戶。
-
產生金鑰分佈服務根金鑰
注意
如果您使用的是 AWS Directory Service,則可以略過此步驟。
KDS 根金鑰和 gMSA 許可是使用您 AWS 受管的 Microsoft AD 來設定。
如果您尚未在網域中建立 gMSA 服務帳戶,則必須先產生金鑰分佈服務 (KDS) 根金鑰。KDS 負責建立、輪換和向授權主機發佈 gMSA 密碼。當
ccg.exe
需要擷取 gMSA 憑證時,將會聯絡 KDS 以擷取目前密碼。若要檢查是否已建立 KDS 根金鑰,請使用
ActiveDirectory
PowerShell 模組,在網域控制器上以網域管理員權限執行下列 PowerShell cmdlet。如需有關此模組的詳細資訊,請參閱 Microsoft Learn 網站上的 ActiveDirectory 模組。 PS C:\>
Get-KdsRootKey
如果命令傳回金鑰 ID,您可以略過此步驟的其餘部分。否則,執行下列命令以建立 KDS 根金鑰:
PS C:\>
Add-KdsRootKey -EffectiveImmediately
儘管命令的引數
EffectiveImmediately
意味著金鑰會立即生效,但您需要等待 10 小時才能複製 KDS 根金鑰並可在所有網域控制器上使用。 -
建立 gMSA 帳戶
若要建立 gMSA 帳戶並允許
ccg.exe
擷取 gMSA 密碼,請從有權存取網域的 Windows 伺服器或用戶端執行下列 PowerShell 命令。將ExampleAccount
替換為您想要的 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" -
建立一個具有不會過期的永久密碼的使用者。這些登入資料會存放在 中, AWS Secrets Manager 並由每個任務用來加入網域。
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
" -
安裝用於在 Active Directory 中建立 CredSpec 物件的 PowerShell 模組並輸出 CredSpec JSON。
PS C:\>
Install-PackageProvider -Name NuGet -Force
PS C:\>
Install-Module CredentialSpec
-
PS C:\>
New-CredentialSpec -AccountName
ExampleAccount
-
-
將上一個命令的 JSON 輸出複製到名為
gmsa-cred-spec.json
的檔案中。這是 CredSpec 檔案。其在步驟 3 步驟 3:修改您的 CredSpec JSON 以包含無網域 gMSA 資訊 中使用。
步驟 2:將憑證上傳至 Secrets Manager
將 Active Directory 憑證複製至安全的憑證儲存系統中,以便每個任務都能擷取此憑證。這是無網域 gMSA 方法。使用無網域 gMSA 時,容器執行個體不會加入網域,執行個體上的其他應用程式無法使用憑證來存取網域,而加入不同網域的任務則可在相同的執行個體上執行。
此步驟使用 AWS CLI。您可以在預設 Shell (即 bash
) 的 AWS CloudShell 中執行這些命令。
-
執行下列 AWS CLI 命令並取代使用者名稱、密碼和網域名稱,以符合您的環境。保留密碼的 ARN 以在下一個步驟中使用,步驟 3:修改您的 CredSpec JSON 以包含無網域 gMSA 資訊
以下命令使用由
sh
和相容 shell 所使用的反斜線接續字元。此命令與 PowerShell 不相容。您必須修改命令才能將其與 PowerShell 搭配使用。$
aws secretsmanager create-secret \ --name
gmsa-plugin-input
\ --description "Amazon ECS - gMSA Portable Identity.
" \ --secret-string "{\"username\":\"ExampleAccount
\",\"password\":\"Test123
\",\"domainName\":\"contoso.com
\"}"
步驟 3:修改您的 CredSpec JSON 以包含無網域 gMSA 資訊
在將 CredSpec 上傳至其中一個儲存選項之前,請使用上一個步驟中 Secrets Manager 中密碼的 ARN 將資訊新增至 CredSpec。如需詳細資訊,請參閱 Microsoft Learn 網站上的未加入網域的容器主機使用案例的其他憑證規格組態
-
將下列資訊新增至
ActiveDirectoryConfig
內的 CredSpec 檔案。將 ARN 替換為上一個步驟 Secrets Manager 中的密碼。請注意,
PluginGUID
值必須與下列範例程式碼片段中的 GUID 相符,且為必要值。"HostAccountConfig": { "PortableCcgVersion": "1", "PluginGUID": "{859E1386-BDB4-49E8-85C7-3070B13920E1}", "PluginInput": "{\"credentialArn\": \"arn:aws:secretsmanager:
aws-region
:111122223333:secret:gmsa-plugin-input
\"}" }您也可以透過使用以下格式的 ARN,在 SSM 參數存放區中使用祕密:
\"arn:aws:ssm:
。aws-region
:111122223333:parameter/gmsa-plugin-input
\" -
修改 CredSpec 檔案之後,檔案應類似於以下範例:
{ "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
\"}" } } }
步驟 4:將 CredSpec 上傳至 Amazon S3
此步驟使用 AWS CLI。您可以在預設 Shell (即 bash
) 的 AWS CloudShell 中執行這些命令。
-
將 CredSpec 檔案複製至正在執行 AWS CLI 命令的電腦或環境中。
-
執行下列 AWS CLI 命令,將 CredSpec 上傳至 Amazon S3。將
MyBucket
取代為您的 Amazon S3 儲存貯體的名稱。您可以將檔案作為物件儲存在任何儲存貯體和位置,但必須在附加至任務執行角色的政策中允許存取該儲存貯體和位置。以下命令使用由
sh
和相容 shell 所使用的反斜線接續字元。此命令與 PowerShell 不相容。您必須修改命令才能將其與 PowerShell 搭配使用。$
aws s3 cp gmsa-cred-spec.json \ s3://
MyBucket/ecs-domainless-gmsa-credspec
步驟 5:(選用) 建立 Amazon ECS 叢集
預設情況下,您的帳戶會有一個名為 default
的 Amazon ECS 叢集。根據預設 AWS CLI,此叢集用於 、 SDKs和 AWS CloudFormation。您可以使用其他叢集來分組和組織任務和基礎結構,並為某些組態指派預設值。
您可以從 AWS Management Console、 AWS CLI SDKs或 建立叢集 AWS CloudFormation。叢集中的設定和組態不會影響 gMSA。
此步驟使用 AWS CLI。您可以在預設 Shell (即 bash
) 的 AWS CloudShell 中執行這些命令。
$
aws ecs create-cluster --cluster-name windows-domainless-gmsa-cluster
重要
如果您選擇建立自己的叢集,您必須在打算對該叢集使用的每個命令中指定 --cluster
clusterName
。
步驟 6:針對容器執行個體建立 IAM 角色
容器執行個體是在 ECS 任務中執行容器的主機電腦,例如 Amazon EC2 執行個體。每個容器執行個體都會註冊至 Amazon ECS 叢集。在您啟動 Amazon EC2 執行個體並將其註冊到叢集之前,您必須先為要使用的容器執行個體建立 IAM 角色。
若要建立容器執行個體角色,請參閱 Amazon ECS 容器執行個體 IAM 角色。預設值 ecsInstanceRole
具有足夠的許可來完成此教學課程。
步驟 7:建立自訂任務執行角色
Amazon ECS 可針對啟動每個任務所需的許可使用不同的 IAM 角色,而不是容器執行個體角色。此角色是任務執行角色。我們建議您建立僅具有 ECS 執行任務所需許可的任務執行角色,也稱為最低權限許可。如需有關最低權限原則的詳細資訊,請參閱《AWS Well-Architected 的架構》中的 SEC03-BP02 授予最低權限存取權。
-
若要建立任務執行角色,請參閱 建立任務執行 角色。預設許可允許容器執行個體從 Amazon Elastic Container Registry 中提取容器映像,並從應用程式中提取
stdout
和stderr
並記錄到 Amazon CloudWatch Logs 中。由於角色需要本教學課程的自訂許可,因此您可以為該角色指定與
ecsTaskExecutionRole
不同的名稱。本教學課程將在後續步驟中使用ecsTaskExecutionRole
。 -
建立自訂原則 (僅存在於此角色的內嵌政策或可重複使用的政策),以新增下列許可。將第一個陳述式中
Resource
的 ARN 替換為 Amazon S3 儲存貯體和位置,並將第二個Resource
替換為 Secrets Manager 中密碼的 ARN。如果您使用自訂金鑰在 Secrets Manager 中加密密碼,則也必須允許金鑰使用
kms:Decrypt
。如果您使用 SSM 參數存放區而不是 Secrets Manager,您必須允許參數使用
ssm:GetParameter
,而不是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
" } ] }
步驟 8:為 Amazon ECS Exec 建立任務角色
本教學課程使用 Amazon ECS Exec,透過在執行中的任務內執行命令來驗證功能。若要使用 ECS Exec,服務或任務必須開啟 ECS Exec,且任務角色 (但不是任務執行角色) 必須具有 ssmmessages
許可。如需了解所需的 IAM 政策,請參閱ECS Exec 許可。
此步驟使用 AWS CLI。您可以在預設 Shell (即 bash
) 的 AWS CloudShell 中執行這些命令。
若要使用 建立任務角色 AWS CLI,請遵循下列步驟。
-
建立稱為
ecs-tasks-trust-policy.json
的檔案,其中具有以下內容:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
建立 IAM 角色。您可以替換名稱
ecs-exec-demo-task-role
,但保留以下步驟的名稱。以下命令使用由
sh
和相容 shell 所使用的反斜線接續字元。此命令與 PowerShell 不相容。您必須修改命令才能將其與 PowerShell 搭配使用。$
aws iam create-role --role-name
ecs-exec-demo-task-role
\ --assume-role-policy-document file://ecs-tasks-trust-policy.json您可以刪除檔案
ecs-tasks-trust-policy.json
。 -
建立稱為
ecs-exec-demo-task-role-policy.json
的檔案,其中具有以下內容:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }
-
建立 IAM 政策並將其附加至上一個步驟中的角色。
以下命令使用由
sh
和相容 shell 所使用的反斜線接續字元。此命令與 PowerShell 不相容。您必須修改命令才能將其與 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您可以刪除檔案
ecs-exec-demo-task-role-policy.json
。
步驟 9:註冊使用無網域 gMSA 的任務定義
此步驟使用 AWS CLI。您可以在預設 Shell (即 bash
) 的 AWS CloudShell 中執行這些命令。
-
建立稱為
windows-gmsa-domainless-task-def.json
的檔案,其中具有以下內容:{ "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" }
-
執行下列命令來註冊任務定義:
以下命令使用由
sh
和相容 shell 所使用的反斜線接續字元。此命令與 PowerShell 不相容。您必須修改命令才能將其與 PowerShell 搭配使用。$
aws ecs register-task-definition \ --cli-input-json file://
windows-gmsa-domainless-task-def.json
步驟 10:將 Windows 容器執行個體註冊至叢集
啟動 Amazon EC2 Windows 執行個體並執行 ECS 容器代理程式,以將其註冊為叢集中的容器執行個體。ECS 會在已註冊至叢集 (任務在其中啟動) 的容器執行個體上執行任務。
-
若要啟動在 中為 Amazon ECS 設定的 Amazon EC2 Windows 執行個體 AWS Management Console,請參閱 啟動 Amazon ECS Windows 容器執行個體。在使用者資料的步驟停止。
-
若為 gMSA,使用者資料必須先設定環境變數
ECS_GMSA_SUPPORTED
,才能啟動 ECS 容器代理程式。對於 ECS Exec,代理程式必須以引數
-EnableTaskIAMRole
開頭。若要防止任務到達 EC2 IMDS Web 服務以擷取角色憑證,以保護執行個體 IAM 角色,請新增引數
-AwsvpcBlockIMDS
。這只適用於使用awsvpc
網路模式的任務。<powershell> [Environment]::SetEnvironmentVariable("ECS_GMSA_SUPPORTED", $TRUE, "Machine") Import-Module ECSTools Initialize-ECSAgent -Cluster
windows-domainless-gmsa-cluster
-EnableTaskIAMRole -AwsvpcBlockIMDS </powershell> -
檢閱 Summary (摘要) 面板中執行個體組態的摘要,並在準備就緒時選擇 Launch instance (啟動執行個體)。
步驟 11:驗證容器執行個體
您可以使用 AWS Management Console驗證叢集中是否存在容器執行個體。但是,gMSA 需要指示為屬性的其他功能。這些屬性不會顯示在 中 AWS Management Console,因此本教學課程會使用 AWS CLI。
此步驟使用 AWS CLI。您可以在預設 Shell (即 bash
) 的 AWS CloudShell 中執行這些命令。
-
列出叢集中的容器執行個體。容器執行個體的 ID 與 EC2 執行個體的 ID 不同。
$
aws ecs list-container-instances
輸出:
{ "containerInstanceArns": [ "arn:aws:ecs:
aws-region
:111122223333:container-instance/default
/MyContainerInstanceID
" ] }例如,
526bd5d0ced448a788768334e79010fd
是有效的容器執行個體 ID。 -
使用上一個步驟中的容器執行個體 ID 來取得容器執行個體的詳細資訊。使用 ID 取代
MyContainerInstanceID
。以下命令使用由
sh
和相容 shell 所使用的反斜線接續字元。此命令與 PowerShell 不相容。您必須修改命令才能將其與 PowerShell 搭配使用。$
aws ecs describe-container-instances \ ----container-instances MyContainerInstanceID
請注意,輸出內容非常長。
-
驗證
attributes
清單中是否存在一個索引鍵為name
且值為ecs.capability.gmsa-domainless
的物件。下列為物件的範例。輸出:
{ "name": "ecs.capability.gmsa-domainless" }
步驟 12:執行 Windows 任務
執行 Amazon ECS 任務。如果叢集中只有 1 個容器執行個體,您可以使用 run-task
。如果有許多不同的容器執行個體,則相較於將置放條件限制新增至任務定義,以控制要執行此任務的容器執行個體類型,使用 start-task
並指定要在其上執行任務的容器執行個體 ID 可能會更為容易。
此步驟使用 AWS CLI。您可以在預設 Shell (即 bash
) 的 AWS CloudShell 中執行這些命令。
-
以下命令使用由
sh
和相容 shell 所使用的反斜線接續字元。此命令與 PowerShell 不相容。您必須修改命令才能將其與 PowerShell 搭配使用。aws ecs run-task --task-definition windows-gmsa-domainless-task \ --enable-execute-command --cluster windows-domainless-gmsa-cluster
請注意,任務 ID 是由命令傳回。
-
執行下列命令,以驗證任務已開始。這個命令會等待,直到任務開始時才傳回 Shell 提示字元。使用前一步驟中的任務 ID,取代
MyTaskID
。$
aws ecs wait tasks-running --task MyTaskID
步驟 13:驗證容器具有 gMSA 憑證
驗證任務中的容器具有 Kerberos 權杖。gMSA
此步驟使用 AWS CLI。您可以在預設 Shell (即 bash
) 的 AWS CloudShell 中執行這些命令。
-
以下命令使用由
sh
和相容 shell 所使用的反斜線接續字元。此命令與 PowerShell 不相容。您必須修改命令才能將其與 PowerShell 搭配使用。$
aws ecs execute-command \ --task MyTaskID \ --container windows_sample_app \ --interactive \ --command powershell.exe
輸出將是 PowerShell 提示字元。
-
在容器內的 PowerShell 終端中執行以下命令。
PS C:\>
klist get ExampleAccount$
在輸出中,請注意
Principal
是您先前所建立的項目。
步驟 14:清除
完成此教學課程時,建議您清除相關聯的資源,以免未使用的資源產生費用。
此步驟使用 AWS CLI。您可以在預設 Shell (即 bash
) 的 AWS CloudShell 中執行這些命令。
-
停止任務。使用步驟 12 中的任務 ID 步驟 12:執行 Windows 任務 取代
MyTaskID
。$
aws ecs stop-task --task
MyTaskID
-
終止 Amazon EC2 執行個體。之後,叢集中的容器執行個體將會在一小時後自動刪除。
您可以使用 Amazon EC2 主控台來尋找和終止執行個體。或者,您可以執行下列命令。若要執行命令,請在步驟 1 步驟 11:驗證容器執行個體 的
aws ecs describe-container-instances
命令輸出中尋找 EC2 執行個體識別碼。i-10a64379 是 EC2 執行個體 ID 的範例。$
aws ec2 terminate-instances --instance-ids
MyInstanceID
-
刪除 Amazon S3 中的 CredSpec 檔案。將
MyBucket
取代為您的 Amazon S3 儲存貯體的名稱。$
aws s3api delete-object --bucket
MyBucket
--keyecs-domainless-gmsa-credspec/gmsa-cred-spec.json
-
從 Secrets Manager 中刪除密碼。如果您改用 SSM 參數存放區,請刪除參數。
以下命令使用由
sh
和相容 shell 所使用的反斜線接續字元。此命令與 PowerShell 不相容。您必須修改命令才能將其與 PowerShell 搭配使用。$
aws secretsmanager delete-secret --secret-id
gmsa-plugin-input
\ --force-delete-without-recovery -
取消註冊並刪除任務定義。透過取消註冊任務定義,您可以將其標記為非作用中狀態,以便無法用於啟動新任務。然後,您可以刪除任務定義。
-
透過指定版本取消註冊任務定義。ECS 會自動建立任務定義的版本,編號從 1 開始。您引用的版本與容器映像上的標籤格式相同,例如
:1
。$
aws ecs deregister-task-definition --task-definition
windows-gmsa-domainless-task:1
-
刪除任務定義。
$
aws ecs delete-task-definitions --task-definition
windows-gmsa-domainless-task:1
-
-
(選用) 如果您已建立叢集,請刪除 ECS 叢集。
$
aws ecs delete-cluster --cluster
windows-domainless-gmsa-cluster
偵錯 Windows 容器的 Amazon ECS 無網域 gMSA
- Amazon ECS 任務狀態
-
ECS 會嘗試僅啟動一次任務。任何有問題的任務均會停止,並設定為狀態
STOPPED
。任務有兩種常見的問題類型。首先是無法啟動的任務。其次是應用程式已在容器之一內停止的任務。在 中 AWS Management Console,查看任務的已停止原因欄位,了解任務停止的原因。在 AWS CLI中,描述任務並查看stoppedReason
。如需 AWS Management Console 和 中的步驟 AWS CLI,請參閱 檢視 Amazon ECS 已停止的任務錯誤。 - Windows 事件
-
容器中 gMSA 的 Windows 事件記錄在
Microsoft-Windows-Containers-CCG
日誌中,您可以在Logs\Microsoft\Windows\Containers-CCG\Admin
「應用程式和服務」區段的「事件檢視器」中找到。如需詳細的偵錯提示,請參閱 Microsoft Learn 網站上的 Windows 容器 gMSA 故障排除。 - ECS 代理程式 gMSA 外掛程式
-
Windows 容器執行個體上 ECS 代理程式的 gMSA 外掛程式記錄位於下列目錄
C:/ProgramData/Amazon/gmsa-plugin/
中。查看此日誌,查看是否已從儲存位置 (例如 Secrets Manager) 下載無網域使用者憑證,以及是否正確讀取憑證格式。