將 Amazon ECS Windows 容器與無網域搭配使用 gMSA 使用 AWS CLI - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將 Amazon ECS Windows 容器與無網域搭配使用 gMSA 使用 AWS CLI

下列教學課程說明如何建立 Amazon ECS任務,該任務會執行具有憑證的 Windows 容器,以使用 存取 Active Directory AWS CLI。使用無網域 gMSA,容器執行個體不會加入網域,執行個體上的其他應用程式無法使用憑證來存取網域,而加入不同網域的任務可以在同一執行個體上執行。

必要條件

本教學課程假設已完成下列先決條件:

  • 已完成「設定 以使用 Amazon ECS」中的步驟。

  • 您的 AWS 使用者具有Amazon ECS_FullAccessIAM政策範例中指定的必要許可。

  • AWS CLI 已安裝並設定最新版本的 。如需安裝或升級 的詳細資訊 AWS CLI,請參閱安裝 AWS Command Line Interface

  • 您可以使用您希望容器存取的資源來設定 Active Directory 網域。Amazon ECS支援下列設定:

    • AWS Directory Service Active Directory. AWS Directory Service 是託管在 Amazon 上的 AWS 受管 Active DirectoryEC2。如需詳細資訊,請參閱 AWS Directory Service 管理指南 中的 AWS Managed Microsoft AD 入門

    • 內部部署 Active Directory。您必須確保 Amazon ECS Linux 容器執行個體可以加入網域。如需詳細資訊,請參閱AWS Direct Connect

  • 您有 VPC和 子網路可以解析 Active Directory 網域名稱。

  • 您在無網域之間選擇 gMSA 並將每個執行個體加入單一網域 。使用無網域 gMSA,容器執行個體不會加入網域,執行個體上的其他應用程式無法使用憑證來存取網域,而加入不同網域的任務可以在同一執行個體上執行。

    然後,選擇 的資料儲存體 CredSpec 以及針對無網域的 Active Directory 使用者憑證 gMSA.

    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:建立和設定 gMSA Active Directory Domain Services (AD DS) 上的 帳戶

建立和設定 gMSA Active Directory 網域上的 帳戶。

  1. 產生金鑰分佈服務根金鑰
    注意

    如果您使用的是 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根金鑰並可用於所有網域控制器。

  2. 建立 gMSA 帳戶

    若要建立 gMSA 帳戶,並允許 ccg.exe擷取 gMSA 密碼,從可存取網域的 Windows Server 或用戶端執行下列 PowerShell 命令。ExampleAccount 以您想要的 名稱取代 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. 建立一個具有不會過期的永久密碼的使用者。這些憑證會儲存在 中, AWS Secrets Manager 並由每個任務用來加入網域。

      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. 安裝要建立的 PowerShell 模組 CredSpec Active Directory 中的物件並輸出 CredSpec JSON.

      PS C:\> Install-PackageProvider -Name NuGet -Force
      PS C:\> Install-Module CredentialSpec
    7. PS C:\> New-CredentialSpec -AccountName ExampleAccount
  3. 將上一個命令的JSON輸出複製到名為 的檔案gmsa-cred-spec.json。這是 CredSpec file. 其在步驟 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 至其中一個儲存選項,將資訊新增至 CredSpec 在 Secrets Manager 中,使用上一個步驟中秘密ARN的 。如需詳細資訊,請參閱 Microsoft Learn 網站上的容器主機使用案例的其他憑證規格組態 non-domain-joined

  1. 將下列資訊新增至 CredSpec 檔案ActiveDirectoryConfig。將 取代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\"

  2. 在您修改 之後 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 中執行這些命令。

  1. 複製 CredSpec 檔案到您執行 AWS CLI 命令所在的電腦或環境。

  2. 執行下列 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叢集

根據預設,您的帳戶具有名為 的 Amazon ECS叢集default。預設情況下,此叢集用於 AWS CLI、 SDKs和 AWS CloudFormation。您可以使用其他叢集來分組和組織任務和基礎結構,並為某些組態指派預設值。

