Amazon ECS叢集的執行期涵蓋範圍和疑難排解 - Amazon GuardDuty

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

Amazon ECS叢集的執行期涵蓋範圍和疑難排解

Amazon ECS叢集的執行期涵蓋範圍包括在 AWS Fargate 和 Amazon ECS容器執行個體 上執行的任務1

對於在 Fargate 上執行的 Amazon ECS叢集,執行期涵蓋範圍會在任務層級進行評估。ECS 叢集執行期涵蓋範圍包括在您為 Fargate 啟用執行期監控和自動代理程式組態後開始執行的 Fargate 任務 (ECS僅限 )。根據預設,Fargate 任務是不可變的。 GuardDuty 將無法安裝安全代理程式來監控已執行任務上的容器。若要包含這類 Fargate 任務,您必須停止並再次啟動任務。請務必檢查是否支援相關聯的服務。

如需 Amazon ECS容器的相關資訊,請參閱容量建立

檢閱涵蓋範圍統計資料

與您自己的帳戶或成員帳戶相關聯的 Amazon ECS 資源涵蓋範圍統計資料,是所選 中所有 Amazon ECS叢集中運作狀態良好的 Amazon ECS叢集的百分比 AWS 區域。這包括與 Fargate 和 Amazon EC2執行個體相關聯的 Amazon ECS叢集涵蓋範圍。可以用下列方程式將此表示為:

(運作狀態良好的叢集/所有叢集) * 100

考量事項

  • ECS 叢集的涵蓋範圍統計資料包括與該ECS叢集相關聯的 Fargate 任務或ECS容器執行個體的涵蓋範圍狀態。Fargate 任務的涵蓋範圍狀態包括處於執行狀態或最近完成執行的任務。

  • ECS叢集執行期涵蓋範圍索引標籤中,容器執行個體涵蓋範圍欄位會指出與 Amazon ECS叢集相關聯的容器執行個體涵蓋範圍狀態。

    如果您的 Amazon ECS叢集僅包含 Fargate 任務,則計數會顯示為 0/0

  • 如果您的 Amazon ECS叢集與沒有安全代理程式的 Amazon EC2執行個體相關聯,Amazon ECS叢集也會有運作狀態不佳的涵蓋範圍狀態。

    若要識別與疑難排解相關 Amazon EC2執行個體的涵蓋範圍問題,請參閱 對 Amazon EC2執行期涵蓋範圍問題進行疑難排解 的 Amazon EC2執行個體。

選擇其中一種存取方法來檢閱您帳戶的涵蓋範圍統計資料。

Console
  • 登入 AWS Management Console 並在 開啟 GuardDuty 主控台https://console.aws.amazon.com/guardduty/

  • 在導覽窗格中,選擇執行期監控

  • 選擇執行期涵蓋範圍索引標籤。

  • ECS叢集執行期涵蓋範圍索引標籤下,您可以檢視叢集清單資料表中可用之每個 Amazon ECS叢集的涵蓋範圍狀態彙總的涵蓋範圍統計資料。

    • 您可以依下列資料欄篩選叢集清單資料表:

      • 帳戶 ID

      • 叢集名稱

      • 代理程式管理類型

      • 涵蓋範圍狀態

  • 如果您的任何 Amazon ECS叢集的覆蓋狀態運作狀態不佳 問題欄會包含運作狀態不佳原因的其他資訊。

    如果您 Amazon ECS叢集與 Amazon EC2執行個體相關聯,請導覽至EC2執行個體執行期涵蓋範圍索引標籤,並依叢集名稱欄位篩選,以檢視相關聯的問題

