

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

# Amazon ECS 叢集的執行期涵蓋範圍和疑難排解
<a name="gdu-assess-coverage-ecs"></a>

Amazon ECS 叢集的執行期涵蓋範圍包括在 AWS Fargate 和 Amazon ECS 容器執行個體上執行的任務[1](#ecs-container-instance)。

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

如需 Amazon ECS 容器的相關資訊，請參閱[容量建立](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-capacity.html)。

**Topics**
+ [檢閱涵蓋範圍統計資料](#ecs-review-coverage-statistics-ecs-runtime-monitoring)
+ [使用 EventBridge 通知變更涵蓋範圍狀態](#ecs-runtime-monitoring-coverage-status-change)
+ [對 Amazon ECS-Fargate 執行期涵蓋範圍問題進行故障診斷](#ecs-runtime-monitoring-coverage-issues-troubleshoot)

## 檢閱涵蓋範圍統計資料
<a name="ecs-review-coverage-statistics-ecs-runtime-monitoring"></a>

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

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

### 考量事項
<a name="considerations-ecs-coverage-review-stats"></a>
+ ECS 叢集的涵蓋範圍統計資料包括 Fargate 任務或與 ECS 叢集相關聯的 ECS 容器執行個體涵蓋範圍狀態。Fargate 任務的涵蓋範圍狀態包括處於執行中狀態或最近完成執行的任務。
+ 在 **ECS 叢集執行時間涵蓋**範圍索引標籤中，**容器執行個體涵蓋**範圍欄位指出與您的 Amazon ECS 叢集相關聯的 Amazon EC2 容器執行個體涵蓋範圍狀態。

  如果您的 Amazon ECS 叢集僅執行 Fargate 啟動類型，則此欄位會顯示破折號 (-)，表示計數不適用。僅限 Fargate 的叢集沒有要涵蓋的 Amazon EC2 容器執行個體。
+ 如果您的 Amazon ECS 叢集與沒有安全代理程式的 Amazon EC2 執行個體相關聯，Amazon ECS 叢集也會有**狀況不良**的涵蓋範圍狀態。

  若要識別相關聯 Amazon EC2 執行個體的涵蓋範圍問題並進行疑難排解，請參閱 Amazon EC2 執行個體[對 Amazon EC2 執行期涵蓋範圍問題進行故障診斷](gdu-assess-coverage-ec2.md#ec2-runtime-monitoring-coverage-issues-troubleshoot)的 。

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

------
#### [ Console ]
+ 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/guardduty/](https://console.aws.amazon.com/guardduty/)：// 開啟 GuardDuty 主控台。
+ 在導覽窗格中，選擇**執行期監控**。
+ 選擇**執行期涵蓋**範圍索引標籤。
+ 在 **ECS 叢集執行時間涵蓋範圍**索引標籤下，您可以檢視叢集**清單**資料表中可用之每個 Amazon ECS 叢集涵蓋範圍狀態彙總的涵蓋範圍統計資料。
  + 您可以依下列資料欄篩選**叢集清單**資料表：
    + **帳戶 ID**
    + **叢集名稱**
    + **代理程式管理類型**
    + **涵蓋範圍狀態**
+ 如果您的任何 Amazon ECS 叢集的**涵蓋狀態**為**運作狀態不佳**，**問題**欄會包含**運作狀態不佳**原因的其他資訊。

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

------
#### [ API/CLI ]
+ 使用您自己的有效偵測器 ID、目前區域和服務端點執行 [ListCoverage](https://docs.aws.amazon.com/guardduty/latest/APIReference/API_ListCoverage.html) API。您可以使用此 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/](https://console.aws.amazon.com/guardduty/) 主控台中的**設定**頁面，或執行 [ListDetectors](https://docs.aws.amazon.com/guardduty/latest/APIReference/API_ListDetectors.html) 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}}
  ```
+ 執行 [GetCoverageStatistics](https://docs.aws.amazon.com/guardduty/latest/APIReference/API_GetCoverageStatistics.html) API，以根據 `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/](https://console.aws.amazon.com/guardduty/) 主控台中的**設定**頁面，或執行 [ListDetectors](https://docs.aws.amazon.com/guardduty/latest/APIReference/API_ListDetectors.html) 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 執行期涵蓋範圍問題進行故障診斷](#ecs-runtime-monitoring-coverage-issues-troubleshoot)。

## 使用 EventBridge 通知變更涵蓋範圍狀態
<a name="ecs-runtime-monitoring-coverage-status-change"></a>

Amazon ECS 叢集的涵蓋範圍狀態可能顯示為**運作狀態不佳**。若要了解涵蓋範圍狀態何時變更，建議您定期監控涵蓋範圍狀態，並在狀態變成**運作狀態不佳**時進行故障診斷。或者，您可以建立 Amazon EventBridge 規則，以在涵蓋範圍狀態從**運作狀態不佳**變更為**正常運作**或其他狀態時收到通知。GuardDuty 預設在您帳戶的[EventBridge 匯流排](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus.html)中發布此通知。

### 範例通知結構描述
<a name="ecs-gdu-coverage-status-eventbridge-schema"></a>

在 EventBridge 規則中，您可以使用預先定義的範例事件和事件模式來接收涵蓋範圍狀態通知。如需有關建立 EventBridge 規則的詳細資訊，請參閱《Amazon EventBridge 使用者指南》**中的[建立規則](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html#eb-gs-create-rule)。

此外，您可以使用下列範例通知結構描述來建立自訂事件模式。請務必替換您帳戶的值。若要在 Amazon ECS 叢集的涵蓋範圍狀態從 變更為 `Healthy` 時收到通知`Unhealthy`， `detail-type` 應該是 {{GuardDuty Runtime Protection Unhealthy}}。若要在涵蓋範圍狀態從 `Unhealthy` 變更成 `Healthy` 時收到通知，請使用 {{GuardDuty 執行期監控運作狀態不良}}取代 `detail-type` 的值。

```
{
  "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 執行期涵蓋範圍問題進行故障診斷
<a name="ecs-runtime-monitoring-coverage-issues-troubleshoot"></a>

如果 Amazon ECS 叢集的涵蓋範圍狀態為**狀況不良**，您可以在**問題**欄下檢視原因。

下表提供 Fargate （僅限 Amazon ECS) 問題的建議疑難排解步驟。如需 Amazon EC2 執行個體涵蓋範圍問題的資訊，請參閱 [對 Amazon EC2 執行期涵蓋範圍問題進行故障診斷](gdu-assess-coverage-ec2.md#ec2-runtime-monitoring-coverage-issues-troubleshoot) for Amazon EC2 執行個體。



- ** 客服人員未報告 **
  - **額外資訊:** 客服人員未報告 中的任務 `TaskDefinition - '{{TASK_DEFINITION}}'` / **建議的疑難排解步驟:** 驗證 Amazon ECS 叢集任務的 VPC 端點是否已正確設定。如需詳細資訊，請參閱[驗證 VPC 端點組態](validate-vpc-endpoint-config-runtime-monitoring.md)。<br />如果您的組織有服務控制政策 (SCP)，請驗證許可界限未限制`guardduty:SendSecurityTelemetry`許可。如需詳細資訊，請參閱[在多帳戶環境中驗證您的組織服務控制政策](prereq-runtime-monitoring-ecs-support.md#validate-organization-scp-ecs)。
  - **額外資訊:** `{{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`：：已重試提取映像資訊清單... / **建議的疑難排解步驟:** 在此案例中，GuardDuty 可能無法提取附屬容器映像。您的任務將繼續執行，但 GuardDuty 無法偵測潛在威脅。一次執行下列故障診斷步驟一，以檢查其是否有助於解決涵蓋範圍問題：+  **許可：**確保您的任務執行角色具有 中列出的必要 ECR 許可[許可需求](prereq-runtime-monitoring-ecs-support.md#ecs-runtime-permissions-requirements)。 <br />+  **網路連線：**確認您的 Fargate 任務可以透過公有網際網路存取或正確設定的 VPC 端點到達 ECR，如 中所述[網路連線需求](prereq-runtime-monitoring-ecs-support.md#ecs-runtime-network-requirements)。 <br />+  **安全群組組態：**檢查您的安全群組是否允許傳出存取連接埠 443 上的 S3 受管字首清單，如中所述[安全群組組態](prereq-runtime-monitoring-ecs-support.md#ecs-runtime-security-group-requirements)。 <br />+  在叢集的 區域中執行 [AWSSupport-TroubleshootECSTaskFailedToStart](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-aws-troubleshootecstaskfailedtostart.html) Runbook，以識別特定問題。 <br />+  檢視任務日誌以取得錯誤訊息。如需如何執行此操作的詳細資訊，請參閱[《Amazon Elastic Container Service 開發人員指南》中的檢視 Amazon ECS 容器代理程式日誌](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/logs.html)。 ** <br />如需常見錯誤和故障診斷，請參閱《[Amazon Elastic Container Service 開發人員指南》中的 Amazon ECS 故障診斷](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/troubleshooting.html)。 ** <br />這三個元件 （許可、網路連線和安全群組組態） 是獨立的，但對於從 Amazon ECR 成功下載 GuardDuty 容器映像都是必要的。<br />如果問題仍然存在，請參閱 [我的 AWS Step Functions 工作流程意外失敗](troubleshooting-guardduty-runtime-monitoring.md#runtime-ecs-step-function-failure)。

- ** VPC 端點建立失敗 **
  - **額外資訊:** 啟用私有 DNS 需要將 `true` {{vpcId}} 的 `enableDnsSupport`和 `enableDnsHostnames` VPC 屬性都設為 （服務：EC2、狀態碼：400、請求 ID：{{a1b2c3d4-5678-90ab-cdef-EXAMPLE11111}})。
  - **建議的疑難排解步驟:** 請確保將下列 VPC 屬性設定為 `true`：`enableDnsSupport` 和 `enableDnsHostnames`。如需詳細資訊，請參閱 [VPC 中的 DNS 屬性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support)。<br />如果您造訪 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 以使用 Amazon VPC 主控台建立 Amazon VPC，請務必選擇**啟用 DNS 主機名稱**和**啟用 DNS 解析**。如需詳細資訊，請參閱 [VPC 組態選項](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html#create-vpc-options)。

- **未佈建代理程式**
  - **額外資訊:** 中 `{{SERVICE}}` task(s) 的 不支援叫用 `TaskDefinition - '{{TASK_DEFINITION}}'` / **建議的疑難排解步驟:** 不支援`{{SERVICE}}`的 調用此任務。
  - **額外資訊:** 中的任務不支援的 CPU 架構 (「{{TYPE}}」) `TaskDefinition - '{{TASK_DEFINITION}}'` / **建議的疑難排解步驟:** 此任務正在不支援的 CPU 架構上執行。如需支援的 CPU 架構的相關資訊，請參閱 [驗證架構需求](prereq-runtime-monitoring-ecs-support.md#validating-architecture-req-ecs)。
  - **額外資訊:** `TaskExecutionRole` 從 缺少 `TaskDefinition - '{{TASK_DEFINITION}}'` / **建議的疑難排解步驟:** ECS 任務執行角色遺失。如需提供任務執行角色和必要許可的資訊，請參閱 [容器映像存取的先決條件](prereq-runtime-monitoring-ecs-support.md#before-enable-runtime-monitoring-ecs)。
  - **額外資訊:** 中的 task (s) 缺少網路組態 '`{{CONFIGURATION_DETAILS}}`' `TaskDefinition - '{{TASK_DEFINITION}}'`  / **建議的疑難排解步驟:** 網路組態問題可能會因為缺少 VPC 組態，或子網路遺失或空白而出現。<br />驗證您的網路組態是否正確。如需詳細資訊，請參閱[容器映像存取的先決條件](prereq-runtime-monitoring-ecs-support.md#before-enable-runtime-monitoring-ecs)。<br />如需詳細資訊，請參閱《[Amazon Elastic Container Service 開發人員指南》中的 Amazon ECS 任務定義參數](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html)。 **
  - **額外資訊:** 叢集具有排除標籤時啟動的任務會從執行期監控中排除。受影響的任務 ID (s)：'`{{TASK_ID}}` / **建議的疑難排解步驟:** 當您將預先定義的 GuardDuty 標籤從 `GuardDutyManaged`-`true` 變更為 `GuardDutyManaged`- 時`false`，GuardDuty 將不會收到此 Amazon ECS 叢集的執行期事件。<br />將標籤更新為 `GuardDutyManaged`-`true`，然後重新啟動任務。
  - **額外資訊:** 當叢集具有排除標籤時部署的服務會從執行期監控中排除。受影響的服務名稱 (s)：'{{`SERVICE_NAME`}}' / **建議的疑難排解步驟:** 使用排除標籤 `GuardDutyManaged`- 部署的服務時`false`，GuardDuty 將不會收到此 Amazon ECS 叢集的執行期事件。<br />將標籤更新為 `GuardDutyManaged`-`true`，然後重新部署服務。
  - **額外資訊:** 不涵蓋啟用自動代理程式組態之前啟動的任務。受影響的任務 ID (s)：'{{`TASK_ID`}}' / **建議的疑難排解步驟:** 當叢集包含啟用 Amazon ECS 自動化代理程式組態之前啟動的任務時，GuardDuty 將無法保護此項目。重新啟動任務，讓 GuardDuty 監控任務。
  - **額外資訊:** 不涵蓋啟用自動化代理程式組態之前部署的服務。受影響的服務名稱 ()：'{{`SERVICE_NAME`}}' / **建議的疑難排解步驟:** 在為 Amazon ECS 啟用自動化代理程式組態之前部署服務時，GuardDuty 將不會收到 ECS 叢集的執行期事件。
  - **額外資訊:** 服務「{{`SERVICE_NAME`}}」需要新的部署才能修正/疑難排解。參考文件 （受影響的服務名稱）：'{{`SERVICE_NAME`}}' / **建議的疑難排解步驟:** 不支援在啟用執行期監控之前啟動的服務。<br />您可以依照《[Amazon Elastic Container Service 開發人員指南》中的使用主控台更新 Amazon ECS 服務的步驟，](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-service-console-v2.html)重新啟動服務或使用 `forceNewDeployment` 選項更新服務。 **或者，您也可以使用 *Amazon Elastic Container Service API 參考*中 [UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html) 下的步驟。
  - **額外資訊:** 啟用執行期監控之前啟動的任務需要重新啟動。受影響的任務 ID (s)：'{{`TASK_ID_1`}}' / **建議的疑難排解步驟:** 在 Amazon ECS 中，任務是不可變的。若要評估執行時間行為或執行中的 AWS Fargate 任務，請確定執行時間監控已啟用，然後重新啟動任務讓 GuardDuty 新增容器附屬。

- **其他**
  - **額外資訊:** 無法識別的問題，適用於 中的任務 `TaskDefinition - '{{TASK_DEFINITION}}'`
  - **建議的疑難排解步驟:** 使用下列問題來識別問題的根本原因：+  在您啟用執行期監控之前，任務是否開始？ <br />在 Amazon ECS 中，任務是不可變的。若要評估執行中 Fargate 任務的執行期行為，請確定執行期監控已啟用，然後重新啟動任務讓 GuardDuty 新增容器附屬。 <br />+  在您啟用執行期監控之前，此任務是否屬於已開始的服務部署？ <br />如果是，您可以使用更新服務中的步驟，重新啟動服務或`forceNewDeployment`使用 [更新服務](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-service-console-v2.html)。 <br />您也可以使用 [UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html) 或 [AWS CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ecs/update-service.html)。 <br />+  從執行期監控中排除 ECS 叢集之後，任務是否啟動？ <br />當您將預先定義的 GuardDuty 標籤從 `GuardDutyManaged`-`true` 變更為 `GuardDutyManaged`- 時`false`，GuardDuty 將不會收到 ECS 叢集的執行期事件。 <br />+  您的服務是否包含舊格式為 的任務`taskArn`？ <br />GuardDuty 執行期監控不支援舊格式為 的任務涵蓋範圍`taskArn`。 <br />如需 Amazon ECS 資源的 Amazon Resource Name ARNs) 相關資訊，請參閱 [Amazon Resource Name (ARNs和 IDs](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids)。 