您可以從 AWS Management Console、SDKs、 AWS CLI或 建立叢集 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 Framework 中的 SEC03-BP02 授予最低權限存取權

  1. 若要建立任務執行角色,請參閱 建立任務執行 角色。預設許可允許容器執行個體從 Amazon Elastic Container Registry stdoutstderr應用程式提取容器映像,以記錄到 Amazon CloudWatch Logs。

    由於角色需要本教學課程的自訂許可,因此您可以為該角色指定與 ecsTaskExecutionRole 不同的名稱。本教學課程將在後續步驟中使用 ecsTaskExecutionRole

  2. 建立自訂原則 (僅存在於此角色的內嵌政策或可重複使用的政策),以新增下列許可。將第一個陳述式Resource中的 ARN的 取代為 Amazon S3 儲存貯體和位置,並將第二個取代Resource為 Secrets Manager 中秘密ARN的 。

    如果您使用自訂金鑰在 Secrets Manager 中加密密碼,則也必須允許金鑰使用 kms:Decrypt

    如果您使用 SSM Parameter Store 而非 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 執行許可

此步驟使用 AWS CLI。您可以在預設 Shell (即 bash) 的 AWS CloudShell 中執行這些命令。

若要使用 建立任務角色 AWS CLI,請遵循下列步驟。

  1. 建立稱為 ecs-tasks-trust-policy.json 的檔案,其中具有以下內容:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. 建立 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

  3. 建立稱為 ecs-exec-demo-task-role-policy.json 的檔案,其中具有以下內容:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }
  4. 建立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 中執行這些命令。

  1. 建立稱為 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" }
  2. 執行下列命令來註冊任務定義:

    以下命令使用由 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 在已註冊至任務啟動所在叢集的容器執行個體上執行任務。

  1. 若要啟動在 ECS中為 Amazon 設定的 Amazon EC2 Windows 執行個體 AWS Management Console,請參閱 啟動 Amazon ECS Windows 容器執行個體。在使用者資料的步驟停止。

  2. 用於 gMSA,使用者資料必須在啟動ECS容器代理程式ECS_GMSA_SUPPORTED之前設定環境變數。

    對於 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>
  3. 檢閱 Summary (摘要) 面板中執行個體組態的摘要,並在準備就緒時選擇 Launch instance (啟動執行個體)。

步驟 11:驗證容器執行個體

您可以使用 AWS Management Console驗證叢集中是否存在容器執行個體。不過,gMSA 需要額外以屬性 表示的功能。這些屬性不會顯示在 中 AWS Management Console,因此本教學課程會使用 AWS CLI。

此步驟使用 AWS CLI。您可以在預設 Shell (即 bash) 的 AWS CloudShell 中執行這些命令。

  1. 列出叢集中的容器執行個體。容器執行個體的 ID 與EC2執行個體的 ID 不同。

    $ aws ecs list-container-instances

    輸出:

    {
        "containerInstanceArns": [
            "arn:aws:ecs:aws-region:111122223333:container-instance/default/MyContainerInstanceID"
        ]
    }

    例如,526bd5d0ced448a788768334e79010fd 是有效的容器執行個體 ID。

  2. 使用上一個步驟中的容器執行個體 ID 來取得容器執行個體的詳細資訊。使用 ID 取代 MyContainerInstanceID

    以下命令使用由 sh 和相容 shell 所使用的反斜線接續字元。此命令與 不相容 PowerShell。您必須修改 命令,才能搭配 使用 PowerShell。

    $ aws ecs describe-container-instances \ ----container-instances MyContainerInstanceID

    請注意,輸出內容非常長。

  3. 驗證 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 中執行這些命令。

  1. 以下命令使用由 sh 和相容 shell 所使用的反斜線接續字元。此命令與 不相容 PowerShell。您必須修改 命令,才能搭配 使用 PowerShell。

    aws ecs run-task --task-definition windows-gmsa-domainless-task \ --enable-execute-command --cluster windows-domainless-gmsa-cluster

    請注意,任務 ID 是由命令傳回。

  2. 執行下列命令,以驗證任務已開始。這個命令會等待,直到任務開始時才傳回 Shell 提示字元。使用前一步驟中的任務 ID,取代 MyTaskID

    $ aws ecs wait tasks-running --task MyTaskID

步驟 13:確認容器具有 gMSA 登入資料

確認任務中的容器具有 Kerberos 權杖。gMSA