API/CLI
  • ListCoverage API 使用您自己的有效偵測器 ID、目前區域和服務端點執行 。您可以使用此 篩選和排序執行個體清單API。

    • 您可以使用 CriterionKey 的下列選項之一變更範例 filter-criteria

      • ACCOUNT_ID

      • ECS_CLUSTER_NAME

      • COVERAGE_STATUS

      • MANAGEMENT_TYPE

    • 您可以使用下列選項變更 sort-criteria 中的範例 AttributeName

      • ACCOUNT_ID

      • COVERAGE_STATUS

      • ISSUE

      • ECS_CLUSTER_NAME

      • UPDATED_AT

        只有在相關聯的 Amazon ECS叢集中建立新任務,或對應的涵蓋範圍狀態變更時,才會更新 欄位。

    • 您可以變更 max-results (最多 50 個)。

    • 若要尋找detectorId您帳戶和目前區域的 ,請參閱https://console.aws.amazon.com/guardduty/主控台中的設定頁面,或執行 ListDetectors API.

    aws guardduty --region us-east-1 list-coverage --detector-id 12abc34d567e8fa901bc2d34e56789f0 --sort-criteria '{"AttributeName": "ECS_CLUSTER_NAME", "OrderBy": "DESC"}' --filter-criteria '{"FilterCriterion":[{"CriterionKey":"ACCOUNT_ID", "FilterCondition":{"EqualsValue":"111122223333"}}] }' --max-results 5
  • 執行 GetCoverageStatisticsAPI以擷取以 為基礎的涵蓋範圍彙總統計資料statisticsType

    • 您可以將範例 statisticsType 變更成下列選項之一:

      • COUNT_BY_COVERAGE_STATUS – 代表依涵蓋狀態彙總之ECS叢集的涵蓋範圍統計資料。

      • COUNT_BY_RESOURCE_TYPE – 根據清單中 AWS 的資源類型彙總的涵蓋範圍統計資料。

      • 您可以在命令中變更範例 filter-criteria。您可將下列選項用於 CriterionKey

        • ACCOUNT_ID

        • ECS_CLUSTER_NAME

        • COVERAGE_STATUS

        • MANAGEMENT_TYPE

        • INSTANCE_ID

    • 若要尋找detectorId您帳戶和目前區域的 ,請參閱https://console.aws.amazon.com/guardduty/主控台中的設定頁面,或執行 ListDetectors API.

    aws guardduty --region us-east-1 get-coverage-statistics --detector-id 12abc34d567e8fa901bc2d34e56789f0 --statistics-type COUNT_BY_COVERAGE_STATUS --filter-criteria '{"FilterCriterion":[{"CriterionKey":"ACCOUNT_ID", "FilterCondition":{"EqualsValue":"123456789012"}}] }'

如需涵蓋範圍問題的詳細資訊,請參閱 對 Amazon ECS-Fargate 執行期涵蓋範圍問題進行故障診斷

包含 EventBridge通知的涵蓋狀態變更

Amazon ECS叢集的涵蓋範圍狀態可能顯示為運作狀態不佳 。若要了解涵蓋範圍狀態何時變更,建議您定期監控涵蓋範圍狀態,並在狀態變成運作狀態不佳時進行故障診斷。或者,您可以建立 Amazon EventBridge 規則,以便在涵蓋狀態從運作狀態不佳變更為運作狀態或其他狀態時收到通知。根據預設, 會在您帳戶的EventBridge 匯流排中 GuardDuty 發佈此 。

範例通知結構描述

在 EventBridge 規則中,您可以使用預先定義的範例事件和事件模式來接收涵蓋範圍狀態通知。如需建立 EventBridge 規則的詳細資訊,請參閱 Amazon EventBridge 使用者指南 中的建立規則

此外,您可以使用下列範例通知結構描述來建立自訂事件模式。請務必替換您帳戶的值。若要在 Amazon ECS叢集的涵蓋範圍狀態從 變更為 Healthy 時收到通知Unhealthydetail-type應該是 GuardDuty Runtime Protection Unhealthy。 若要在涵蓋狀態從 變更為 Unhealthy 時收到通知Healthy,請將 的值取代detail-typeGuardDuty Runtime Protection Healthy.

{ "version": "0", "id": "event ID", "detail-type": "GuardDuty Runtime Protection Unhealthy", "source": "aws.guardduty", "account": "AWS 帳戶 ID", "time": "event timestamp (string)", "region": "AWS 區域", "resources": [ ], "detail": { "schemaVersion": "1.0", "resourceAccountId": "string", "currentStatus": "string", "previousStatus": "string", "resourceDetails": { "resourceType": "ECS", "ecsClusterDetails": { "clusterName":"", "fargateDetails":{ "issues":[], "managementType":"" }, "containerInstanceDetails":{ "coveredContainerInstances":int, "compatibleContainerInstances":int } } }, "issue": "string", "lastUpdatedAt": "timestamp" } }

對 Amazon ECS-Fargate 執行期涵蓋範圍問題進行故障診斷

如果您的 Amazon ECS叢集的涵蓋範圍狀態為運作狀態不佳 ,您可以在問題欄下檢視原因。

下表提供 Fargate (ECS僅限 Amazon) 問題的建議疑難排解步驟。如需 Amazon EC2執行個體涵蓋範圍問題的相關資訊,請參閱 Amazon EC2執行個體對 Amazon EC2執行期涵蓋範圍問題進行疑難排解的相關資訊。