此步驟使用 AWS CLI。您可以在預設 Shell (即 bash) 的 AWS CloudShell 中執行這些命令。

  1. 以下命令使用由 sh 和相容 shell 所使用的反斜線接續字元。此命令與 不相容 PowerShell。您必須修改 命令,才能搭配 使用 PowerShell。

    $ aws ecs execute-command \ --task MyTaskID \ --container windows_sample_app \ --interactive \ --command powershell.exe

    輸出將是 PowerShell 提示。

  2. 在容器內的 PowerShell 終端機中執行下列命令。

    PS C:\> klist get ExampleAccount$

    在輸出中,請注意 Principal 是您先前所建立的項目。

步驟 14:清除

完成此教學課程時,建議您清除相關聯的資源,以免未使用的資源產生費用。

此步驟使用 AWS CLI。您可以在預設 Shell (即 bash) 的 AWS CloudShell 中執行這些命令。

  1. 停止任務。使用步驟 12 中的任務 ID 步驟 12:執行 Windows 任務 取代 MyTaskID

    $ aws ecs stop-task --task MyTaskID
  2. 終止 Amazon EC2執行個體。之後,叢集中的容器執行個體將會在一小時後自動刪除。

    您可以使用 Amazon EC2主控台尋找並終止執行個體。或者,您可以執行下列命令。若要執行 命令,請在步驟 1 的aws ecs describe-container-instances命令輸出中找到EC2執行個體 ID。i-10a64379 步驟 11:驗證容器執行個體是EC2執行個體 ID 的範例。

    $ aws ec2 terminate-instances --instance-ids MyInstanceID
  3. 刪除 CredSpec Amazon S3 中的 檔案。將 MyBucket 取代為您的 Amazon S3 儲存貯體的名稱。

    $ aws s3api delete-object --bucket MyBucket --key ecs-domainless-gmsa-credspec/gmsa-cred-spec.json
  4. 從 Secrets Manager 中刪除密碼。如果您改為使用SSM參數存放區,請刪除 參數。

    以下命令使用由 sh 和相容 shell 所使用的反斜線接續字元。此命令與 不相容 PowerShell。您必須修改 命令,才能搭配 使用 PowerShell。

    $ aws secretsmanager delete-secret --secret-id gmsa-plugin-input \ --force-delete-without-recovery
  5. 取消註冊並刪除任務定義。透過取消註冊任務定義,您可以將其標記為非作用中狀態,以便無法用於啟動新任務。然後,您可以刪除任務定義。

    1. 透過指定版本取消註冊任務定義。ECS 會自動產生任務定義的版本,編號從 1 開始。您引用的版本與容器映像上的標籤格式相同,例如 :1

      $ aws ecs deregister-task-definition --task-definition windows-gmsa-domainless-task:1
    2. 刪除任務定義。

      $ aws ecs delete-task-definitions --task-definition windows-gmsa-domainless-task:1
  6. (選用) 如果您建立ECS叢集,請刪除叢集。

    $ aws ecs delete-cluster --cluster windows-domainless-gmsa-cluster

除錯 Amazon 無ECS網域 gMSA 適用於 Windows 容器

Amazon ECS任務狀態

ECS 會嘗試只啟動任務一次。任何有問題的任務均會停止,並設定為狀態 STOPPED。任務有兩種常見的問題類型。首先是無法啟動的任務。其次是應用程式已在容器之一內停止的任務。在 中 AWS Management Console,查看任務的停止原因欄位,了解任務停止的原因。在 AWS CLI中,描述任務並查看 stoppedReason。如需 AWS Management Console 和 中的步驟 AWS CLI,請參閱 檢視 Amazon ECS已停止的任務錯誤

Windows 事件

的 Windows 事件 gMSA 容器中的 會記錄在Microsoft-Windows-Containers-CCG日誌檔案中,您可以在 中的應用程式和服務區段中的事件檢視器中找到 Logs\Microsoft\Windows\Containers-CCG\Admin。如需更多偵錯秘訣,請參閱 Microsoft Learn 網站上的 gMSAs Windows 容器疑難排解

ECS 客服人員 gMSA 外掛程式

記錄 gMSA Windows 容器執行個體上ECS代理程式的外掛程式位於下列目錄 中C:/ProgramData/Amazon/gmsa-plugin/。查看此日誌,查看是否已從儲存位置 (例如 Secrets Manager) 下載無網域使用者憑證,以及是否正確讀取憑證格式。