問題類型 額外資訊 建議的疑難排解步驟

客服人員未報告

客服人員未在 中報告任務 TaskDefinition - 'TASK_DEFINITION'

驗證 Amazon ECS叢集任務的VPC端點是否已正確設定。如需詳細資訊,請參閱驗證VPC端點組態

如果您的組織具有服務控制政策 (SCP),請確認許可界限未限制guardduty:SendSecurityTelemetry許可。如需詳細資訊,請參閱驗證您的組織服務控制政策

VPC_ISSUE; for task in TaskDefinition - 'TASK_DEFINITION'

在其他資訊中檢視VPC問題詳細資訊。

客服人員已結束

ExitCode:EXIT_CODE適用於 中的任務 TaskDefinition - 'TASK_DEFINITION'

在額外資訊中檢視問題詳細資訊。

原因:REASON 對於 中的任務 TaskDefinition - 'TASK_DEFINITION'

ExitCode: EXIT_CODE具有原因:'EXIT_CODE' 適用於 中的任務 TaskDefinition - 'TASK_DEFINITION'

代理程式已結束:原因:CannotPullContainerError:已重試提取影像清單...

任務執行角色必須具有下列 Amazon Elastic Container Registry (Amazon ECR) 許可:

... "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", ...

如需詳細資訊,請參閱提供ECR許可和子網路詳細資訊

新增 Amazon ECR許可後,您必須重新啟動任務。

如果問題仍然存在,請參閱 我的 AWS Step Functions 工作流程意外失敗

VPC Endpoint Creation 失敗

啟用私有DNS需要將 enableDnsSupportenableDnsHostnames VPC 屬性都設為 true 才能 vpcId (服務:ECS,狀態碼:400,請求 ID:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111).

確定下列VPC屬性設定為 trueenableDnsSupportenableDnsHostnames。如需詳細資訊,請參閱 DNS 中的屬性VPC

如果您使用 的 Amazon VPC主控台https://console.aws.amazon.com/vpc/來建立 Amazon VPC,請務必同時選取啟用DNS主機名稱啟用DNS解析。如需詳細資訊,請參閱VPC組態選項

未佈建代理程式

SERVICE任務 (s) 的 不支援的叫用 TaskDefinition - 'TASK_DEFINITION'

此任務由不支援SERVICE的 調用。

不支援的CPU架構 'TYPE中的任務 ' for task(s) TaskDefinition - 'TASK_DEFINITION'

此任務正在不支援的CPU架構上執行。如需支援CPU架構的相關資訊,請參閱 驗證架構需求

TaskExecutionRole 從 遺失 TaskDefinition - 'TASK_DEFINITION'

ECS 任務執行角色遺失。如需提供任務執行角色和所需許可的相關資訊,請參閱 提供ECR許可和子網路詳細資訊

中的任務缺少網路組態 'CONFIGURATION_DETAILS' (') TaskDefinition - 'TASK_DEFINITION'

網路組態問題可能會因為缺少VPC組態,或缺少或空的子網路而出現。

驗證您的網路組態是否正確。如需詳細資訊,請參閱提供ECR許可和子網路詳細資訊

如需詳細資訊,請參閱 Amazon Elastic Container Service 開發人員指南 中的 Amazon ECS任務定義參數

其他

無法識別的問題,適用於 中的任務 TaskDefinition - 'TASK_DEFINITION'

使用下列問題來識別問題的根本原因:

  • 任務是否在您啟用執行期監控之前開始?

    在 Amazon 中ECS,任務是不可變的。若要評估執行中的 Fargate 任務的執行期行為,請確定已啟用執行期監控,然後重新啟動 的任務 GuardDuty 以新增容器邊車。

  • 此任務是否屬於您啟用執行期監控之前開始的服務部署?

    如果是,您可以使用更新服務 中的forceNewDeployment步驟,重新啟動服務或使用 更新服務

    您也可以使用 UpdateServiceAWS CLI

  • 任務是否在從執行期監控中排除ECS叢集後啟動?

    當您將預先定義的 GuardDuty 標籤從 GuardDutyManaged-true 變更為 GuardDutyManaged- 時false, GuardDuty 將不會收到ECS叢集的執行期事件。

  • 您的服務是否包含具有舊格式 的任務taskArn

    GuardDuty 執行期監控不支援舊格式為 的任務涵蓋範圍taskArn

    如需 Amazon ECS 資源的 Amazon Resource Names (ARNs) 相關資訊,請參閱 Amazon Resource Names (ARNs) 和 IDs