

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

# Amazon ECS 故障診斷
<a name="troubleshooting"></a>

您可能需要對負載平衡器、任務、服務或容器執行個體進行疑難排解。本章會協助您從 Amazon ECS 容器代理程式、容器執行個體的 Docker 常駐程式，以及 Amazon ECS 主控台的服務事件日誌中尋找診斷資訊。

如需有關已停止任務的資訊，請參閱下列主題。


| Action | 進一步了解 | 
| --- | --- | 
|  解決已停止任務錯誤。  |  [檢視 Amazon ECS 已停止任務錯誤](stopped-task-errors.md)  | 
|  檢視已停止任務錯誤。  |  [解決 Amazon ECS 已停止任務錯誤](resolve-stopped-errors.md)  | 
|  檢閱已停止任務錯誤代碼。  |  [Amazon ECS 已停止任務錯誤訊息](stopped-task-error-codes.md)  | 
|  檢閱 CannotPullContainer 任務錯誤。  |  [Amazon ECS 中的 CannotPullContainer 任務錯誤](task_cannot_pull_image.md)  | 
| 檢視任務 IAM 角色請求。 | [檢視 Amazon ECS 任務的 IAM 角色請求](task_iam_roles-logs.md) | 
|  使用任務事件進行故障診斷。  |  [主控台中的 Amazon ECS 事件擷取](task-lifecycle-events.md)  | 

如需有關服務錯誤的資訊，請參閱下列主題。


| Action | 進一步了解 | 
| --- | --- | 
|  檢視服務事件訊息。  |  [檢視 Amazon ECS 服務事件訊息](service-event-messages.md)  | 
|  檢閱服務事件訊息。  |  [Amazon ECS 服務事件訊息](service-event-messages-list.md)  | 
|  檢閱負載平衡器問題。  |  [對 Amazon ECS 中的服務負載平衡器進行疑難排解](troubleshoot-service-load-balancers.md)  | 
|  檢閱服務自動擴展問題。  |  [Amazon ECS 中的服務自動擴展疑難排解](troubleshoot-service-auto-scaling.md)  | 

如需有關任務定義錯誤的資訊，請參閱下列主題。


| Action | 進一步了解 | 
| --- | --- | 
|  解決任務定義記憶體錯誤。  |  [對 Amazon ECS 任務定義無效的 CPU 或記憶體錯誤進行疑難排解](task-cpu-memory-error.md)  | 

如需有關 Amazon ECS 代理程式錯誤的資訊，請參閱下列主題。


| Action | 進一步了解 | 
| --- | --- | 
|  檢視 Amazon ECS 容器代理日誌。  |  [檢視 Amazon ECS 容器代理程式日誌](logs.md)  | 
|  了解如何收集 Amazon ECS 日誌。  |  [使用 Amazon ECS 日誌收集器收集容器日誌](ecs-logs-collector.md)  | 
|  透過 Amazon ECS 代理程式擷取診斷詳細資訊。  |  [透過代理程式自我檢查功能擷取 Amazon ECS 診斷詳細資訊](introspection-diag.md)  | 

如需有關 Docker 錯誤的資訊，請參閱下列主題。


| Action | 進一步了解 | 
| --- | --- | 
|  使用 Docker 診斷。  |  [Amazon ECS 中的 Docker 診斷](docker-diags.md)  | 
|  啟用 Docker 偵錯模式。  |  [在 Amazon ECS 中設定 Docker 常駐程式的詳細輸出](docker-debug-mode.md)  | 
|  對 Docker API 錯誤 500 進行疑難排解。  |  [在 Amazon ECS 中對 Docker `API error (500): devmapper` 進行疑難排解](CannotCreateContainerError.md)  | 

如需有關 ECS Exec 與 Amazon ECS Anywhere 錯誤的資訊，請參閱下列主題。


| Action | 進一步了解 | 
| --- | --- | 
|  對 ECS Exec 進行疑難排解。  |  [對 Amazon ECS Exec 問題進行疑難排解](ecs-exec-troubleshooting.md)  | 
|  對 Amazon ECS Anywhere 進行疑難排解。  |  [對 Amazon ECS Anywhere 問題進行疑難排解](ecs-anywhere-troubleshooting.md)  | 

如需有關將 Amazon EBS 磁碟區連接至 Amazon ECS 任務時所遭遇問題的資訊，請參閱下列主題：


| Action | 進一步了解 | 
| --- | --- | 
|  Amazon EBS 磁碟區連接至 Amazon ECS 任務的疑難排解。  |  [對 Amazon ECS 任務的 Amazon EBS 磁碟區連接問題進行疑難排解](troubleshoot-ebs-volumes.md)  | 
|  Amazon EBS 磁碟區連接至 Amazon ECS 任務的狀態原因。  |  [Amazon EBS 磁碟區連接至 Amazon ECS 任務的狀態原因](troubleshoot-ebs-volumes-scenarios.md)  | 

如需搭配 Amazon ECS Service Connect 使用共用 AWS Cloud Map 命名空間問題的相關資訊，請參閱下列其中一項：


| Action | 進一步了解 | 
| --- | --- | 
|  使用共用 AWS Cloud Map 命名空間對 Amazon ECS Service Connect 進行故障診斷。  |  [使用共用 AWS Cloud Map 命名空間對 Amazon ECS Service Connect 進行故障診斷](service-connect-shared-namespaces-troubleshooting.md)  | 

如需有關限流問題的資訊，請參閱下列主題。


| Action | 進一步了解 | 
| --- | --- | 
|  了解 Fargate 限流配額。  |  [AWS Fargate 調節配額](throttling.md)  | 
|  了解 Amazon ECS 限流的最佳實務。  |  [因應 Amazon ECS 限流問題](operating-at-scale-dealing-with-throttles.md)  | 

如需有關 API 錯誤的資訊，請參閱下列主題。


| Action | 進一步了解 | 
| --- | --- | 
|  解決 API 錯誤。  |  [Amazon ECS API 失敗原因](api_failures_messages.md)  | 

如需採用 AI 技術的故障診斷資訊，請參閱下列內容：


| Action | 進一步了解 | 
| --- | --- | 
|  在 主控台中使用 Amazon Q Developer 進行故障診斷。  |  [使用 Amazon Q Developer 進行故障診斷](troubleshooting-with-Q.md)  | 
|  使用 Amazon ECS MCP 伺服器對 AI 助理進行故障診斷。  |  [Amazon ECS MCP 伺服器](ecs-mcp-introduction.md)  | 

# 解決 Amazon ECS 已停止任務錯誤
<a name="resolve-stopped-errors"></a>

當任務無法啟動時，您會在主控台與 `describe-tasks` 輸出參數 (`stoppedReason` 與 `stopCode`) 中看到錯誤訊息。

您可於主控台中檢視已停止任務，檢視時效為一小時。若要檢視已停止任務，您必須變更篩選選項。如需詳細資訊，請參閱[檢視 Amazon ECS 已停止任務錯誤](stopped-task-errors.md)。

以下頁面會提供有關已停止任務的資訊。
+ 了解已停止任務錯誤訊息的變更。

  [Amazon ECS 已停止任務錯誤訊息更新](stopped-tasks-error-messages-updates.md)
+ 檢視已停止任務，取得相關錯誤成因資訊。

  [檢視 Amazon ECS 已停止任務錯誤](stopped-task-errors.md)
+ 了解已停止任務錯誤訊息和可能的錯誤原因。

  [Amazon ECS 已停止任務錯誤訊息](stopped-task-error-codes.md)
+ 了解如何驗證已停止任的務連線狀態並修正錯誤。

  [驗證 Amazon ECS 已停止任務的連線狀態](verify-connectivity.md)

# Amazon ECS 已停止任務錯誤訊息更新
<a name="stopped-tasks-error-messages-updates"></a>

自 2024 年 6 月 14 日起，Amazon ECS 團隊將變更已停止任務錯誤訊息，如下表所述。`stopCode` 不會變更。如果應用程式依賴確切的錯誤訊息字串，您必須使用新字串來更新應用程式。如需相關問題的協助，請聯絡 AWS 支援。

**注意**  
建議不要依賴自動化的錯誤訊息，因為錯誤訊息可能會有所變更。

## CannotPullContainerError
<a name="cannot-pull-container-error-changes"></a>


| 舊錯誤訊息 | 新錯誤訊息 | 
| --- | --- | 
| CannotPullContainerError: Error response from daemon: pull access denied for repository, repository does not exist or may require 'docker login': denied: User: roleARN | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/stopped-tasks-error-messages-updates.html)  | 
|  CannotPullContainerError: Error response from daemon: Get imageURI: net/http: request canceled while waiting for connection |  CannotPullContainerError: The task can’t pull the image. Check your network configuration. Error response from daemon: Get image: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) | 
| CannotPullContainerError: ref pull has been retried 5 time(s): failed to copy: httpReadSeeker: failed open: failed to do request: Get registry-uri: dial tcp <ip>:<port> i/o timeout | CannotPullContainerError: The task cannot pull image-uri from the registry registry-uri. There is a connection issue between the task and the registry. Check your task network configuration. : failed to copy: httpReadSeeker: failed open: failed to do request: Get registry-uri: dial tcp <ip>:<port> i/o timeout | 

## ResourceNotFoundException
<a name="resourcenotfound-error-changes"></a>


| 舊錯誤訊息 | 新錯誤訊息 | 
| --- | --- | 
| 從 AWS Secrets Manager 區域擷取秘密資料：秘密 sercretARN：ResourceNotFoundException：Secrets Manager 找不到指定的秘密。 | ResourceNotFoundException：任務無法從中擷取具有 ARN 'sercretARN' 的秘密 AWS Secrets Manager。Check whether the secret exists in the specified Region. ResourceNotFoundException：從 AWS Secrets Manager 區域擷取秘密資料：秘密 sercretARN：ResourceNotFoundException：Secrets Manager 找不到指定的秘密。 | 

## ResourceInitializationError
<a name="resourceinitialization-error-changes"></a>


| 舊錯誤訊息 | 新錯誤訊息 | 
| --- | --- | 
| ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve ecr registry auth: service call has been retried 3 time(s): RequestError: send request failed caused by: Post "https://api.ecr.us-east-1.amazonaws.com/": dial tcp <ip>:<port>: i/o timeout. Please check your task network configuration. | ResourceInitializationError: unable to pull secrets or registry auth: The task cannot pull registry auth from Amazon ECR: There is a connection issue between the task and Amazon ECR. Check your task network configuration. RequestError: send request failed caused by: Post "https://api.ecr.us-east-1.amazonaws.com": dial tcp <ip>:<port>: i/o timeout | 
| ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve secrets from ssm: service call has been retried 5 time(s): RequestCanceled: request context canceled caused by: context deadline exceeded | ResourceInitializationError: unable to pull secrets or registry auth: unable to retrieve secrets from ssm: The task cannot pull secrets from AWS Systems Manager. There is a connection issue between the task and AWS Systems Manager Parameter Store. Check your task network configuration. RequestCanceled: request context canceled caused by: context deadline exceeded | 
| ResourceInitializationError: failed to download env files: file download command: non empty error stream: RequestCanceled: request context canceled caused by: context deadline exceeded | ResourceInitializationError: failed to download env files: The task can't download the environment variable files from Amazon S3. There is a connection issue between the task and Amazon S3. Check your task network configuration. service call has been retried 5 time(s): RequestCanceled: request context canceled caused by: context deadline exceeded | 
| ResourceInitializationError: failed to validate logger args::signal:killed | ResourceInitializationError: failed to validate logger args: The task cannot find the Amazon CloudWatch log group defined in the task definition. There is a connection issue between the task and Amazon CloudWatch. Check your network configuration. : signal: killed | 
| ResourceInitializationError: unable to pull secrets or registry auth: pull command failed: : signal: killed | ResourceInitializationError: unable to pull secrets or registry auth: Check your task network configuration. : signal: killed | 

# 檢視 Amazon ECS 已停止任務錯誤
<a name="stopped-task-errors"></a>

如果啟動任務時有問題，您的任務可能會因為應用程式或組態錯誤而停止。例如，您執行任務，而任務顯示 `PENDING` 狀態，然後就消失。

 如果您的任務是由 Amazon ECS 服務建立，Amazon ECS 為維護服務所採取的動作會發佈在服務事件中。您可以在 AWS 管理主控台、 AWS CLI、 AWS SDKs、Amazon ECS API 或使用 SDKs 和 API 的工具中檢視事件。這些事件包括 Amazon ECS 停止並取代任務，因為任務中的容器已停止執行，或多次未通過 Elastic Load Balancing 的運作狀態檢查。

如果任務在 Amazon EC2 或外部電腦的容器執行個體上執行，您也可以檢視容器執行時期與 Amazon ECS 代理程式的日誌。這些日誌位於主機 Amazon EC2 執行個體或外部電腦上。如需詳細資訊，請參閱[檢視 Amazon ECS 容器代理程式日誌](logs.md)。

## 程序
<a name="view-stopped-errors-procedure"></a>

------
#### [ Console ]

**AWS 管理主控台**

您可透過主控台按下列步驟來檢查已停止任務是否有錯誤。若要檢視已停止任務，您必須變更篩選選項。

已停止任務只會在主控台中顯示 1 小時。

1. 開啟主控台，網址為 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)。

1. 在導覽窗格中，選擇**叢集**。

1. 在**叢集**頁面上，選擇叢集。

1. 在 **Cluster : *name*** (叢集：名稱) 頁面上，選擇 **Tasks** (任務) 索引標籤。

1. 設定篩選條件以顯示已停止的任務。在**篩選所需狀態**欄位中選擇**已停止**。

   **Stopped** (已停止) 選項會顯示已停止的任務，而 **Any desired status** (任何所需狀態) 會顯示所有任務。

1. 選擇要檢查的已停止任務。

1. 在已停止任務的列中，在 **Last Status** (上次狀態) 欄中，選擇 **Stopped** (已停止)。

   快顯視窗隨即顯示停止原因。

------
#### [ AWS CLI ]

1. 列出叢集中停止的任務。輸出包含任務的 Amazon Resource Name (ARN)，您需要 Amazon Resource Name (ARN) 來描述任務。

   ```
   aws ecs list-tasks \
        --cluster cluster_name \
        --desired-status STOPPED \
        --region region
   ```

1. 描述已停止任務以擷取資訊。如需詳細資訊，請參閱《 * AWS Command Line Interface 參考*》中的 [describe-tasks](https://docs.aws.amazon.com/cli/latest/reference/ecs/describe-tasks.html)。

   ```
   aws ecs describe-tasks \
        --cluster cluster_name \
        --tasks arn:aws:ecs:region:account_id:task/cluster_name/task_ID \
        --region region
   ```

使用下列輸出參數。
+ `stopCode` – 停止代碼會指出任務停止的原因，例如 ResourceInitializationError
+ `StoppedReason` – 任務停止的原因。
+ `reason` (在 `containers` 結構中) – 原因會提供已停止容器的額外詳細資訊。

------

## 後續步驟
<a name="additional-resources"></a>

檢視已停止任務，取得相關錯誤成因資訊。如需詳細資訊，請參閱[Amazon ECS 已停止任務錯誤訊息](stopped-task-error-codes.md)。

# Amazon ECS 已停止任務錯誤訊息
<a name="stopped-task-error-codes"></a>

以下是任務意外停止時，可能會收到的錯誤訊息。

若要使用 檢查已停止的任務是否有錯誤訊息 AWS 管理主控台，請參閱 [檢視 Amazon ECS 已停止任務錯誤](stopped-task-errors.md)。

**提示**  
您可以[Amazon ECS MCP 伺服器](ecs-mcp-introduction.md)搭配 AI 助理使用 ，以自然語言分析任務失敗和容器日誌。

已停止任務錯誤代碼具有與其相關聯的類別，例如 "ResourceInitializationError"。如需了解每個類別的詳細資訊，請參閱下列主題：


| Category | 進一步了解 | 
| --- | --- | 
|  TaskFailedToStart  |  [對 Amazon ECS TaskFailedToStart 錯誤進行疑難排解](failed-to-start-error.md)  | 
|  ResourceInitializationError  |  [對 Amazon ECS ResourceInitializationError 錯誤進行疑難排解](resource-initialization-error.md)  | 
| ResourceNotFoundException |  [對 Amazon ECS ResourceNotFoundException 錯誤進行疑難排解](resource-not-found-error.md) | 
|  SpotInterruptionError  |  [對 Amazon ECS SpotInterruption 錯誤進行疑難排解](spot-interruption-errors.md)  | 
|  InternalError  |  [對 Amazon ECS InternalError 錯誤進行疑難排解](internal-error.md)  | 
|  OutOfMemoryError  |  [對 Amazon ECS OutOfMemoryError 錯誤進行疑難排解](out-of-memory.md)  | 
|  ContainerRuntimeError  |  [對 Amazon ECS ContainerRuntimeError 錯誤進行疑難排解](container-runtime-error.md)  | 
|  ContainerRuntimeTimeoutError  |  [對 Amazon ECS ContainerRuntimeTimeoutError 錯誤進行疑難排解](container-runtime-timeout-error.md)  | 
|  CannotStartContainerError  |  [對 Amazon ECS CannotStartContainerError 錯誤進行疑難排解](cannot-start-container.md)  | 
|  CannotStopContainerError  |  [對 Amazon ECS CannotStopContainerError 錯誤進行疑難排解](cannot-stop-container.md)  | 
|  CannotInspectContainerError  |  [對 Amazon ECS CannotInspectContainerError 錯誤進行疑難排解](cannot-inspect-container.md)  | 
|  CannotCreateVolumeError  |  [對 Amazon ECS CannotCreateVolumeError 錯誤進行疑難排解](cannot-create-volume.md)  | 
| CannotPullContainer |  [Amazon ECS 中的 CannotPullContainer 任務錯誤](task_cannot_pull_image.md)  | 

# 對 Amazon ECS TaskFailedToStart 錯誤進行疑難排解
<a name="failed-to-start-error"></a>

以下是部分 `TaskFailedToStart` 錯誤訊息以及可採取的錯誤修正動作。

若要使用 檢查已停止的任務是否有錯誤訊息 AWS 管理主控台，請參閱 [檢視 Amazon ECS 已停止任務錯誤](stopped-task-errors.md)。

## 嘗試在子網路 *subnet-id* 中建立啟用了公有 IP 指派的網路介面時，發生意外 EC2 錯誤
<a name="subnet-error"></a>

當 Fargate 任務使用 `awsvpc` 網路模式並在具有公有 IP 位址的子網路中執行，且子網路沒有足夠的 IP 位址時，就會發生這種情況。

可在 Amazon EC2 主控台的子網路詳細資訊頁面上檢視可用 IP 位址的數量，也可透過 `[describe-subnets](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-subnets.html)` 檢視該數量。如需詳細資訊，請參閱 *Amazon VPC User Guide* 中的 [View your subnet](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#view-subnet)。

若要修正此問題，您可以建立新的子網路，在其中執行任務。

## InternalError: *<reason>*
<a name="internal-error-reason"></a>

在請求 ENI 附件時，會發生此錯誤。Amazon EC2 以非同步方式處理 ENI 的佈建。佈建程序需要時間。Amazon ECS 會出現逾時，導致等待時間較長或未報告的故障。有時會佈建 ENI，但報告會在故障逾時後傳送給 Amazon ECS。在這種情況下，Amazon ECS 會透過使用中的 ENI 查看報告的任務失敗。

## 選取的任務定義與選取的運算策略不相容
<a name="compute-compatibility"></a>

當您選擇啟動類型不符合叢集容量類型的任務定義時，就會發生此錯誤。您需要選取與指派給叢集的容量提供者相符的任務定義。

## 無法將網路介面連接至閒置的裝置索引
<a name="compute-compatibility-cpu"></a>

使用 `awsvpc` 聯網類型且任務沒有足夠的 CPU/記憶體時，即會發生此錯誤。首先，檢查執行個體的 CPU。如需詳細資訊，請參閱 *Amazon EC2 instance types* 中的 [Amazon EC2 instance type specifications](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-instance-type-specifications.html) 。取執行個體的 CPU 值，並將其乘以執行個體 ENI 數量。在任務定義中使用值 e。

## 代理程式
<a name="agent-not-started"></a>

您嘗試啟動任務所在之容器執行個體上的代理程式目前中斷連線。為避免延長任務置放等待時間，請求遭到拒絕。

如需如何對已中斷連線的代理程式進行故障診斷的相關資訊，請參閱 [How do I troubleshoot a disconnected Amazon ECS agent](https://repost.aws/knowledge-center/ecs-agent-disconnected-linux2-ami) (如何對已中斷連線的 Amazon ECS 代理程式進行故障診斷)。

# 對 Amazon ECS ResourceInitializationError 錯誤進行疑難排解
<a name="resource-initialization-error"></a>

以下是部分 `ResourceInitialization` 錯誤訊息以及可採取的錯誤修正動作。

若要使用 檢查已停止的任務是否有錯誤訊息 AWS 管理主控台，請參閱 [檢視 Amazon ECS 已停止任務錯誤](stopped-task-errors.md)。

**Topics**
+ [The task cannot pull registry authentication from Amazon ECR. There is a connection issue between the task and Amazon ECR. Check your task network configuration.](#unable-to-pull-secrets-ecr)
+ [The task can't download the environment variable files from Amazon S3. There is a connection issue between the task and Amazon S3. Check your task network configuration.](#failed-to-download-env-files)
+ [任務無法從 AWS Systems Manager 參數存放區提取秘密。檢查任務與 之間的網路連線 AWS Systems Manager。](#unable-to-pull-secrets-sys-manager)
+ [任務無法從中提取秘密 AWS Secrets Manager。There is a connection issue between the task and Secrets Manager. Check your task network configuration.](#unable-to-pull-secrets-asm-no-arn)
+ [The task can’t pull the secret from Secrets Manager. The task can't retrieve the secret with ARN ‘*secretARN*' from Secrets Manager. Check whether the secret exists in the specified Region.](#unable-to-pull-secrets-asm)
+ [pull command failed: unable to pull secrets or registry auth Check your task network configuration.](#pull-command-failed)
+ [任務找不到任務定義中所定義的 Amazon CloudWatch 日誌群組。There is a connection issue between the task and Amazon CloudWatch. Check your network configuration.](#failed-to-initialize-logging-network)
+ [failed to initialize logging driver](#failed-to-initialize-logging)
+ [無法調用 EFS utils 命令來設定 EFS 磁碟區](#efs-utils-failed)

## The task cannot pull registry authentication from Amazon ECR. There is a connection issue between the task and Amazon ECR. Check your task network configuration.
<a name="unable-to-pull-secrets-ecr"></a>

此錯誤表示任務無法連線至 Amazon ECR。

檢查任務與 Amazon ECR 之間的連線。如需相關資訊，請參閱[驗證 Amazon ECS 已停止任務的連線狀態](verify-connectivity.md)。

## The task can't download the environment variable files from Amazon S3. There is a connection issue between the task and Amazon S3. Check your task network configuration.
<a name="failed-to-download-env-files"></a>

當任務無法從 Amazon S3 下載環境檔案時，就會發生此錯誤。

檢查任務與 Amazon S3 VPC 端點之間的連線。如需相關資訊，請參閱[驗證 Amazon ECS 已停止任務的連線狀態](verify-connectivity.md)。

## 任務無法從 AWS Systems Manager 參數存放區提取秘密。檢查任務與 之間的網路連線 AWS Systems Manager。
<a name="unable-to-pull-secrets-sys-manager"></a>

當任務無法使用 Systems Manager 中的憑證提取任務定義中定義的映像時，就會發生此錯誤。

檢查任務與 Systems Manager VPC 端點之間的連線。如需相關資訊，請參閱[驗證 Amazon ECS 已停止任務的連線狀態](verify-connectivity.md)。

## 任務無法從中提取秘密 AWS Secrets Manager。There is a connection issue between the task and Secrets Manager. Check your task network configuration.
<a name="unable-to-pull-secrets-asm-no-arn"></a>

當任務無法使用 Secrets Manager 中的憑證提取任務定義中定義的映像時，就會發生此錯誤。

此錯誤表示 Systems Manager VPC 端點與任務之間存在網路連線問題。

如需有關如何驗證任務與端點之間連線的資訊，請參閱[驗證 Amazon ECS 已停止任務的連線狀態](verify-connectivity.md)。

## The task can’t pull the secret from Secrets Manager. The task can't retrieve the secret with ARN ‘*secretARN*' from Secrets Manager. Check whether the secret exists in the specified Region.
<a name="unable-to-pull-secrets-asm"></a>

當任務無法使用 Secrets Manager 中的憑證提取任務定義中定義的映像時，就會發生此錯誤。

此問題由以下其中一個原因造成：


| 錯誤原因... | 執行此作業... | 
| --- | --- | 
|   Secrets Manager VPC 端點與任務之間存在網路連線問題。 在錯誤訊息中看到下列任何字串時，表示存在網路問題： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/resource-initialization-error.html)  |  驗證任務與 Secrets Manager 端點之間的連線狀態。如需詳細資訊，請參閱[驗證 Amazon ECS 已停止任務的連線狀態](verify-connectivity.md)。  | 
| 任務定義中所定義的任務執行角色，沒有 Secrets Manager 所需的許可。 |  將 Secrets Manager 所需的許可新增至任務執行角色。如需詳細資訊，請參閱[Secrets Manager 或 Systems Manager 許可](task_execution_IAM_role.md#task-execution-secrets)。  | 
| 秘密 ARN 不存在 | 檢查 Secrets Manager 中是否存在 ARN。如需有關檢視映像的資訊，請參閱 Secrets Manager Developer Guide 中的 [Find secrets in Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_search-secret.html)。 | 

## pull command failed: unable to pull secrets or registry auth Check your task network configuration.
<a name="pull-command-failed"></a>

當任務無法連線至 Amazon ECR、Systems Manager 或 Secrets Manager 時，就會發生此錯誤。此問題源自於網路組態錯誤。

若要修正此問題，請驗證任務與 Amazon ECR 之間的連線狀態。您也需要檢查任務與儲存秘密的服務 (Systems Manager 或 Secrets Manager) 之間的連線狀態。如需詳細資訊，請參閱[驗證 Amazon ECS 已停止任務的連線狀態](verify-connectivity.md)。

## 任務找不到任務定義中所定義的 Amazon CloudWatch 日誌群組。There is a connection issue between the task and Amazon CloudWatch. Check your network configuration.
<a name="failed-to-initialize-logging-network"></a>

當任務找不到您在任務定義中定義的 CloudWatch 日誌群組時，就會發生此錯誤。

此錯誤表示 CloudWatch VPC 端點與任務之間存在網路連線問題。

如需有關如何驗證任務與端點之間連線的資訊，請參閱[驗證 Amazon ECS 已停止任務的連線狀態](verify-connectivity.md)。

## failed to initialize logging driver
<a name="failed-to-initialize-logging"></a>

當任務找不到您在任務定義中定義的 CloudWatch 日誌群組時，就會發生此錯誤。

此錯誤表示任務定義中的 CloudWatch 群組不存在。

使用下列步驟尋找缺少的 CloudWatch。

1. 執行下列命令來取得任務定義資訊。

   ```
   aws ecs describe-task-definition \ 
       --task-definition task-def-name
   ```

   查看每個容器的輸出，並記下 `awslogs-group` 值。

   ```
   "logConfiguration": {
                   "logDriver": "awslogs",
                   "options": {
                       "awslogs-group": "/ecs/example-group",
                       "awslogs-create-group": "true",
                       "awslogs-region": "us-east-1",
                       "awslogs-stream-prefix": "ecs"
                   },
   ```

1. 確認群組存在於 CloudWatch 中。如需詳細資訊，請參閱 *Amazon CloudWatch Logs User Guide* 中的 [Working with log groups and log streams](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)。

   問題可能是任務定義中指定的群組不正確，也可能是日誌群組不存在。

1. 修正問題。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/resource-initialization-error.html)

## 無法調用 EFS utils 命令來設定 EFS 磁碟區
<a name="efs-utils-failed"></a>

下列問題可能會阻止您在任務上掛載 Amazon EFS 磁碟區：
+ Amazon EFS 檔案系統設定不正確。
+ 任務缺少必要許可。
+ 存在與網路與 VPC 組態相關的問題。

 如需有關如何偵錯和修正此問題的資訊，請參閱[為何我無法在 re：Post 上的 AWS Fargate 任務上掛載 Amazon EFS 磁碟區](https://repost.aws/knowledge-center/fargate-unable-to-mount-efs)。 AWS 

# 對 Amazon ECS ResourceNotFoundException 錯誤進行疑難排解
<a name="resource-not-found-error"></a>

以下是部分 ` ResourceNotFoundException` 錯誤訊息以及可採取的錯誤修正動作。

若要使用 檢查已停止的任務是否有錯誤訊息 AWS 管理主控台，請參閱 [檢視 Amazon ECS 已停止任務錯誤](stopped-task-errors.md)。

## 任務無法從中擷取具有 ARN '*sercretARN*' 的秘密 AWS Secrets Manager。Check whether the secret exists in the specified Region.
<a name="unable-to-pull-secrets-ecr"></a>

當任務無法從 Secrets Manager 擷取秘密時，就會發生此錯誤。這表示在任務定義中指定 (並且在錯誤訊息中包含) 的秘密不存在於 Secrets Manager 中。

區域資訊包含在錯誤訊息中。

從 AWS Secrets Manager *區域*擷取秘密資料：秘密 *sercretARN*：ResourceNotFoundException：Secrets Manager 找不到指定的秘密。

如需有關尋找秘密的資訊，請參閱 *AWS Secrets Manager User Guide* 中的 [Find secrets in AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_search-secret.html)。

使用下表來判斷並解決錯誤。


| 問題 | 動作 | 
| --- | --- | 
| 秘密位於與任務定義不同的區域。 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/resource-not-found-error.html) | 
| 任務定義的秘密 ARN 不正確。Secrets Manager 中存在正確的秘密。 | 使用正確的秘密更新任務定義。如需詳細資訊，請參閱[使用主控台更新 Amazon ECS 任務定義](update-task-definition-console-v2.md)，或 Amazon Elastic Container Service API Reference 中的 [RegisterTaskDefinition](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RegisterTaskDefinition.html)。 | 
| 秘密不再存在。 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/resource-not-found-error.html)  | 

# 對 Amazon ECS SpotInterruption 錯誤進行疑難排解
<a name="spot-interruption-errors"></a>

`SpotInterruption` 錯誤在 Fargate 和 EC2 中發生的原因不相同。

若要使用 檢查已停止的任務是否有錯誤訊息 AWS 管理主控台，請參閱 [檢視 Amazon ECS 已停止任務錯誤](stopped-task-errors.md)。

## Fargate
<a name="fargate-spot-error"></a>

當沒有 Fargate Spot 容量或當 Fargate 取回 Spot 容量時，就會發生 `SpotInterruption` 錯誤。

您可以讓任務在多個可用區域中執行，以取得更多容量。

## EC2
<a name="ec2-spot-error"></a>

當沒有可用的 Spot 執行個體或當 EC2 取回 Spot 執行個體容量時，就會發生此錯誤。

您可以讓執行個體在多個可用區域中執行，以取得更多容量。

# 對 Amazon ECS InternalError 錯誤進行疑難排解
<a name="internal-error"></a>

**適用對象**：Fargate

若要使用 檢查已停止的任務是否有錯誤訊息 AWS 管理主控台，請參閱 [檢視 Amazon ECS 已停止任務錯誤](stopped-task-errors.md)。

當代理程式遇到非執行時期相關的意外內部錯誤時，就會發生 `InternalError` 錯誤。

只有在使用平台版本 `1.4` 或更新版本時，才會發生此錯誤。

如需有關偵錯和修正此問題的資訊，請參閱 [Amazon ECS 已停止任務錯誤訊息](stopped-task-error-codes.md)。

# 對 Amazon ECS OutOfMemoryError 錯誤進行疑難排解
<a name="out-of-memory"></a>

以下是部分 OutOfMemoryError 錯誤訊息以及可採取的錯誤修正動作。

若要使用 檢查已停止的任務是否有錯誤訊息 AWS 管理主控台，請參閱 [檢視 Amazon ECS 已停止任務錯誤](stopped-task-errors.md)。

## container killed due to memory usage
<a name="container-memory-usage"></a>

當容器結束是由於容器中的程序消耗的記憶體比任務定義中分配的記憶體更多時，或是由於主機或作業系統限制時，就會發生此錯誤。

# 對 Amazon ECS ContainerRuntimeError 錯誤進行疑難排解
<a name="container-runtime-error"></a>

以下是部分 ContainerRuntimeError 錯誤訊息以及可採取的錯誤修正動作。

若要使用 檢查已停止的任務是否有錯誤訊息 AWS 管理主控台，請參閱 [檢視 Amazon ECS 已停止任務錯誤](stopped-task-errors.md)。

## ContainerRuntimeError
<a name="container-runtime-error-1"></a>

當代理程式從 `containerd` 接收到特定執行時間操作的意外錯誤時，會發生此錯誤。此錯誤通常是由代理程式或 `containerd` 執行時間的內部失敗所造成。

只有在使用平台版本 `1.4.0` 或更新版本 (Linux)，或 `1.0.0` 或更新版本 (Windows) 時，才會發生此錯誤。

如需有關如何偵錯和修正此問題的資訊，請參閱[為什麼我的 Amazon ECS 任務在 re：Post 上停止](https://repost.aws/knowledge-center/ecs-task-stopped)。 AWS 

# 對 Amazon ECS ContainerRuntimeTimeoutError 錯誤進行疑難排解
<a name="container-runtime-timeout-error"></a>

以下是部分 ContainerRuntimeTimeoutError 錯誤訊息以及可採取的錯誤修正動作。

若要使用 檢查已停止的任務是否有錯誤訊息 AWS 管理主控台，請參閱 [檢視 Amazon ECS 已停止任務錯誤](stopped-task-errors.md)。

## Could not transition to running; timed out after waiting 1m or Docker timeout error
<a name="container-runtime-timeout-error-1"></a>

當容器在逾時期間無法轉換成 `RUNNING` 或 `STOPPED` 狀態時，會發生此錯誤。錯誤訊息中會提供原因和逾時值。

# 對 Amazon ECS CannotStartContainerError 錯誤進行疑難排解
<a name="cannot-start-container"></a>

以下是部分 CannotStartContainerError 錯誤訊息以及可採取的錯誤修正動作。

若要使用 檢查已停止的任務是否有錯誤訊息 AWS 管理主控台，請參閱 [檢視 Amazon ECS 已停止任務錯誤](stopped-task-errors.md)。

## failed to get container status: *<reason>*
<a name="cannot-start-container-1"></a>

無法啟動容器時，會發生此錯誤。

如果容器嘗試使用超過此處指定的記憶體，容器便會終止。增加分配給容器的記憶體。這是任務定義中的 `memory` 參數。如需詳細資訊，請參閱[記憶體](task_definition_parameters.md#container_definition_memory)。

# 對 Amazon ECS CannotStopContainerError 錯誤進行疑難排解
<a name="cannot-stop-container"></a>

以下是部分 CannotStopContainerError 錯誤訊息以及可採取的錯誤修正動作。

若要使用 檢查已停止的任務是否有錯誤訊息 AWS 管理主控台，請參閱 [檢視 Amazon ECS 已停止任務錯誤](stopped-task-errors.md)。

## CannotStopContainerError
<a name="cannot-stop-container-1"></a>

無法停用容器時，會發生此錯誤。

如需有關如何偵錯和修正此問題的資訊，請參閱[為什麼我的 Amazon ECS 任務在 re：Post 上停止](https://repost.aws/knowledge-center/ecs-task-stopped)。 AWS 

# 對 Amazon ECS CannotInspectContainerError 錯誤進行疑難排解
<a name="cannot-inspect-container"></a>

以下是部分 CannotInspectContainerError 錯誤訊息以及可採取的錯誤修正動作。

若要使用 檢查已停止的任務是否有錯誤訊息 AWS 管理主控台，請參閱 [檢視 Amazon ECS 已停止任務錯誤](stopped-task-errors.md)。

## CannotInspectContainerError
<a name="cannot-inspect-container-1"></a>

當容器代理程式無法透過容器執行時間描述容器時，會發生此錯誤。

使用平台版本 `1.3` 或先前版本時，Amazon ECS 代理程式會從 Docker 傳回原因。

使用平台版本 `1.4.0` 或更新版本 (Linux)，或者 `1.0.0` 或更新版本 (Windows) 時，Fargate 代理程式會從 `containerd` 傳回原因。

如需有關如何偵錯和修正此問題的資訊，請參閱[為什麼我的 Amazon ECS 任務在 re：Post 上停止](https://repost.aws/knowledge-center/ecs-task-stopped)。 AWS 

# 對 Amazon ECS CannotCreateVolumeError 錯誤進行疑難排解
<a name="cannot-create-volume"></a>

以下是部分 CannotCreateVolumeError 錯誤訊息以及可採取的錯誤修正動作。

若要使用 檢查已停止的任務是否有錯誤訊息 AWS 管理主控台，請參閱 [檢視 Amazon ECS 已停止任務錯誤](stopped-task-errors.md)。

## CannotCreateVolumeError
<a name="cannot-create-volume-1"></a>

當代理程式無法建立任務定義中指定的磁碟區掛載時，會發生此錯誤。

只有在使用平台版本 `1.4.0` 或更新版本 (Linux)，或 `1.0.0` 或更新版本 (Windows) 時，才會發生此錯誤。

如需有關如何偵錯和修正此問題的資訊，請參閱[為什麼我的 Amazon ECS 任務在 re：Post 上停止](https://repost.aws/knowledge-center/ecs-task-stopped)。 AWS 

# Amazon ECS 中的 CannotPullContainer 任務錯誤
<a name="task_cannot_pull_image"></a>

下列錯誤表示任務無法啟動，因為 Amazon ECS 無法擷取指定的容器映像。

**注意**  
1.4 Fargate 平台版本會截斷長的錯誤訊息。

若要使用 檢查已停止的任務是否有錯誤訊息 AWS 管理主控台，請參閱 [檢視 Amazon ECS 已停止任務錯誤](stopped-task-errors.md)。

**提示**  
您可以[Amazon ECS MCP 伺服器](ecs-mcp-introduction.md)搭配 AI 助理使用 ，使用自然語言調查影像提取錯誤。

**Topics**
+ [The task can’t pull the image. Check that the role has the permissions to pull images from the registry.](#pull-request-image-not-found)
+ [The task cannot pull ‘*image-name*’ from the Amazon ECR repository ‘*repository URI*’. There is a connection issue between the task and Amazon ECR. Check your task network configuration.](#pull-image-io-timeout)
+ [The task can’t pull the image. Check your network configuration](#pull-request-image-not-found-network)
+ [CannotPullContainerError: pull image manifest has been retried 5 time(s): failed to resolve ref](#pull-request-image-tag)
+ [API error (500): Get https://111122223333.dkr.ecr.us-east-1.amazonaws.com/v2/: net/http: request canceled while waiting for connection](#request-canceled)
+ [API 錯誤](#pull-request-api-error)
+ [write /var/lib/docker/tmp/*GetImageBlob111111111*: no space left on device](#pull-request-write-error)
+ [ERROR: toomanyrequests: Too Many Requests or You have reached your pull rate limit.](#container-pull-too-many-requests)
+ [Error response from daemon: Get *url*: net/http: request canceled while waiting for connection](#container-pull-request-canceled-connection)
+ [ref pull has been retried 1 time(s): failed to copy: httpReaderSeeker: failed open: unexpected status code](#container-pull-failed-open)
+ [pull access denied](#container-pull-access-denied.title)
+ [pull command failed: panic: runtime error: invalid memory address or nil pointer dereference](#container-pull-runtime-error.title)
+ [error pulling image conf/error pulling image configuration](#container-pull-pulling-image.title)
+ [內容已取消](#container-pull-context-canceled)

## The task can’t pull the image. Check that the role has the permissions to pull images from the registry.
<a name="pull-request-image-not-found"></a>

此錯誤表示由於許可問題，任務無法提取任務定義中指定的映像。

若要解決此問題：

1. 檢查映像是否存在於*儲存庫*中。如需有關檢視映像的資訊，請參閱 *Amazon Elastic Container Registry User Guide* 中的 [Viewing image details in Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-info.html)。

1. 確認 *role-arn* 具有提取映像的正確許可。

   如需有關如何更新角色的資訊，請參閱 *AWS Identity and Access Management Use Guide* 中的 [Update permissions for a role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-permissions.html)。

   任務使用以下任一角色：
   + 對於使用 Fargate 的任務，此為任務執行角色。如需有關 Amazon ECR 額外許可的資訊，請參閱 [Fargate 任務透過介面端點提取 Amazon ECR 映像的許可](task_execution_IAM_role.md#task-execution-ecr-conditionkeys)。
   + 對於使用 EC2 的任務，此為容器執行個體角色。如需有關 Amazon ECR 額外許可的資訊，請參閱 [Amazon ECR 許可](instance_IAM_role.md#container-instance-role-ecr)。

## The task cannot pull ‘*image-name*’ from the Amazon ECR repository ‘*repository URI*’. There is a connection issue between the task and Amazon ECR. Check your task network configuration.
<a name="pull-image-io-timeout"></a>

此錯誤表示任務無法連線至 Amazon ECR。檢查*儲存庫 URI* 儲存庫的連線。

如需有關如何確認與解決此問題的資訊，請參閱[驗證 Amazon ECS 已停止任務的連線狀態](verify-connectivity.md)。

## The task can’t pull the image. Check your network configuration
<a name="pull-request-image-not-found-network"></a>

此錯誤表示任務無法連線至 Amazon ECR。

如需有關如何確認與解決此問題的資訊，請參閱[驗證 Amazon ECS 已停止任務的連線狀態](verify-connectivity.md)。

## CannotPullContainerError: pull image manifest has been retried 5 time(s): failed to resolve ref
<a name="pull-request-image-tag"></a>

此錯誤表示任務無法提取映像。

若要解決此問題，您可以：
+ 確認任務定義中指定的映像符合儲存庫中的映像。
+ Amazon ECS 會強制保障映像版本穩定性。若原始映像不再可用，您就會遇到此錯誤。映像標籤是強制實施此項機制的關鍵組成。請將任務定義中的映像標籤從 :latest 更改為特定版本。如需詳細資訊，請參閱[容器映像解析](deployment-type-ecs.md#deployment-container-image-stability)。

如需有關如何確認與解決此問題的資訊，請參閱[驗證 Amazon ECS 已停止任務的連線狀態](verify-connectivity.md)。

## API error (500): Get https://111122223333.dkr.ecr.us-east-1.amazonaws.com/v2/: net/http: request canceled while waiting for connection
<a name="request-canceled"></a>

此錯誤表示連線已逾時，原因是不存在通往網際網路的路由。

要解決此問題，則可以採取下列方式：
+ 針對公有子網路中的任務，您必須在啟動任務時，將 **Auto-assign public IP** (自動指派公有 IP) 指定為 **ENABLED** (啟用)。如需詳細資訊，請參閱[將應用程式作為 Amazon ECS 任務執行](standalone-task-create.md)。
+ 針對在私有子網路中的任務，則必須在啟動任務時，將 **Auto-assign public IP** (自動指派公有 IP) 指定為 **DISABLED** (停用)，並設定 VPC 中的 NAT 閘道，以便將請求路由至網際網路。如需詳細資訊，請參閱 *Amazon VPC 使用者指南*中的 [NAT 閘道](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。

## API 錯誤
<a name="pull-request-api-error"></a>

此錯誤表示 Amazon ECR 端點存在連線問題。

如需如何解決此問題的資訊，請參閱 支援 網站上的[如何解決 Amazon ECS 中的 Amazon ECR 錯誤「CannotPullContainerError： API 錯誤」](https://aws.amazon.com/premiumsupport/knowledge-center/ecs-pull-container-api-error-ecr/)。

## write /var/lib/docker/tmp/*GetImageBlob111111111*: no space left on device
<a name="pull-request-write-error"></a>

此錯誤表示磁碟空間不足。

若要解決這個問題，請釋放磁碟空間。

如果使用 Amazon ECS 最佳化 AMI，您可以透過下列命令來擷取檔案系統上最大的前 20 個檔案：

```
du -Sh / | sort -rh | head -20
```

輸出範例：

```
5.7G    /var/lib/docker/containers/50501b5f4cbf90b406e0ca60bf4e6d4ec8f773a6c1d2b451ed8e0195418ad0d2
1.2G    /var/log/ecs
594M    /var/lib/docker/devicemapper/mnt/c8e3010e36ce4c089bf286a623699f5233097ca126ebd5a700af023a5127633d/rootfs/data/logs
...
```

在某些情況下，執行容器可能會填滿根磁碟區。如果容器使用預設的 `json-file` 日誌驅動程式，而不具有 `max-size` 限制，則該日誌檔案可能佔用大部分空間。您可以使用 `docker ps` 命令，透過將目錄名稱從上面的輸出映射至容器 ID，來驗證哪個容器正在使用該空間。例如：

```
CONTAINER ID   IMAGE                            COMMAND             CREATED             STATUS              PORTS                            NAMES
50501b5f4cbf   amazon/amazon-ecs-agent:latest   "/agent"            4 days ago          Up 4 days                                            ecs-agent
```

在預設情況下，當使用 `json-file` 日誌驅動程式時，Docker 會擷取所有容器的標準輸出 (和標準錯誤)，並使用 JSON 格式將其寫入檔案中。您可以將 `max-size` 設定為日誌驅動程式選項，以防止日誌檔案佔用過多空間。如需詳細資訊，請參閱 Docker 文件中的 [JSON File logging driver](https://docs.docker.com/engine/logging/drivers/json-file/)。

下列是一個容器定義片段，顯示如何使用此選項：

```
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "256m"
    }
}
```

如果容器日誌佔用太多磁碟空間，則可使用 `awslogs` 日誌驅動程式。`awslogs` 日誌驅動程式會將日誌傳送至 CloudWatch，以釋放原本要給容器執行個體上的容器日誌使用的磁碟空間。如需詳細資訊，請參閱[將 Amazon ECS 日誌傳送至 CloudWatch](using_awslogs.md)。

您可能需要更新 Docker 可存取的磁碟大小。

如需詳細資訊，請參閱 [CannotPullContainerError: no space left on device](https://repost.aws/questions/QUx6Ix1R1SSNisYSs1Sw8EBA/cannotpullcontainererror-no-space-left-on-device)。

## ERROR: toomanyrequests: Too Many Requests or You have reached your pull rate limit.
<a name="container-pull-too-many-requests"></a>

此錯誤表示存在 Docker Hub 速率限制。

如果收到下列其中一項錯誤訊息，您很可能會達到 Docker Hub 速率限制：

如需 Docker Hub 速率限制的詳細資訊，請參閱[了解 Docker Hub 速率限制](https://www.docker.com/increase-rate-limits)。

如果您已提升 Docker Hub 速率限制，並且需要身分驗證容器執行個體的 Docker 提取，請參閱[容器執行個體的私有登錄檔身分驗證](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth-container-instances.html)。

## Error response from daemon: Get *url*: net/http: request canceled while waiting for connection
<a name="container-pull-request-canceled-connection"></a>

此錯誤表示連線已逾時，原因是不存在通往網際網路的路由。

要解決此問題，則可以採取下列方式：
+ 針對公有子網路中的任務，您必須在啟動任務時，將 **Auto-assign public IP** (自動指派公有 IP) 指定為 **ENABLED** (啟用)。如需詳細資訊，請參閱[將應用程式作為 Amazon ECS 任務執行](standalone-task-create.md)。
+ 針對在私有子網路中的任務，則必須在啟動任務時，將 **Auto-assign public IP** (自動指派公有 IP) 指定為 **DISABLED** (停用)，並設定 VPC 中的 NAT 閘道，以便將請求路由至網際網路。如需詳細資訊，請參閱 *Amazon VPC 使用者指南*中的 [NAT 閘道](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。

## ref pull has been retried 1 time(s): failed to copy: httpReaderSeeker: failed open: unexpected status code
<a name="container-pull-failed-open"></a>

此錯誤表示複製映像時失敗。

若要解決此問題，請檢閱下列文章：
+ 如需 Fargate 任務，請參閱[如何解決 Fargate 上 Amazon ECS 任務的 "cannotpullcontainererror" 錯誤](https://aws.amazon.com/premiumsupport/knowledge-center/ecs-fargate-pull-container-error/)。
+ 如需其他任務，請參閱[如何解決 Fargate 上 Amazon ECS 任務的 "cannotpullcontainererror" 錯誤](https://aws.amazon.com/premiumsupport/knowledge-center/ecs-pull-container-error/)。

## pull access denied
<a name="container-pull-access-denied.title"></a>

此錯誤表示無法存取映像。

若要解決此問題，您可能需要使用 Amazon ECR 驗證 Docker 用戶端。如需詳細資訊，請參閱 *Amazon ECR User Guide* 中的 [Private registry authentication](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry_auth.html)。

## pull command failed: panic: runtime error: invalid memory address or nil pointer dereference
<a name="container-pull-runtime-error.title"></a>

此錯誤表示由於記憶體位址無效或空指標解除參照，無法存取映像。

若要解決此問題：
+ 檢查您是否擁有可連接 Amazon S3 的安全群組規則。
+ 使用閘道端點時，必須在路由表中新增路由，才能存取端點。

## error pulling image conf/error pulling image configuration
<a name="container-pull-pulling-image.title"></a>

此錯誤表示已達到速率限制或發生網路錯誤：

若要解決此問題，請參閱[我的 Amazon ECS EC2 啟動類型任務中的如何解決「CannotPullContainerError」錯誤](https://repost.aws/knowledge-center/ecs-pull-container-error)。

## 內容已取消
<a name="container-pull-context-canceled"></a>

此錯誤表示內容已取消。

此錯誤的原因通常是因為您的任務所使用的 VPC 沒有路由，而無法從 Amazon ECR 提取容器映像。

# 驗證 Amazon ECS 已停止任務的連線狀態
<a name="verify-connectivity"></a>

有時候任務會因為網路連線問題而停止。這可能是間歇性問題，但最有可能是因為任務無法連線至端點。

## 測試任務連線狀態
<a name="test-network"></a>

您可以使用 `AWSSupport-TroubleshootECSTaskFailedToStart` 執行手冊來測試任務連線狀態。在使用執行手冊時，您需要下列資源資訊：
+ 任務 ID

  使用最近失敗任務的 ID。
+ 任務所在的叢集

如需有關如何使用執行手冊的資訊，請參閱 *AWS Systems Manager Automation runbook reference* 中的 [https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-aws-troubleshootecstaskfailedtostart.html](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-aws-troubleshootecstaskfailedtostart.html)。

執行手冊會分析任務。您可以在**輸出**區段中檢視下列問題的結果，這些問題可能會阻止任務啟動：
+ 與已設定容器登錄檔的網路連線
+ VPC 端點連線
+ 安全群組規則組態

## 修正 VPC 端點問題
<a name="fix-vpc-endpoints"></a>

當 `AWSSupport-TroubleshootECSTaskFailedToStart` 執行手冊結果顯示存在 VPC 端點問題時，請檢查下列組態：
+ 建立端點的 VPC 和 VPC 端點需要使用私有 DNS。
+ 請確定您有一個 服務的 AWS PrivateLink 端點，而任務無法在與任務相同的 VPC 中連線到該端點。如需詳細資訊，請參閱下列主題：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/verify-connectivity.html)
+ 設定任務子網路的傳出規則，允許連接埠 443 的 HTTPS 與 DNS (TCP) 流量。如需詳細資訊，請參閱 *Amazon Elastic Compute Cloud User Guide* 中的 [Configure security group rules](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/changing-security-group.html#add-remove-security-group-rules)。
+ 若使用自訂網域名稱伺服器，請確認 DNS 查詢的設定。查詢必須具有連接埠 53 的傳出存取權，並使用 UDP 與 TCP 通訊協定。此外，其必須具備連接埠 443 的 HTTPS 存取權。如需詳細資訊，請參閱 *Amazon Elastic Compute Cloud User Guide* 中的 [Configure security group rules](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/changing-security-group.html#add-remove-security-group-rules)。
+ 如果子網路具有網路 ACL，則需要如下 ACL 規則：
  + 傳出規則，允許連接埠 1024-65535 的流量。
  + 傳入規則，允許連接埠 443 的 TCP 流量。

  如需有關如何設定規則的資訊，請參閱 *Amazon Virtual Private Cloud User Guide* 中的 [Control traffic to subnets using network ACLs](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)。

## 修正網路問題
<a name="fix-network-issues"></a>

當 `AWSSupport-TroubleshootECSTaskFailedToStart` 執行手冊結果顯示存在網路問題時，請檢查下列組態：

### 在公有子網路中使用 awsvpc 網路模式的任務
<a name="fix-network-issues-fargate-public"></a>

根據執行手冊執行下列組態：
+ 針對公有子網路中的任務，您必須在啟動任務時，將 **Auto-assign public IP** (自動指派公有 IP) 指定為 **ENABLED** (啟用)。如需詳細資訊，請參閱[將應用程式作為 Amazon ECS 任務執行](standalone-task-create.md)。
+ 您需要閘道來處理網際網路流量。任務子網路的路由表需要有通往閘道的流量路由。

  如需詳細資訊，請參閱 *Amazon Virtual Private Cloud User Guide* 中的 [Add and remove routes from a route table](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithRouteTables.html#AddRemoveRoutes)。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/verify-connectivity.html)
+ 如果任務子網路具有網路 ACL，則需要如下 ACL 規則：
  + 傳出規則，允許連接埠 1024-65535 的流量。
  + 傳入規則，允許連接埠 443 的 TCP 流量。

  如需有關如何設定規則的資訊，請參閱 *Amazon Virtual Private Cloud User Guide* 中的 [Control traffic to subnets using network ACLs](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)。

### 在私有子網路中使用 awsvpc 網路模式的任務
<a name="fix-network-issues-fargate-private"></a>

根據執行手冊執行下列組態：
+ 啟動任務時，在**自動指派公有 IP** 欄位中選擇**停用**。
+  在 VPC 中設定 NAT 閘道，將請求路由至網際網路。如需詳細資訊，請參閱 *Amazon Virtual Private Cloud User Guide* 中的 [NAT Gateways](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。
+ 任務子網路的路由表需要有通往 NAT 閘道的流量路由。

  如需詳細資訊，請參閱 *Amazon Virtual Private Cloud User Guide* 中的 [Add and remove routes from a route table](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithRouteTables.html#AddRemoveRoutes)。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/verify-connectivity.html)
+ 如果任務子網路具有網路 ACL，則需要如下 ACL 規則：
  + 傳出規則，允許連接埠 1024-65535 的流量。
  + 傳入規則，允許連接埠 443 的 TCP 流量。

  如需有關如何設定規則的資訊，請參閱 *Amazon Virtual Private Cloud User Guide* 中的 [Control traffic to subnets using network ACLs](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)。

### 在公有子網路中不使用 awsvpc 網路模式的任務
<a name="fix-network-issues-ec2-public"></a>

根據執行手冊執行下列組態：
+ 當您建立叢集時，請在 **Amazon EC2 執行個體聯網**區段的**自動指派 IP** 欄位中選擇**啟用**。

  此選項會將公有 IP 位址指派給執行個體主要網路介面。
+ 您需要閘道來處理網際網路流量。執行個體子網路的路由表需要有通往閘道的流量路由。

  如需詳細資訊，請參閱 *Amazon Virtual Private Cloud User Guide* 中的 [Add and remove routes from a route table](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithRouteTables.html#AddRemoveRoutes)。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/verify-connectivity.html)
+ 如果執行個體子網路具有網路 ACL，則需要如下 ACL 規則：
  + 傳出規則，允許連接埠 1024-65535 的流量。
  + 傳入規則，允許連接埠 443 的 TCP 流量。

  如需有關如何設定規則的資訊，請參閱 *Amazon Virtual Private Cloud User Guide* 中的 [Control traffic to subnets using network ACLs](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)。

### 在私有子網路中不使用 awsvpc 網路模式的任務
<a name="fix-network-issues-fargate-private"></a>

根據執行手冊執行下列組態：
+ 當您建立叢集時，請在 **Amazon EC2 執行個體聯網**區段的**自動指派 IP** 欄位中選擇**停用**。
+  在 VPC 中設定 NAT 閘道，將請求路由至網際網路。如需詳細資訊，請參閱 *Amazon VPC 使用者指南*中的 [NAT 閘道](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)。
+ 執行個體子網路的路由表需要有通往 NAT 閘道流量的路由。

  如需詳細資訊，請參閱 *Amazon Virtual Private Cloud User Guide* 中的 [Add and remove routes from a route table](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithRouteTables.html#AddRemoveRoutes)。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/verify-connectivity.html)
+ 如果任務子網路具有網路 ACL，則需要如下 ACL 規則：
  + 傳出規則，允許連接埠 1024-65535 的流量。
  + 傳入規則，允許連接埠 443 的 TCP 流量。

  如需有關如何設定規則的資訊，請參閱 *Amazon Virtual Private Cloud User Guide* 中的 [Control traffic to subnets using network ACLs](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)。

# 檢視 Amazon ECS 任務的 IAM 角色請求
<a name="task_iam_roles-logs"></a>

當您為 IAM 角色中的任務憑證使用提供者時，提供者請求會儲存在稽核日誌中。稽核紀錄會繼承與容器代理程式紀錄相同的紀錄輪換設定。`ECS_LOG_ROLLOVER_TYPE`、`ECS_LOG_MAX_FILE_SIZE_MB` 和 `ECS_LOG_MAX_ROLL_COUNT` 容器代理程式組態變數可供設定來影響稽核日誌的行為。如需詳細資訊，請參閱[Amazon ECS 容器代理程式日誌組態參數](ecs-agent-versions.md#agent-logs)。

針對 1.36.0 和更新版本的容器代理程式，稽核日誌會位在 `/var/log/ecs/audit.log`。紀錄輪換時，會在日誌檔名稱的結尾新增 `YYYY-MM-DD-HH` 格式的時間戳記。

針對 1.35.0 和更舊版本的容器代理程式，稽核日誌會位在 `/var/log/ecs/audit.log.YYYY-MM-DD-HH`。

日誌項目的格式如下：
+ 時間戳記
+ HTTP 回應代碼
+ 請求來源的 IP 地址和連接埠號碼
+ 登入資料提供者的相對 URI
+ 提出請求的使用者代理
+ 提出請求容器所屬之任務的 ARN
+ `GetCredentials` API 名稱和版本編號
+ 容器執行個體註冊對象的 Amazon ECS 叢集名稱
+ 容器執行個體 ARN

您可以使用下列命令來檢視日誌檔案。

```
cat /var/log/ecs/audit.log.2016-07-13-16
```

輸出：

```
2016-07-13T16:11:53Z 200 172.17.0.5:52444 "/v1/credentials" "python-requests/2.7.0 CPython/2.7.6 Linux/4.4.14-24.50.amzn1.x86_64" TASK_ARN GetCredentials 1 CLUSTER_NAME CONTAINER_INSTANCE_ARN
```

# 檢視 Amazon ECS 服務事件訊息
<a name="service-event-messages"></a>

對服務問題進行疑難排解時，您首先應檢查服務事件日誌以取得診斷資訊。您可以使用 `DescribeServices` API、 AWS CLI或 來檢視服務事件 AWS 管理主控台。

使用 Amazon ECS API 檢視服務事件訊息時，只會傳回來自服務排程器的事件。其中包括最近的任務放置和執行個體運作狀態事件。不過，Amazon ECS 主控台會顯示下列來源的服務事件。
+ 來自 Amazon ECS 服務排程器的任務置放和執行個體運作狀態事件。這些事件會擁有字首 **service* (service-name)***。為了確保此事件檢視有幫助，我們只會顯示最新的前 `100` 個事件。系統會忽略重複的服務事件訊息，直至原因解決或經過六個小時為止。如果原因未在六小時內解決，您會收到另一則關於該原因的服務事件訊息。
+ Service Auto Scaling 事件。這些事件字首為 **Message**，並且只有在服務以應用程式自動擴展政策設定時才會發生。

**提示**  
您可以[Amazon ECS MCP 伺服器](ecs-mcp-introduction.md)搭配 AI 助理使用 來分析使用自然語言的服務事件。

請依照下列步驟檢視您目前的服務事件訊息。

------
#### [ Console ]

1. 開啟主控台，網址為 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)。

1. 在導覽窗格中，選擇**叢集**。

1. 在**叢集**頁面上，選擇叢集。

1. 選擇要檢查的服務。

1. 在**事件**索引標籤上，檢視訊息。

------
#### [ AWS CLI ]

使用 [describe-services](https://docs.aws.amazon.com/cli/latest/reference/ecs/describe-services.html) 命令來檢視指定服務的服務事件訊息。

下列 AWS CLI 範例說明*預設*叢集中的 *service-name* 服務，可提供最新的服務事件訊息。

```
aws ecs describe-services \
    --cluster default \
    --services service-name \
    --region us-west-2
```

------

# Amazon ECS 服務事件訊息
<a name="service-event-messages-list"></a>

您會在 Amazon ECS 主控台中看到以下服務事件訊息範例：

## 服務 (*service-name*) 已達到穩定狀態。
<a name="service-event-messages-steady"></a>

當服務處於良好狀態且任務數量達到預期，進而進入穩定狀態時，服務排程器會傳送 `service (service-name) has reached a steady state.` 服務事件。

服務排程器會定期報告狀態，因此您可能會多次收到此訊息。

## 服務 (*service-name*) 無法放置任務，因為沒有容器執行個體符合其所有要求。
<a name="service-event-messages-1"></a>

服務排程器會在找不到可用資源來新增另一個任務時傳送此事件訊息。可能的原因如下：

使用容量提供者自動擴展 EC2 執行個體。如需詳細資訊，請參閱[EC2 工作負載的 Amazon ECS 容量提供者](asg-capacity-providers.md)。  
如果打算使用容量提供者，請確定您已傳遞容量提供者策略，或具有與叢集相關聯的預設容量提供者策略，且未傳遞啟動類型與容量提供者策略作為輸入

您的叢集中找不到任何容器執行個體  
如果嘗試執行任務的叢集中沒有已註冊的容器執行個體，您會收到此錯誤。您應該將容器執行個體新增到您的叢集。如需詳細資訊，請參閱[啟動 Amazon ECS Linux 容器執行個體](launch_container_instance.md)。

連接埠不足  
如果您的任務使用固定的主機連接埠映射 (例如，您的任務為 Web 伺服器使用主機的連接埠 80)，則您每項任務至少必須擁有一個容器執行個體，因為一個容器一次只能使用單一個主機連接埠。您應該新增容器執行個體到您的叢集，或降低所需任務數量。

註冊的連接埠太多  
用於任務置放的最適配容器執行個體，其保留連接埠數量不得超過每個容器執行個體最多 100 個主機連接埠的限制。使用動態主機連接埠映射可以修復此問題。

連接埠已在使用中  
此任務的任務定義在其連接埠映射中使用的連接埠，與所選容器執行個體上執行的任務所使用的連接埠相同。服務事件訊息會將具有所選容器執行個體 ID 作為以下訊息的一部分。  

```
The closest matching container-instance is already using a port required by your task.
```

記憶體不足  
如果您的任務定義指定 1000 MiB 的記憶體，而您叢集中的容器執行個體每個都有 1024 MiB 的記憶體，則您每個容器執行個體只能執行一個此任務複本。您可以在任務定義中試驗使用較少的記憶體，以便您每個容器執行個體可以啟動多項任務，或在您的叢集中啟動更多的容器執行個體。  
若您嘗試盡可能為特定執行個體類型的任務提供最多的記憶體，以將資源使用率最大化，請參閱「[保留 Amazon ECS Linux 容器執行個體記憶體](memory-management.md)」。

CPU 不足  
容器執行個體的每個 CPU 核心都有 1,024 CPU 單位。如果您的任務定義指定 1,000 CPU 單位，而您叢集中的容器執行個體每個都有 1,024 CPU 單位，您每個容器執行個體只能執行一個此任務複本。您可以在任務定義中試驗使用較少的 CPU 單位，以便您每個容器執行個體可以啟動多項任務，或在您的叢集中啟動更多的容器執行個體。

可用的 ENI 連接點不足  
使用 `awsvpc` 網路模式的每項任務都會收到自己的彈性網路介面 (ENI)，連接到裝載它的容器執行個體。Amazon EC2 執行個體有可以連接至其的 ENI 數目限制，而且有 ENI 容量可用的叢集中沒有容器執行個體。  
個別容器執行個體的 ENI 限制取決於以下條件：  
+ 如果您**尚未**選擇使用 `awsvpcTrunking` 帳戶設定，則每個容器執行個體的 ENI 限制取決於執行個體類型。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[每個執行個體類型每個網路介面的 IP 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html)。
+ 如果您**已**選擇使用 `awsvpcTrunking` 帳戶設定，但您**尚未**在選擇使用後，使用支援的執行個體類型啟動新的容器執行個體，則每個容器執行個體的 ENI 限制仍為預設值。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[每個執行個體類型每個網路介面的 IP 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html)。
+ 如果您**已**選擇使用 `awsvpcTrunking` 帳戶設定，且**已**在選擇使用後，使用支援的執行個體類型啟動新的容器執行個體，則會有額外的 ENI 可用。如需詳細資訊，請參閱[援更多 Amazon ECS 容器網路介面的執行個體](eni-trunking-supported-instance-types.md)。
如需選擇使用的 `awsvpcTrunking` 帳戶設定詳細資訊，請參閱 [增加 Amazon ECS Linux 容器執行個體網路介面數量](container-instance-eni.md)。  
您可以將容器執行個體新增到您的叢集，以提供更多可用的網路轉接器。

容器執行個體遺漏必要的屬性  
有些任務定義參數需要在容器執行個體上安裝特定的 Docker 遠端 API 版本。其他，例如記錄驅動程式選項，需要容器執行個體向 `ECS_AVAILABLE_LOGGING_DRIVERS` 代理組態變數註冊這些日誌驅動程式。如果您的任務定義包含一個需要特定容器執行個體屬性的參數，而您沒有任何可用的容器執行個體可滿足此需求，即無法置放任務。  
此錯誤的常見原因是，服務使用的任務採用了 `awsvpc` 網路模式與 EC2。您指定的叢集在建立服務時，並未於 `awsvpcConfiguration` 中所指定的相同子網路內註冊任何容器執行個體。  
您可以使用 AWSSupport-TroubleshootECSContainerInstance 執行手冊進行疑難排解。執行手冊會檢閱執行個體的使用者資料是否包含正確的叢集資訊、執行個體設定檔是否包含必要的許可，以及網路組態問題。如需詳細資訊，請參閱 *AWS Systems Manager Automation runbook reference User Guide* 中的 [AWSSupport-TroubleshootECSContainerInstance](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-aws-troubleshoot-ecs-container-instance.html)。  
有關特定任務定義參數和代理組態變數需要哪些必要屬性的詳細資訊，請參閱「[Fargate 的 Amazon ECS 任務定義參數](task_definition_parameters.md)」和「[Amazon ECS 容器代理程式組態](ecs-agent-config.md)」。

## 服務 (*service-name*) 無法放置任務，因為沒有容器執行個體符合其所有要求。最接近的相符容器執行個體 (*容器執行個體 id*) 可用 CPU 單位不足。
<a name="service-event-messages-2"></a>

用於任務置放的最適配容器執行個體，其 CPU 單位不足以滿足任務定義中的需求。檢閱任務定義之任務大小和容器定義參數的 CPU 需求。

## 服務 (*service-name*) 無法放置任務，因為沒有容器執行個體符合其所有要求。最接近的相符容器執行個體 *container-instance-id* 發生「代理」錯誤。
<a name="service-event-messages-3"></a>

適合放置任務之最接近相符容器執行個體中的 Amazon ECS 容器代理中斷連線。如果您可以使用 SSH 連線到容器執行個體，您即可檢查代理日誌，如需詳細資訊，請參閱「[Amazon ECS 容器代理程式日誌組態參數](ecs-agent-versions.md#agent-logs)」。您也應該確認代理是否在執行個體上執行。如果您使用的是 Amazon ECS 最佳化 AMI，您可以使用下列命令嘗試停用並重新啟動代理。
+ 對於 Amazon ECS 最佳化 Amazon Linux 2 AMI 與 Amazon ECS 最佳化 Amazon Linux 2023 AMI

  ```
  sudo systemctl restart ecs
  ```
+ 對於 Amazon ECS 最佳化 Amazon Linux AMI

  ```
  sudo stop ecs && sudo start ecs
  ```

## service (*service-name*) (task *task-id*) (instance *instance-id*) is unhealthy in (elb *elb-name*) due to (reason Instance has failed at least the UnhealthyThreshold number of health checks consecutively.)
<a name="service-event-messages-4"></a>

此服務已在負載平衡器註冊，但負載平衡器的運作狀態檢查失敗。訊息包含任務 ID，可協助識別哪些特定任務未通過運作狀態檢查。如需詳細資訊，請參閱[對 Amazon ECS 中的服務負載平衡器進行疑難排解](troubleshoot-service-load-balancers.md)。

## 服務 (*service-name*) 無法成功持續啟動任務。
<a name="service-event-messages-5"></a>

此服務包含在連續嘗試後無法啟動的任務。此時，服務排程器開始逐漸增加重試之間的時間。您應該對任務無法啟動的原因進行故障診斷。如需詳細資訊，請參閱[Amazon ECS 服務限流邏輯](service-throttle-logic.md)。

服務更新之後，例如使用更新的任務定義，服務排程器就會恢復正常的行為。

## 服務 (*service-name*) 操作正在受到調節。將稍後再試。
<a name="service-event-messages-6"></a>

由於 API 調節限制，此服務無法啟動更多任務。一旦服務排程器能夠啟動更多任務，就會繼續執行。

若要請求提高 API 比率限制配額，請開啟 [AWS 支援 Center](https://console.aws.amazon.com/support/home#/) ( 中心) 頁面，並視需要登入，然後選擇 **Create case** (建立案例)。選擇 **Service limit increase (提高服務限制)**。填妥並提交表格。

## 服務 (*service-name*) 在部署期間因服務部署組態而無法停止或啟動任務。更新 minimumHealthyPercent 或 maximumPercent 值，然後再試一次。
<a name="service-event-messages-7"></a>

由於部署組態，此服務無法在服務部署期間停止或啟動任務。部署組態包含在建立服務時定義的 `minimumHealthyPercent` 與 `maximumPercent` 值。這些值也可在現有的服務上進行更新。

`minimumHealthyPercent` 代表在部署期間或容器執行個體排空時，應為服務執行的任務數量下限。這表示的是服務所需任務數量的百分比。此值會向上捨入。例如，最小運作狀態良好的百分比為 `50`，且所需的任務數量為四，則排程器可以先停止兩個現有的任務，再開始兩個新的任務。同樣地，如果最小運作狀態良好的百分比為 75%，而所需的任務計數為 2，則排程器無法停止任何任務，因為產生的值也是 2。

`maximumPercent` 代表在部署期間或容器執行個體排空時，應為服務執行的任務數量上限。這表示的是服務所需任務數量的百分比。此值會向下捨去。例如，最大百分比為 `200`，且所需的任務數量為四，則排程器可以先停止四個現有的任務，再開始四個新的任務。同樣地，如果最大百分比為 `125`，且所需的任務計數為 3，則排程器無法停止任何任務，因為產生的值也是 3。

設定最小最小運作狀態良好的百分比或最大百分比時，您應確定排程器在觸發部署時，至少可以停止或啟動一項任務。

## 服務 (*service-name*) 無法放置任務。原因：您已達到可以同時執行的任務數量限制
<a name="service-event-messages-8"></a>

您可以請求提升導致錯誤的資源配額。如需詳細資訊，請參閱[Amazon ECS 服務配額](service-quotas.md)。若要請求增加配額，請參閱《*Service Quotas 使用者指南*》中的[請求提高配額](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)。

## 服務 (*service-name*) 無法放置任務。原因：內部錯誤。
<a name="service-event-messages-9"></a>

以下是導致此錯誤的可能原因：

由於子網路位於不受支持的可用區域中，該服務無法開始任務。

如需支援的區域的 Fargate 和可用區域的相關資訊，請參閱 [AWS Fargate 上 Amazon ECS 支援的 區域](AWS_Fargate-Regions.md)。

如需如何檢視子網路可用區域的相關資訊，請參閱《Amazon VPC 使用者指南》**中的[檢視您的子網路](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#view-subnet)。

## 服務 (*service-name*) 無法放置任務。原因：請求的 CPU 組態超過您的限制。
<a name="service-event-messages-10"></a>

您可以請求提升導致錯誤的資源配額。如需詳細資訊，請參閱[Amazon ECS 服務配額](service-quotas.md)。若要請求增加配額，請參閱《*Service Quotas 使用者指南*》中的[請求提高配額](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)。

## 服務 (*service-name*) 無法放置任務。原因：請求的 MEMORY 組態超過您的限制。
<a name="service-event-messages-11"></a>

您可以請求提升導致錯誤的資源配額。如需詳細資訊，請參閱[Amazon ECS 服務配額](service-quotas.md)。若要請求增加配額，請參閱《*Service Quotas 使用者指南*》中的[請求提高配額](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)。

## 服務 (*service-name*) 無法放置任務。原因：您已達到可以同時執行的 vCPU 數量限制
<a name="service-event-messages-12"></a>

AWS Fargate 正在從任務計數型配額轉換為 vCPU 型配額。

對於 Fargate vCPU 型配額，您可請求提高配額。如需詳細資訊，請參閱[Amazon ECS 服務配額](service-quotas.md)。若要請求提高 Fargate 配額，請參閱《Service Quotas 使用者指南》**中的[請求提高配額](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)。

## 服務 (*service-name*) 無法達到穩定狀態，因為任務集 (*taskSet-ID*) 無法縮減。原因：受保護的任務數量超過所需的任務數量
<a name="service-event-messages-13"></a>

服務具有的受保護任務數超過所需的任務數量。您可以執行下列任一動作：
+ 等待目前任務的保護到期，然後終止這些任務。
+ 判斷哪些任務可以停止，並透過 `UpdateTaskProtection` API，將 `protectionEnabled` 選項設定為 `false`，取消這些任務的保護狀態。
+ 將服務的所需任務計數提高到超過受保護任務的數目。

## 服務 (*service-name*) 無法達到穩定狀態。原因：在容量提供者中找不到容器執行個體。
<a name="service-event-messages-14"></a>

服務排程器會在找不到可用資源來新增另一個任務時傳送此事件訊息。可能的原因如下：

沒有與叢集關聯的容量提供者  
使用 `describe-services` 確認您是否擁有與叢集相關聯的容量提供者。您可以更新服務的容量提供者策略。  
確認容量提供者中有可用的容量。若使用 EC2，請確定容器執行個體符合任務定義需求。

您的叢集中找不到任何容器執行個體  
如果嘗試執行任務的叢集中沒有已註冊的容器執行個體，您會收到此錯誤。您應該將容器執行個體新增到您的叢集。如需詳細資訊，請參閱[啟動 Amazon ECS Linux 容器執行個體](launch_container_instance.md)。

連接埠不足  
如果任務使用固定的主機連接埠映射 (例如，任務為 Web 伺服器使用主機的連接埠 80)，每個任務至少必須擁有一個容器執行個體。同一時間，一個容器只能使用一個主機連接埠。您應該新增容器執行個體到您的叢集，或降低所需任務數量。

註冊的連接埠太多  
用於任務置放的最適配容器執行個體，其保留連接埠數量不得超過每個容器執行個體最多 100 個主機連接埠的限制。使用動態主機連接埠映射可以修復此問題。

連接埠已在使用中  
此任務的任務定義在其連接埠映射中使用的連接埠，與所選容器執行個體上執行的任務所使用的連接埠相同。服務事件訊息會將具有所選容器執行個體 ID 作為以下訊息的一部分。  

```
The closest matching container-instance is already using a port required by your task.
```

記憶體不足  
如果您的任務定義指定 1000 MiB 的記憶體，而您叢集中的容器執行個體每個都有 1024 MiB 的記憶體，則您每個容器執行個體只能執行一個此任務複本。您可以在任務定義中試驗使用較少的記憶體，以便您每個容器執行個體可以啟動多項任務，或在您的叢集中啟動更多的容器執行個體。  
若您嘗試盡可能為特定執行個體類型的任務提供最多的記憶體，以將資源使用率最大化，請參閱「[保留 Amazon ECS Linux 容器執行個體記憶體](memory-management.md)」。

可用的 ENI 連接點不足  
使用 `awsvpc` 網路模式的每項任務都會收到自己的彈性網路介面 (ENI)，連接到裝載它的容器執行個體。Amazon EC2 執行個體對可連接的 ENI 數量有上限限制，且叢集中沒有具備可用 ENI 容量的容器執行個體。  
個別容器執行個體的 ENI 限制取決於以下條件：  
+ 如果您**尚未**選擇使用 `awsvpcTrunking` 帳戶設定，則每個容器執行個體的 ENI 限制取決於執行個體類型。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[每個執行個體類型每個網路介面的 IP 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html)。
+ 如果您**已**選擇使用 `awsvpcTrunking` 帳戶設定，但您**尚未**在選擇使用後，使用支援的執行個體類型啟動新的容器執行個體，則每個容器執行個體的 ENI 限制仍為預設值。如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[每個執行個體類型每個網路介面的 IP 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html)。
+ 如果您**已**選擇使用 `awsvpcTrunking` 帳戶設定，且**已**在選擇使用後，使用支援的執行個體類型啟動新的容器執行個體，則會有額外的 ENI 可用。如需詳細資訊，請參閱[援更多 Amazon ECS 容器網路介面的執行個體](eni-trunking-supported-instance-types.md)。
如需選擇使用的 `awsvpcTrunking` 帳戶設定詳細資訊，請參閱 [增加 Amazon ECS Linux 容器執行個體網路介面數量](container-instance-eni.md)。  
您可以將容器執行個體新增到您的叢集，以提供更多可用的網路轉接器。

容器執行個體遺漏必要的屬性  
有些任務定義參數需要在容器執行個體上安裝特定的 Docker 遠端 API 版本。其他，例如記錄驅動程式選項，需要容器執行個體向 `ECS_AVAILABLE_LOGGING_DRIVERS` 代理組態變數註冊這些日誌驅動程式。如果您的任務定義包含一個需要特定容器執行個體屬性的參數，而您沒有任何可用的容器執行個體可滿足此需求，即無法置放任務。  
此錯誤的常見原因是，如果您服務使用的是使用 `awsvpc` 網路模式和 EC2 的任務，且您指定的叢集在相同子網路中沒有註冊至其中的容器執行個體，而這個子網路指的是在建立服務時於 `awsvpcConfiguration` 指定的子網路。  
您可以使用 AWSSupport-TroubleshootECSContainerInstance 執行手冊進行疑難排解。執行手冊會檢閱執行個體的使用者資料是否包含正確的叢集資訊、執行個體設定檔是否包含必要的許可，以及網路組態問題。如需詳細資訊，請參閱 *AWS Systems Manager Automation runbook reference User Guide* 中的 [AWSSupport-TroubleshootECSContainerInstance](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-aws-troubleshoot-ecs-container-instance.html)。  
有關特定任務定義參數和代理組態變數需要哪些必要屬性的詳細資訊，請參閱「[Fargate 的 Amazon ECS 任務定義參數](task_definition_parameters.md)」和「[Amazon ECS 容器代理程式組態](ecs-agent-config.md)」。

## 服務 (*service-name*) 無法放置任務。原因：目前無法使用容量。請稍後再試一次，或在不同的可用區域中嘗試。
<a name="service-event-messages-15"></a>

目前沒有可用的容量可用來執行您的服務。

您可以執行下列任一動作：
+ 等到 Fargate 容量或 EC2 容器執行個體可以使用。
+ 重新啟動服務並指定其他子網路。

## 服務 (*service-name*) 部署失敗：任務無法啟動。
<a name="service-event-messages-16"></a>

服務中的任務無法啟動。

如需有關如何偵錯已停止任務的資訊，請參閱 [Amazon ECS 已停止任務錯誤訊息](stopped-task-error-codes.md)。

## service (*service-name*) Timed out waiting for Amazon ECS Agent to start. Please check logs at /var/log/ecs/ecs-agent.log".
<a name="service-event-messages-17"></a>

適合放置任務之最接近相符容器執行個體中的 Amazon ECS 容器代理中斷連線。如果可透過 SSH 連線至容器執行個體，即可檢查代理程式日誌。如需詳細資訊，請參閱[Amazon ECS 容器代理程式日誌組態參數](ecs-agent-versions.md#agent-logs)。您也應該確認代理是否在執行個體上執行。如果您使用的是 Amazon ECS 最佳化 AMI，您可以使用下列命令嘗試停用並重新啟動代理。
+ 對於 Amazon ECS 最佳化 Amazon Linux 2 AMI

  ```
  sudo systemctl restart ecs
  ```
+ 對於 Amazon ECS 最佳化 Amazon Linux AMI

  ```
  sudo stop ecs && sudo start ecs
  ```

## service (*service-name*) task set (*taskSet-ID*) (task *task-id*) is not healthy in target-group (*targetGroup-ARN)*) due to `TARGET GROUP IS NOT FOUND`.
<a name="service-event-messages-18"></a>

服務的任務集運作狀態檢查失敗，因為找不到目標群組。訊息包含任務 ID，可協助識別哪些特定任務未通過運作狀態檢查。您應刪除並重新建立服務。除非已刪除對應的 Amazon ECS 服務，否則請勿刪除任何 Elastic Load Balancing 目標群組。

## service (*service-name*) task set (*taskSet-ID*) (task *task-id*) is not healthy in target-group (*targetGroup-ARN)*) due to `TARGET IS NOT FOUND`.
<a name="service-event-messages-19"></a>

服務的任務集運作狀態檢查失敗，因為找不到目標。訊息包含任務 ID，可協助識別哪些特定任務未通過運作狀態檢查。

## IAM 許可政策設定錯誤或已變更，ECS 無法再維護您的服務
<a name="service-event-messages-20"></a>

由於 IAM 許可政策設定錯誤或已變更，服務無法維護任務。與 ECS 服務或任務相關聯的 IAM 角色可能缺少必要許可。

若要解決此問題，請將必要許可新增至 IAM 角色。如需有關管理 IAM 許可政策的詳細資訊，請參閱 *IAM User Guide* 中的 [Adding and removing IAM identity permissions](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

## IAM 信任關係設定錯誤或已變更，ECS 無法再維護您的服務
<a name="service-event-messages-21"></a>

由於 IAM 信任關係設定錯誤或已變更，服務無法維護任務。與 ECS 服務或任務相關聯的 IAM 角色的信任政策可能不正確。

若要解決此問題，請為任務定義中使用的角色設定信任政策。如需有關為自訂角色建立信任政策的詳細資訊，請參閱 *IAM User Guide* 中的 [Creating a role for a custom use case](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)。

## service (*service-name*) 無法啟動 deployment *deployment-id* 的*數目*任務。
<a name="service-event-messages-22"></a>

當部署工作流程成功啟動某些任務，但由於容量不足錯誤而無法啟動所有請求的任務時，服務排程器會傳送此事件訊息。這通常發生在啟用斷路器時，並提供部署失敗或復原原因的可見性。

訊息包含特定的失敗原因，例如 CPU、記憶體不足或其他資源限制。這可協助您了解需要處理哪些資源來解決部署問題。

如需詳細資訊，請參閱[服務 (*service-name*) 無法放置任務，因為沒有容器執行個體符合其所有要求。](#service-event-messages-1)。

## service (*service-name*) 無法在叢集中放置任務，因為超過任務佈建容量限制。
<a name="service-event-messages-23"></a>

當您的叢集達到可同時處於 `PROVISIONING` 狀態的 500 個任務限制時，服務排程器會傳送此事件訊息。這是叢集層級限制，而不是服務特定的問題。

當您啟動具有大量所需任務且預先佈建容量有限的服務時，或同時啟動多個服務時，通常會發生這種情況。

若要解決此問題：
+ 等待現有任務完成佈建並移至 `RUNNING` 狀態。
+ 請考慮逐步擴展您的服務，以避免達到佈建限制。
+ 檢閱叢集的容量提供者組態，以確保有足夠的資源可用。

如需 Amazon ECS 服務配額的詳細資訊，請參閱《[Amazon Web Services 一般參考》中的 Amazon Elastic Container Service 端點和配額](https://docs.aws.amazon.com/general/latest/gr/ecs-service.html)。 **

# Amazon ECS 服務運作狀態不良事件訊息
<a name="service-unhealthy-event-messages"></a>

以下是服務運作狀態不良的事件訊息範例。

## EC2: (service *service-name*) (task *task-id*) (instance *instance-id*) (port *port-number*) is unhealthy in (target-group *target-group-name*) due to (reason *failure-reason*)
<a name="service-unhealthy-ec2"></a>

此訊息表示在 EC2 執行個體上執行的任務運作狀態檢查失敗。如需詳細資訊，請參閱下列內容：
+ [如何讓使用 Amazon EC2 啟動類型的 Amazon ECS 任務通過 Application Load Balancer 運作狀態檢查？](https://repost.aws/knowledge-center/troubleshoot-unhealthy-checks-ecs)

## EC2 with taskSet: (service *service-name*, taskSet *taskSet-id*) (task *task-id*) (instance *instance-id*) (port *port-number*) is unhealthy in (target-group *target-group-name*) due to (reason *failure-reason*)
<a name="service-unhealthy-ec2-taskset"></a>

此訊息表示在 EC2 執行個體上執行的任務集中的任務運作狀態檢查失敗。如需詳細資訊，請參閱下列內容：
+ [如何讓使用 EC2 啟動類型的 Amazon ECS 任務通過 Application Load Balancer 運作狀態檢查？](https://repost.aws/knowledge-center/troubleshoot-unhealthy-checks-ecs)

## Fargate: (service *service-name*) (task *task-id*) (port *port-number*) is unhealthy in (target-group *target-group-name*) due to (reason *failure-reason*)
<a name="service-unhealthy-fargate"></a>

此訊息表示 Fargate 任務運作狀態檢查失敗。

如需有關對 Fargate 任務中的運作狀態檢查失敗進行疑難排解的詳細資訊，請參閱[如何對 Fargate 上 Amazon ECS 任務的運作狀態檢查失敗進行疑難排解？](https://repost.aws/knowledge-center/ecs-fargate-health-check-failures)文章。

## Fargate with taskSet: (service *service-name*, taskSet *taskSet-id*) (task *task-id*) (port *port-number*) is unhealthy in (target-group *target-group-name*) due to (reason *failure-reason*)
<a name="service-unhealthy-fargate-taskset"></a>

此訊息表示在 Fargate 上執行的任務集中的任務運作狀態檢查失敗。

如需有關對 Fargate 任務中的運作狀態檢查失敗進行疑難排解的詳細資訊，請參閱[如何對 Fargate 上 Amazon ECS 任務的運作狀態檢查失敗進行疑難排解？](https://repost.aws/knowledge-center/ecs-fargate-health-check-failures)文章。

# Amazon ECS 可用區域服務重新平衡服務事件訊息
<a name="service-rebalancing-event-messages-list"></a>

您會看到以下服務事件訊息範例。

## service (*service-name*) is not AZ balanced with *number-tasks* tasks in *Availability Zone 1*, *number-tasks* in *Availability Zone 2*, and *number-tasks* in *Availability Zone 3*. AZ Rebalancing in progress.
<a name="service-rebalancing-started"></a>

當任務數量未平均分散在可用區域中時，服務排程器會傳送 `service (service-name) is not AZ balanced` 服務事件。無需採取任何動作。這是資訊事件。

## service (*service-name*) is AZ balanced with *number-tasks* tasks in *Availability Zone 1*, *number-tasks* tasks in *Availability Zone 2*, and *number-tasks* tasks in *Availability Zone 3*.
<a name="service-rebalancing-completed"></a>

當可用區域服務重新平衡完成時，服務排程器會傳送 `service (service-name) is AZ balanced` 服務事件。無需採取任何動作。這是資訊事件。

## *service-name* has started *number-tasks* tasks in *Availability Zone* to AZ Rebalance: *task-ids*.
<a name="service-rebalancing-tasks-started"></a>

因為服務重新平衡，服務排程器在可用區域中啟動任務時，會傳送 *service-name*/*task-set-name* has started *number* tasks in *Availability Zone* 服務事件。無需採取任何動作。這是資訊事件。

## *service-name* has stopped *number-tasks* running tasks in *Availability Zone* due to AZ rebalancing: *task-id*.
<a name="service-rebalancing-tasks-stopped"></a>

因為服務重新平衡，服務排程器在可用區域中停止任務時，會傳送 *service-name*/*task-set-name* has stopped *number* tasks in *Availability Zone* 服務事件。無需採取任何動作。這是資訊事件。

## service (*service-name*) is unable to place a task in *Availability Zone* because no container instance met all of its requirements.
<a name="service-rebalancing-placement-failure-instance"></a>

因為沒有任何容器執行個體符合其所有需求，服務排程器會傳送 *service-name* is unable to place a task in *Availability Zone* 服務事件。若要解決問題，請在可用區域中啟動執行個體。

## service (*service-name*) is unable to place a task in *Availability Zone*.
<a name="service-rebalancing-placement-failure"></a>

當您使用 Fargate 且沒有可用容量時，服務排程器會傳送 *service-name* is unable to place a task in *Availability Zone* 服務事件。

您可以在錯誤訊息的可用區域中新增其他子網路，或聯絡 支援 以取得額外的容量。

## service (*service-name*) was unable to AZ Rebalance because *task-set-name* was unable to scale in due to *reason*.
<a name="service-rebalancing-task-protection-failure"></a>

當您使用任務縮減保護時，服務排程器會傳送 *service-name* was unable to AZ Rebalance because *task-set-name* was unable to scale in due to *reason* 服務事件。

 您可以執行下列任一動作：
+ 等待目前任務的保護到期，然後終止這些任務。
+ 判斷哪些任務可以停止，並透過 `UpdateTaskProtection` API，將 `protectionEnabled` 選項設定為 `false`，取消這些任務的保護狀態。
+ 將服務的所需任務計數提高到超過受保護任務的數目。

## service (*service-name*) stopped AZ Rebalancing.
<a name="service-rebalancing-operation-stopped"></a>

當可用區域重新平衡操作停止時，服務排程器會傳送 *service-name* stopped AZ Rebalancing 服務事件。這是資訊事件。Amazon ECS 會傳送提供詳細資訊的額外事件。

# 對 Amazon ECS 中的服務負載平衡器進行疑難排解
<a name="troubleshoot-service-load-balancers"></a>

Amazon ECS 服務可在 Elastic Load Balancing 負載平衡器註冊任務。負載平衡器組態錯誤是常見的任務停止原因。如果您的停止任務是服務使用負載平衡器所啟動，請考慮以下可能的原因。

**Amazon ECS 服務連結角色不存在**  
Amazon ECS 服務連結的角色可讓 Amazon ECS 服務向 Elastic Load Balancing 負載平衡器註冊容器執行個體。必須在您的帳戶中建立服務連結角色。如需詳細資訊，請參閱[使用 Amazon ECS 的服務連結角色](using-service-linked-roles.md)。

**容器執行個體安全群組**  
如果您的容器映射到您容器執行個體的連接埠 80，則您的容器執行個體安全群組必須允許連接埠 80 傳入流量，以讓負載平衡器的運作狀態檢查通過。

**Elastic Load Balancing 負載平衡器未針對所有可用區域設定**  
您的負載平衡器應該設定使用一個區域中的所有可用區域，或至少是您容器執行個體所在的所有可用區域。如果服務使用負載平衡器並啟動位在負載平衡器未設定使用之可用區域中容器執行個體的任務，任務絕對不會通過運作狀態檢查。這會導致任務遭到終止。

**Elastic Load Balancing 負載平衡器運作狀態檢查設定錯誤**  
負載平衡器的運作狀態檢查參數可能太過侷限或指向不存在的資源。如果容器執行個體被判定為運作狀態不良，則會從負載平衡器中將其移除。請務必確認為您的服務負載平衡器正確設定以下參數。    
Ping 連接埠  
負載平衡器運作狀態檢查的 **Ping Port** (Ping 連接埠) 值，是負載平衡器檢查判斷運作狀態是否良好之容器執行個體的連接埠。如果此連接埠設定錯誤，負載平衡器可能會從本身取消註冊您的容器執行個體。此連接埠應設定使用您處理運作狀態檢查之服務任務定義容器的 `hostPort` 值。  
Ping 路徑  
這是負載平衡器運作狀態檢查的一部分。這是應用程式上的端點，可在應用程式運作狀態良好時傳回成功的狀態碼 (例如 200)。此值通常設為 `index.html`，但如果您的服務不回應該請求，則運作狀態檢查會失敗。如果您的容器沒有 `index.html` 檔案，您可以將此設定為 `/`，以容器執行個體的基本 URL 為目標。  
回應逾時  
這是您的容器必須傳回運作狀態檢查 ping 回應的時間。如果此值低於回應所需的時間，則運作狀態檢查會失敗。  
運作狀態檢查間隔  
這是運作狀態檢查 ping 之間的時間。運作狀態檢查的間隔愈短，您的容器執行個體就愈快到達**運作不良閾值** 。  
運作不良閾值  
這是您的運作狀態檢查失敗前，您的容器執行個體視為運作狀態不良的次數。如果運作不良閾值為 2，而運作狀態檢查的間隔為 30 秒，則任務在被判定為運作狀態不良前，有 60 秒可回應運作狀態檢查 ping。您可以提高運作不良閾值或運作狀態檢查間隔，讓任務有更多的時間回應。

**無法更新服務** *servicename***：任務定義中的負載平衡器容器名稱或連接埠已變更**  
如果您的服務使用負載平衡器，您可以使用 AWS CLI 或 SDK 來修改負載平衡器組態。如需有關如何修改組態的資訊，請參閱 *Amazon Elastic Container Service API 參考* 中的 [UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html)。如果您為服務更新任務定義，則在負載平衡器組態中指定的容器名稱和容器連接埠必須保留在任務定義中。

**您已達到可以同時執行的任務數量限制。**  
若為新帳戶，您的配額可能低於服務配額。您可以在 Service Quotas 主控台檢視您的帳戶的服務配額。若要請求提高配額，請參閱[《Service Quotas 使用者指南》](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)中的*請求提高配額*。

# Amazon ECS 中的服務自動擴展疑難排解
<a name="troubleshoot-service-auto-scaling"></a>

應用程式自動擴展會在 Amazon ECS 部署正在進行時關閉縮減程序，並在部署完成後繼續進行。不過，除非在部署期間暫停，否則向外擴展程序會繼續發生。如需詳細資訊，請參閱[暫停和繼續擴展 Application Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-suspend-resume-scaling.html)。

# 主控台中的 Amazon ECS 事件擷取
<a name="task-lifecycle-events"></a>

Amazon ECS 主控台提供事件擷取功能，可透過 EventBridge 將服務動作和任務狀態變更等 Amazon ECS 產生的事件儲存到 Amazon CloudWatch Logs。此功能包含查詢介面，具有用於監控和故障診斷的篩選功能。

事件提供有關您的服務部署、服務、任務和執行個體如何運作的詳細資訊。您可以使用此資訊對任務或服務部署失敗進行故障診斷。

當您開啟事件擷取時，您可以存取 Amazon ECS 在您選擇的保留期間內產生的所有事件，延伸超過最後 100 個未篩選事件或僅顯示 1 小時的已停止任務的原生限制。

## 運作方式
<a name="task-lifecycle-events-overview"></a>

事件擷取使用 EventBridge 將事件儲存在預先定義的 Amazon CloudWatch Logs 日誌群組中。Amazon ECS 主控台提供預先建置的查詢和篩選選項，並將事件相互關聯，以直覺的形式提供任務生命週期。

您可以查詢和擷取下列類型的事件：
+ **服務動作事件** - 協助識別佈建或資源分配問題
+ **任務生命週期事件** - 協助識別任務或容器無法啟動或停止執行的原因

Amazon ECS 主控台可讓您一鍵設定事件擷取，並提供常用的查詢和篩選，而不需要您學習查詢語言或在多個主控台之間導覽。

## Event types (事件類型)
<a name="task-lifecycle-events-types"></a>

事件擷取會將所有 Amazon ECS 產生的事件儲存在下列類別中：

任務狀態變更事件  
容器停止和其他終止事件，可用於疑難排解或監控任務生命週期時間表。

服務動作  
像是達到穩定狀態、任務置放失敗或資源限制等事件。

服務部署狀態變更  
事件，例如進行中、已完成或失敗的部署，由斷路器和復原設定觸發，以監控服務部署的狀態。

容器執行個體狀態變更  
對於 EC2 和 Amazon ECS 受管執行個體上的工作負載，事件會顯示連線和中斷連線狀態。

## 日誌群組組態
<a name="task-lifecycle-events-log-group"></a>

當您開啟事件擷取時，Amazon ECS 會自動建立下列資源：
+ 名為 的 Amazon CloudWatch Logs 日誌群組 `/aws/events/ecs/containerinsights/${clusterName}/performance`
+ EventBridge 規則可從`aws.ecs`來源擷取所有事件，並將其轉送至日誌群組

您可以為日誌群組指定從 1 天到 10 年的保留期。預設保留期間為 7 天。

## 考量事項
<a name="task-lifecycle-events-limitations"></a>

使用事件擷取時，請考慮下列事項：
+ 事件擷取會儲存所有事件以簡化操作。您無法在 Amazon ECS 主控台中設定規則，以僅擷取特定事件。
+ Amazon ECS 主控台提供預先定義的查詢條件。對於進階查詢，請使用 Amazon CloudWatch Logs Logs Insights 直接查詢日誌群組。
+ Amazon ECS 主控台不提供即時結尾功能。直接將 Amazon CloudWatch Logs 用於即時結尾。
+ 當您停用事件擷取時，會刪除 EventBridge 規則。
+ 事件擷取會產生 EventBridge 資料擷取、Amazon CloudWatch Logs 儲存和查詢執行的額外費用。

  如需 EventBridge 定價的資訊，請參閱 [EventBridge 定價](https://aws.amazon.com/eventbridge/pricing/)。

  如需 CloudWatch 定價的相關資訊，請參閱 [CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing/)。

## 事件型疑難排解
<a name="task-lifecycle-events-troubleshooting"></a>

使用 Amazon ECS 產生的事件來回答常見的疑難排解問題。

### 任務失敗分析
<a name="task-lifecycle-events-task-failures"></a>

您可以檢閱`STOPPED`任務狀態變更事件、停止代碼和容器結束代碼，以判斷任務在執行時無法啟動或失敗的原因。

您可以檢閱置放失敗的服務動作事件和資源限制資訊，以判斷任務因資源限制而無法置放的原因

### 常見的任務失敗案例
<a name="task-lifecycle-events-common-issues"></a>

最常見的異常任務失敗與下列問題有關：
+ CI/CD 服務部署失敗
+ 自動擴展失敗
+ 任務重新平衡失敗
+ 異常容器結束，例如out-of-memory(OOM) 錯誤

異常任務失敗會產生具有 `EssentialContainerExited`或 `TaskFailedToStart` 停止程式碼`STOPPED`的任務狀態變更事件。您可以依這些停止代碼進行篩選，以檢查容器執行和停止行為。

# 開啟現有 Amazon ECS 叢集的事件擷取
<a name="turn-on-event-capture-existing-cluster"></a>

您可以在現有的 Amazon ECS 叢集上啟用事件擷取，透過 EventBridge 將 Amazon ECS 產生的事件存放在 Amazon CloudWatch Logs 中。此功能可協助您監控任務失敗、服務部署和其他叢集活動，並進行疑難排解。

啟用事件擷取後，Amazon ECS 會建立下列資源：
+ 名為 的 Amazon CloudWatch Logs 日誌群組 `/aws/events/ecs/containerinsights/${clusterName}/performance`
+ 從`aws.ecs`來源擷取所有事件的 EventBridge 規則

**歷史記錄**索引標籤會顯示在叢集檢視中，可讓您查詢任務生命週期事件和服務動作。事件擷取會立即開始，並根據您指定的保留期間存放所有 Amazon ECS 產生的事件。

## 先決條件
<a name="turn-on-event-capture-prerequisites"></a>
+ 現有的 Amazon ECS 叢集
+ 修改叢集設定和建立 Amazon CloudWatch Logs 資源的適當 IAM 許可

## 使用主控台開啟事件擷取
<a name="turn-on-event-capture-procedure"></a>

1. 開啟主控台，網址為 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)。

1. 在導覽窗格中，選擇**叢集**。

1. 選取您要啟用事件擷取的叢集。

   「叢集詳細資訊」頁面隨即顯示。

1. 選擇 **Configuration (組態)**。

1. 在 **ECS 事件**區段中，選擇**開啟事件擷取**。

   隨即顯示**開啟事件擷取**對話方塊。

1. 針對**過期事件**，選擇 Amazon CloudWatch Logs 日誌群組的保留期間。預設值為 7 天。

1. 選擇 **Turn on (開啟)**。

# 檢視 Amazon ECS 服務和任務狀態變更事件
<a name="viewing-state-events"></a>

Amazon ECS 主控台提供事件擷取功能，可透過 EventBridge 將服務動作和任務狀態變更等 Amazon ECS 產生的事件儲存到 Amazon CloudWatch Logs。此功能包含具有篩選功能的查詢界面，可增強監控和故障診斷。

事件提供有關您的服務部署、服務、任務和執行個體如何運作的詳細資訊。您可以使用此資訊對任務或服務部署失敗進行故障診斷。

您可以使用下列任一條件來篩選事件：
+  部署 ID （僅適用於服務詳細資訊頁面） 
+ 開始時間
+ 結束時間 
+ 服務名稱 （僅適用於叢集詳細資訊頁面、服務詳細資訊頁面，這會預設為目前的服務） 
+ 任務 ID 
+ 任務上次狀態 
+ 任務定義系列 
+ 任務定義修訂 

## 在叢集層級檢視事件
<a name="view-cluster-procedure"></a>

1. 開啟主控台，網址為 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)。

1. 選擇 **Clusters (叢集)**。

   叢集清單頁面隨即顯示。

1. 選擇 叢集。

   「叢集詳細資訊」頁面隨即顯示。

1. 在**歷史記錄**下，決定要檢視的事件。

   1. 若要檢視服務動作事件，請選擇**服務動作事件**。

   1. 若要檢視任務狀態變更事件，請選擇**任務狀態變更事件**。

   1. （選用） 在**查詢條件**中，輸入您要檢視之事件的篩選條件。

1. 選擇 **Run query** (執行查詢)。

   事件會顯示在清單中。

1. 若要檢視事件的完整詳細資訊，請選擇事件。

## 在服務層級檢視
<a name="tasks-procedure"></a>

1. 開啟主控台，網址為 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)。

1. 在**叢集**頁面上，選擇叢集。

1. 在「叢集詳細資訊」頁面上的**服務**區段中，選擇所需服務。

   服務詳細資訊頁面隨即顯示。

1. 在**歷史記錄**下，決定要檢視的事件。

   1. 若要檢視服務動作事件，請選擇**服務動作事件**。

   1. 若要檢視任務狀態變更事件，請選擇**任務狀態變更事件**。

   1. （選用） 在**查詢條件**中，輸入您要檢視之事件的篩選條件。

1. 選擇 **Run query** (執行查詢)。

   事件會顯示在清單中。

1. 若要檢視事件的完整詳細資訊，請選擇事件。

# 對 Amazon ECS 任務定義無效的 CPU 或記憶體錯誤進行疑難排解
<a name="task-cpu-memory-error"></a>

使用 Amazon ECS API 註冊任務定義時 AWS CLI，或者，如果您指定無效的 `cpu`或 `memory`值，則會傳回下列錯誤。

```
An error occurred (ClientException) when calling the RegisterTaskDefinition operation: Invalid 'cpu' setting for task. 
```

**注意**  
使用 Terraform 時，可能會傳回如下錯誤。  

```
Error: ClientException: No Fargate configuration exists for given values.
```

若要解決這個問題，您必須為您任務定義中的任務 CPU 和記憶體指定受支援的值。此 `cpu` 值可以在任務定義中以 CPU 單位或 vCPU 表示。註冊任務定義時，此值會轉換為整數，表示 CPU 單位。此 `memory` 值可以在任務定義中以 MiB 或 GB 表示。註冊任務定義時，此值會轉換為整數，以 MiB 表示。

對於為 `requiresCompatibilities` 參數 (即使也指定了 `EC2`) 指定 `FARGATE` 的任務定義，您必須使用下表的其中一個值。這些值決定了 CPU 與記憶體參數的支援值範圍。

對於在 Fargate 上託管的任務，下表顯示了有效的 CPU 和記憶體組合。JSON 檔案中的記憶體值是以 MiB 為單位。您可以將 GB 值乘以 1024，將 GB值 轉換為 MiB。例如 1 GB = 1024 MiB。


|  CPU 數值  |  記憶體數值  |  AWS Fargate 支援的作業系統  | 
| --- | --- | --- | 
|  256 (.25 vCPU)  |  512 MiB、1 GB、2 GB  |  Linux  | 
|  512 (.5 vCPU)  |  1 GB、2 GB、3 GB、4 GB  |  Linux  | 
|  1024 (1 vCPU)  |  2 GB、3 GB、4 GB、5 GB、6 GB、7 GB、8 GB  |  Linux、Windows  | 
|  2048 (2 vCPU)  |  介於 4 GB 與 16 GB 之間，以 1 GB 為單位遞增  |  Linux、Windows  | 
|  4096 (4 vCPU)  |  介於 8 GB 與 30 GB 之間，以 1 GB 為單位遞增  |  Linux、Windows  | 
|  8192 (8 vCPU)  此選項需要 Linux 平台 `1.4.0` 或更新版本。   |  介於 16 GB 與 60 GB 之間，以 4 GB 為單位遞增  |  Linux  | 
|  16384 (16vCPU)  此選項需要 Linux 平台 `1.4.0` 或更新版本。   |  介於 32 GB 與 120 GB 之間，以 8 GB 為單位遞增  |  Linux  | 

對於 Amazon EC2 上託管的任務，支援的任務 CPU 值介於 0.25 vCPUs和 192 vCPUs之間。

EC2 與 Fargate 之間的 CPU 控制機制不同：
+ 對於 Amazon EC2 上託管的任務：Amazon ECS 透過 CPU 期間與 CPU 配額來控制任務大小的 CPU 硬性限制。當您在任務定義中指定 vCPU 時，Amazon ECS 會將值轉換為適用於 `cgroup` 的 CPU 期間與 CPU 配額設定。
+ 對於在 Fargate 上託管的任務：Amazon ECS 會透過 CPU 共用機制來控制 CPU 配置。在 Fargate 任務中，CPU 配額與期間值不會用於 CPU 限制。

對於 Amazon EC2 任務，CPU 配額會控制在特定 CPU 期間授予 `cgroup` 的 CPU 時間量。這兩個設定都以微秒表示。當 CPU 配額等於 CPU 期間時，表示 `cgroup` 最多可在一個 vCPU 上達到 100% 執行率 (若為多個 vCPU，則按相應比例總和達 100%)。CPU 配額上限為 1000000us，CPU 期間下限為 1ms。您可以使用這些值來設定 CPU 計數的限制。在不變更 CPU 配額的情況下變更 CPU 期間時，實際生效的限制會與您在任務定義中指定的值不同。

100 毫秒期間允許 0.125 至 10 範圍的 vCPU。

**注意**  
Windows 容器會忽略任務層級的 CPU 和記憶體參數。

# 檢視 Amazon ECS 容器代理程式日誌
<a name="logs"></a>

Amazon ECS 會將日誌存放在您容器執行個體的 `/var/log/ecs` 資料夾中。您可以從 Amazon ECS 容器代理程式和 `ecs-init` 服務中取得日誌，該服務控制容器執行個體上的代理程式狀態 (開始/停止)。您可以使用 SSH 連線到容器執行個體來檢視這些日誌檔。

**注意**  
如果您不確定如何收集您容器執行個體中的所有日誌，您可以使用 Amazon ECS 日誌收集器。如需詳細資訊，請參閱[使用 Amazon ECS 日誌收集器收集容器日誌](ecs-logs-collector.md)。

## Linux 作業系統
<a name="logs-linux"></a>

`ecs-init` 程序會將日誌存放在 `/var/log/ecs/ecs-init.log`。

`ecs-init.log` 檔案包含容器代理程式生命週期管理、組態與引導的相關資訊。

您可以使用下列命令來檢視日誌檔案。

```
cat /var/log/ecs/ecs-init.log
```

輸出：

```
2018-02-16T18:13:54Z [INFO] pre-start
2018-02-16T18:13:56Z [INFO] start
2018-02-16T18:13:56Z [INFO] No existing agent container to remove.
2018-02-16T18:13:56Z [INFO] Starting Amazon Elastic Container Service Agent
```

## Windows 作業系統
<a name="logs-windows"></a>

您可以使用適用於 Windows 的 Amazon ECS 日誌收集器。如需詳細資訊，請參閱 Github 上的 [Amazon ECS Logs Collector for Windows](https://github.com/awslabs/aws-ecs-logs-collector-for-windows?tab=readme-ov-file#aws-ecs-logs-collector-for-windows)。

1. 連線到您的執行個體。

1. 開啟 PowerShell，然後使用管理權限執行下列命令。命令會下載指令碼並收集日誌。

   ```
   Invoke-WebRequest -OutFile ecs-logs-collector.ps1 https://raw.githubusercontent.com/awslabs/aws-ecs-logs-collector-for-windows/master/ecs-logs-collector.ps1
   .\ecs-logs-collector.ps1
   ```

您可以啟用 Amazon ECS 代理程式與 Docker 常駐程式的偵錯記錄。此選項允許指令碼在啟用偵錯模式之前收集日誌。指令碼會重新啟動 Docker 常駐程式與 Amazon ECS 代理程式，然後終止執行個體上執行的所有容器。在執行下列命令之前，請排空容器執行個體，並將任何重要任務移至其他容器執行個體。

執行下列命令以啟用記錄。

```
.\ecs-logs-collector.ps1 -RunMode debug
```

# 使用 Amazon ECS 日誌收集器收集容器日誌
<a name="ecs-logs-collector"></a>

**注意**  
您無法在 Amazon ECS 受管執行個體上使用 Amazon ECS 日誌收集器。

如果您不確定如何收集您容器執行個體中的所有各種日誌，您可以使用 Amazon ECS 日誌收集器。此工具的 [Linux](https://github.com/awslabs/ecs-logs-collector) 和 [Windows](https://github.com/awslabs/aws-ecs-logs-collector-for-windows) 版本都可在 GitHub 上取得。指令碼會收集一般作業系統日誌以及 Docker 和 Amazon ECS 容器代理程式日誌，這有助於對 AWS 支援 案例進行故障診斷。然後，它會將所收集的資訊壓縮並封存為單一檔案，輕鬆共用於診斷目的。也支援為 Docker 常駐程式和 Amazon Linux 變體上的 Amazon ECS 容器代理程式 (例如 Amazon ECS 最佳化 AMI) 啟用除錯模式。

**注意**  
在 Amazon Linux Amazon ECS 最佳化 AMIs版本 20250909 和更新版本上，Amazon ECS 日誌收集器會預先安裝在 `/opt/amazon/ecs/ecs-logs-collector.sh`並隨時可用，無需從 GitHub 下載。如需詳細資訊，請參閱 [ECS 最佳化 AMI 文件中的 ECS Logs Collector](https://github.com/aws/amazon-ecs-ami?tab=readme-ov-file#ecs-logs-collector)。

目前，Amazon ECS 日誌收集器支援下列作業系統：
+ Amazon Linux
+ Red Hat Enterprise Linux
+ Ubuntu
+ Windows Server

**執行 Linux 的 Amazon ECS 日誌收集器 (ECS 最佳化 AMI)**

1. 連線到您的容器執行個體。

1. 執行指令碼以收集日誌並建立封存。
**注意**  
若要為 Docker 常駐程式與 Amazon ECS 容器代理程式啟用偵錯模式，請在以下命令中新增 `--mode=enable-debug` 選項。這會重新啟動 Docker 常駐程式，終止在執行個體上執行的所有容器。請考慮耗盡容器執行個體，並將任何重要的任務先移到其他容器執行個體，再啟用除錯模式。如需詳細資訊，請參閱[排空 Amazon ECS 容器執行個體](container-instance-draining.md)。

   ```
   [ec2-user ~]$ sudo /opt/amazon/ecs/ecs-logs-collector.sh
   ```

在您執行指令碼之後，您可以在指令碼建立的 `collect` 資料夾中檢查收集到的日誌。`collect.tgz` 檔案是所有日誌的壓縮封存檔，您可以與 共用以 AWS 支援 尋求診斷協助。

**下載並執行 Linux 版的 Amazon ECS 日誌收集器**

1. 連線到您的容器執行個體。

1. 下載 Amazon ECS 日誌收集器指令碼。

   ```
   curl -O https://raw.githubusercontent.com/awslabs/ecs-logs-collector/master/ecs-logs-collector.sh
   ```

1. 執行指令碼以收集日誌並建立封存。

   ```
   $ sudo bash ./ecs-logs-collector.sh
   ```

**下載並執行 Windows 版的 Amazon ECS 日誌收集器**

1. 連線到您的容器執行個體。如需詳細資訊，請參閱 the *Amazon EC2 User Guide* 中的 [Connect to your Windows instance using RDP](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connecting_to_windows_instance.html)。

1. 使用 PowerShell 下載 Amazon ECS 日誌收集器指令碼。

   ```
   Invoke-WebRequest -OutFile ecs-logs-collector.ps1 https://raw.githubusercontent.com/awslabs/aws-ecs-logs-collector-for-windows/master/ecs-logs-collector.ps1
   ```

1. 執行指令碼以收集日誌並建立封存。
**注意**  
若要為 Docker 常駐程式與 Amazon ECS 容器代理程式啟用偵錯模式，請在以下命令中新增 `-RunMode debug` 選項。這會重新啟動 Docker 常駐程式，它會終止在執行個體上執行的所有容器。請考慮耗盡容器執行個體，並將任何重要的任務先移到其他容器執行個體，再啟用除錯模式。如需詳細資訊，請參閱[排空 Amazon ECS 容器執行個體](container-instance-draining.md)。

   ```
   .\ecs-logs-collector.ps1
   ```

在您執行指令碼之後，您可以在指令碼建立的 `collect` 資料夾中檢查收集到的日誌。`collect.tgz` 檔案是所有日誌的壓縮封存檔，您可以與 AWS Support 共用，以取得診斷協助。

# 透過代理程式自我檢查功能擷取 Amazon ECS 診斷詳細資訊
<a name="introspection-diag"></a>

Amazon ECS 代理程式自我檢查 API 提供 Amazon ECS 代理程式與容器執行個體整體狀態的相關資訊。

 例如，您可以透過代理程式自我檢查 API 取得任務容器的 Docker ID。您可以使用 SSH 連線到容器執行個體，使用代理自我檢查 API。

**重要**  
您的容器執行個體必須擁有允許存取 Amazon ECS 以連接自我檢查 API 的 IAM 角色。如需詳細資訊，請參閱[Amazon ECS 容器執行個體 IAM 角色](instance_IAM_role.md)。

下例顯示兩個任務，一個目前正在執行，一個已停止。

**注意**  
以下命令透過 **python -mjson.tool** 進行管道輸送，以取得更佳的可讀性。

```
curl http://localhost:51678/v1/tasks | python -mjson.tool
```

輸出：

```
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1095  100  1095    0     0   117k      0 --:--:-- --:--:-- --:--:--  133k
{
    "Tasks": [
        {
            "Arn": "arn:aws:ecs:us-west-2:aws_account_id:task/090eff9b-1ce3-4db6-848a-a8d14064fd24",
            "Containers": [
                {
                    "DockerId": "189a8ff4b5f04affe40e5160a5ffadca395136eb5faf4950c57963c06f82c76d",
                    "DockerName": "ecs-console-sample-app-static-6-simple-app-86caf9bcabe3e9c61600",
                    "Name": "simple-app"
                },
                {
                    "DockerId": "f7f1f8a7a245c5da83aa92729bd28c6bcb004d1f6a35409e4207e1d34030e966",
                    "DockerName": "ecs-console-sample-app-static-6-busybox-ce83ce978a87a890ab01",
                    "Name": "busybox"
                }
            ],
            "Family": "console-sample-app-static",
            "KnownStatus": "STOPPED",
            "Version": "6"
        },
        {
            "Arn": "arn:aws:ecs:us-west-2:aws_account_id:task/1810e302-eaea-4da9-a638-097bea534740",
            "Containers": [
                {
                    "DockerId": "dc7240fe892ab233dbbcee5044d95e1456c120dba9a6b56ec513da45c38e3aeb",
                    "DockerName": "ecs-console-sample-app-static-6-simple-app-f0e5859699a7aecfb101",
                    "Name": "simple-app"
                },
                {
                    "DockerId": "096d685fb85a1ff3e021c8254672ab8497e3c13986b9cf005cbae9460b7b901e",
                    "DockerName": "ecs-console-sample-app-static-6-busybox-92e4b8d0ecd0cce69a01",
                    "Name": "busybox"
                }
            ],
            "DesiredStatus": "RUNNING",
            "Family": "console-sample-app-static",
            "KnownStatus": "RUNNING",
            "Version": "6"
        }
    ]
}
```

在上例中，停止的任務 (*090eff9b-1ce3-4db6-848a-a8d14064fd24*) 有兩個容器。您可以使用 **docker inspect *container-ID*** 以檢視每個容器的詳細資訊。如需詳細資訊，請參閱[Amazon ECS 容器自我檢查](ecs-agent-introspection.md)。

# Amazon ECS 中的 Docker 診斷
<a name="docker-diags"></a>

Docker 提供數種診斷工具，可協助您對容器和任務問題進行故障診斷。如需有關所有可用 Docker 命令列公用程式的詳細資訊，請參閱 Docker 文件中的 [Docker CLI reference](https://docs.docker.com/reference/cli/docker/)。您可以使用 SSH 連線到容器執行個體，存取 Docker 命令列公用程式。

Docker 容器回報的結束代碼，也可以提供一些診斷資訊 (例如，結束代碼 137 表示容器收到 `SIGKILL` 訊號)。如需詳細資訊，請參閱 Docker 文件中的「[結束狀態](https://docs.docker.com/reference/cli/docker/container/run/#exit-status)」。

## 在 Amazon ECS 中列出 Docker 容器
<a name="docker-ps"></a>

您可以在您的容器執行個體中使用 **docker ps** 命令列出執行中的容器。在以下範例中，只有 Amazon ECS 容器代理程式在執行中。如需詳細資訊，請參閱 Docker 文件中的 [docker ps](https://docs.docker.com/reference/cli/docker/#ps)。

```
docker ps
```

輸出：

```
CONTAINER ID        IMAGE                            COMMAND             CREATED             STATUS              PORTS                        NAMES
cee0d6986de0        amazon/amazon-ecs-agent:latest   "/agent"            22 hours ago        Up 22 hours         127.0.0.1:51678->51678/tcp   ecs-agent
```

您可以使用 **docker ps -a** 命令查看所有容器 (甚至是停止或終止的容器)。這有助於列出未預期停止的容器。在下列範例中，容器 `f7f1f8a7a245` 已在 9 秒前結束，所以 `-a` 旗標會出現在 **docker ps** 輸出中。

```
docker ps -a
```

輸出：

```
CONTAINER ID        IMAGE                                       COMMAND                CREATED             STATUS                        PORTS                        NAMES
db4d48e411b1        amazon/ecs-emptyvolume-base:autogenerated   "not-applicable"       19 seconds ago                                                                 ecs-console-sample-app-static-6-internalecs-emptyvolume-source-c09288a6b0cba8a53700
f7f1f8a7a245        busybox:buildroot-2014.02                   "\"sh -c '/bin/sh -c   22 hours ago        Exited (137) 9 seconds ago                                 ecs-console-sample-app-static-6-busybox-ce83ce978a87a890ab01
189a8ff4b5f0        httpd:2                                     "httpd-foreground"     22 hours ago        Exited (137) 40 seconds ago                                ecs-console-sample-app-static-6-simple-app-86caf9bcabe3e9c61600
0c7dca9321e3        amazon/ecs-emptyvolume-base:autogenerated   "not-applicable"       22 hours ago                                                                   ecs-console-sample-app-static-6-internalecs-emptyvolume-source-90fefaa68498a8a80700
cee0d6986de0        amazon/amazon-ecs-agent:latest              "/agent"               22 hours ago        Up 22 hours                   127.0.0.1:51678->51678/tcp   ecs-agent
```

## 在 Amazon ECS 中檢視 Docker 日誌
<a name="docker-logs"></a>

您可以使用 **docker logs** 命令檢視容器的 `STDOUT` 和 `STDERR` 串流。在此範例中，會顯示 *dc7240fe892a* 容器的日誌，並為簡潔起見使用 **head** 命令以管道輸送。如需詳細資訊，請前往 Docker 文件中的 [docker logs](https://docs.docker.com/reference/cli/docker/#logs)。

**注意**  
若您使用預設的 `json` 日誌驅動程式，則 Docker 日誌僅適用於容器執行個體。如果您已使用 `awslogs` 日誌驅動程式設定任務，即可在 CloudWatch Logs 中找到容器日誌。如需詳細資訊，請參閱[將 Amazon ECS 日誌傳送至 CloudWatch](using_awslogs.md)。

```
docker logs dc7240fe892a | head
```

輸出：

```
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.11. Set the 'ServerName' directive globally to suppress this message
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.11. Set the 'ServerName' directive globally to suppress this message
[Thu Apr 23 19:48:36.956682 2015] [mpm_event:notice] [pid 1:tid 140327115417472] AH00489: Apache/2.4.12 (Unix) configured -- resuming normal operations
[Thu Apr 23 19:48:36.956827 2015] [core:notice] [pid 1:tid 140327115417472] AH00094: Command line: 'httpd -D FOREGROUND'
10.0.1.86 - - [23/Apr/2015:19:48:59 +0000] "GET / HTTP/1.1" 200 348
10.0.0.154 - - [23/Apr/2015:19:48:59 +0000] "GET / HTTP/1.1" 200 348
10.0.1.86 - - [23/Apr/2015:19:49:28 +0000] "GET / HTTP/1.1" 200 348
10.0.0.154 - - [23/Apr/2015:19:49:29 +0000] "GET / HTTP/1.1" 200 348
10.0.1.86 - - [23/Apr/2015:19:49:50 +0000] "-" 408 -
10.0.0.154 - - [23/Apr/2015:19:49:50 +0000] "-" 408 -
10.0.1.86 - - [23/Apr/2015:19:49:58 +0000] "GET / HTTP/1.1" 200 348
10.0.0.154 - - [23/Apr/2015:19:49:59 +0000] "GET / HTTP/1.1" 200 348
10.0.1.86 - - [23/Apr/2015:19:50:28 +0000] "GET / HTTP/1.1" 200 348
10.0.0.154 - - [23/Apr/2015:19:50:29 +0000] "GET / HTTP/1.1" 200 348
time="2015-04-23T20:11:20Z" level="fatal" msg="write /dev/stdout: broken pipe"
```

## 在 Amazon ECS 中檢查 Docker 容器
<a name="docker-inspect"></a>

如果您有容器的 Docker ID，您可以使用 **docker inspect** 命令來檢查該 Docker ID。檢查容器可提供最詳細的容器啟動環境檢視。如需詳細資訊，請參閱 Docker 文件中的 [docker inspect](https://docs.docker.com/reference/cli/docker/#inspect)。

```
docker inspect dc7240fe892a
```

輸出：

```
[{
    "AppArmorProfile": "",
    "Args": [],
    "Config": {
        "AttachStderr": false,
        "AttachStdin": false,
        "AttachStdout": false,
        "Cmd": [
            "httpd-foreground"
        ],
        "CpuShares": 10,
        "Cpuset": "",
        "Domainname": "",
        "Entrypoint": null,
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/apache2/bin",
            "HTTPD_PREFIX=/usr/local/apache2",
            "HTTPD_VERSION=2.4.12",
            "HTTPD_BZ2_URL=https://www.apache.org/dist/httpd/httpd-2.4.12.tar.bz2"
        ],
        "ExposedPorts": {
            "80/tcp": {}
        },
        "Hostname": "dc7240fe892a",
...
```

# 在 Amazon ECS 中設定 Docker 常駐程式的詳細輸出
<a name="docker-debug-mode"></a>

如果使用 Docker 容器或映像時發生問題，您可以在 Docker 常駐程式中啟用偵錯模式。啟用偵錯功能可提供更多常駐程式的詳細輸出，您可透過該功能擷取從容器登錄檔 (例如 Amazon ECR) 傳送的錯誤訊息。

**重要**  
此程序是針對 Amazon ECS 最佳化 Amazon Linux AMI 所寫入。其他作業系統請參閱 Docker 文件中的 [Enable debugging](https://docs.docker.com/engine/admin/#enable-debugging) 和 [Control and configure Docker with systemd]()。

**在 Amazon ECS 最佳化 Amazon Linux AMI 中使用 Docker 常駐程式偵錯模式**

1. 連線到您的容器執行個體。

1. 使用文字編輯器開啟 Docker 選項檔案，例如 **vi**。對於 Amazon ECS 最佳化 Amazon Linux AMI，Docker 選項檔案位於 `/etc/sysconfig/docker`。

1. 尋找 Docker 選項陳述式，並在字串中新增以引號括住的 `-D` 選項。
**注意**  
如果 Docker 選項陳述式以 `#` 開頭，請移除該字元以取消陳述式註解並啟用選項。

   對於 Amazon ECS 最佳化 Amazon Linux AMI，Docker 選項陳述式稱為 `OPTIONS`。例如：

   ```
   # Additional startup options for the Docker daemon, for example:
   # OPTIONS="--ip-forward=true --iptables=true"
   # By default we limit the number of open files per container
   OPTIONS="-D --default-ulimit nofile=1024:4096"
   ```

1. 儲存檔案並結束您的文字編輯器。

1. 重新啟動 Docker 常駐程式。

   ```
   sudo service docker restart
   ```

   其輸出如下：

   ```
   Stopping docker:                                          [  OK  ]
   Starting docker:	.                                  [  OK  ]
   ```

1. 重新啟動 Amazon ECS 代理。

   ```
   sudo service ecs restart
   ```

您的 Docker 日誌現在應該會顯示更多的詳細輸出。

```
time="2015-12-30T21:48:21.907640838Z" level=debug msg="Unexpected response from server: \"{\\\"errors\\\":[{\\\"code\\\":\\\"DENIED\\\",\\\"message\\\":\\\"User: arn:aws:sts::1111:assumed-role/ecrReadOnly/i-abcdefg is not authorized to perform: ecr:InitiateLayerUpload on resource: arn:aws:ecr:us-east-1:1111:repository/nginx_test\\\"}]}\\n\" http.Header{\"Connection\":[]string{\"keep-alive\"}, \"Content-Type\":[]string{\"application/json; charset=utf-8\"}, \"Date\":[]string{\"Wed, 30 Dec 2015 21:48:21 GMT\"}, \"Docker-Distribution-Api-Version\":[]string{\"registry/2.0\"}, \"Content-Length\":[]string{\"235\"}}"
```

# 在 Amazon ECS 中對 Docker `API error (500): devmapper` 進行疑難排解
<a name="CannotCreateContainerError"></a>

以下 Docker 錯誤指出，您容器執行個體上的精簡集區儲存已滿，Docker 常駐程式無法建立新的容器：

```
CannotCreateContainerError: API error (500): devmapper: Thin Pool has 4350 free data blocks which is less than minimum required 4454 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior 
```

根據預設，`2015.09.d` 版和更新版本的 Amazon ECS 最佳化 Amazon Linux AMI 會使用作業系統的 8 GiB 磁碟區啟動，此作業系統連接於 `/dev/xvda`，而且掛載為檔案系統的根目錄。另有一個 22 GiB 的磁碟區連接在 `/dev/xvdcz`，Docker 用於儲存映像和中繼資料。如果這個儲存空間已滿，則 Docker 常駐程式無法建立新的容器。

要將儲存體新增到您的容器執行個體，最簡單方式是終止現有的執行個體，並啟動有較大資料儲存體磁碟區的新執行個體。不過，如果您無法執行此作業，您可以遵循 [Amazon ECS 最佳化 Linux AMI](ecs-optimized_AMI.md) 中的程序，在 Docker 所用的磁碟區群組新增儲存，並擴展其邏輯磁碟區。

如果您的容器執行個體儲存體太快填滿，您可以採取幾個動作降低此效果：
+ 若要檢視精簡輪詢資訊，請在您的容器執行個體上執行下列命令：

  ```
  docker info
  ```
+ (Amazon ECS 容器代理程式 1.8.0 版和更新版本) 您可以縮短已停止或結束的容器保留在您容器執行個體中的時間。`ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION` 代理組態變數會將時間設為從任務停止等到 Docker 容器移除 (此值預設為 3 小時)。這會移除 Docker 容器的資料。如果此值設定得太低，您可能無法檢查已停止的容器，或無法在容器移除之前檢視日誌。如需詳細資訊，請參閱[Amazon ECS 容器代理程式組態](ecs-agent-config.md)。
+ 您可以從容器執行個體移除非執行中的容器與閒置的映像。您可以使用以下範例命令，手動移除已停止的容器和未使用的映像。容器在刪除之後即無法檢查，而已刪除的映像必須得再次提取，才能從中啟動新的容器。

  若要移除非執行中的容器，請在您的容器執行個體上執行以下命令：

  ```
  docker rm $(docker ps -aq)
  ```

  若要移除未使用的映像，請在您的容器執行個體上執行以下命令：

  ```
  docker rmi $(docker images -q)
  ```
+ 您可以移除容器內閒置的資料區塊。您可以使用下列命令在任何執行中的容器上執行 **fstrim**，並捨棄容器檔案系統未使用的任何資料區塊。

  ```
  sudo sh -c "docker ps -q | xargs docker inspect --format='{{ .State.Pid }}' | xargs -IZ fstrim /proc/Z/root/"
  ```

# 對 Amazon ECS Exec 問題進行疑難排解
<a name="ecs-exec-troubleshooting"></a>

以下是故障診斷注意事項，可協助診斷您在使用 ECS Exec 時可能會出現錯誤的原因。

## 透過 Exec 檢查程式進行驗證
<a name="ecs-exec-troubleshooting-checker"></a>

ECS Exec 檢查程式指令碼提供了確認與驗證 Amazon ECS 叢集及任務是否符合使用 ECS Exec 功能之先決條件的方法。ECS Exec Checker 指令碼會代表您呼叫各種 APIs，以驗證您的 AWS CLI 環境和叢集和任務都已準備好供 ECS Exec 使用。工具需要最新版本的 AWS CLI 和 `jq` 可供使用的 。如需詳細資訊，請參閱 GitHub 上的 [ECS Exec Checker](https://github.com/aws-containers/amazon-ecs-exec-checker)。

## 呼叫 `execute-command` 時發生錯誤
<a name="ecs-exec-troubleshooting-general"></a>

如果發生 `The execute command failed` 錯誤，則可能的原因如下。
+ 此任務沒有必要的許可。確認用來啟動任務的任務定義已定義任務 IAM 角色，且該角色具有必要的許可。如需詳細資訊，請參閱[ECS Exec 許可](task-iam-roles.md#ecs-exec-required-iam-permissions)。
+ 尚未安裝或未執行 SSM 代理程式。
+  有一個適用於 Amazon ECS 的 Amazon VPC 端點，但沒有一個適用於 Systems Manager Session Manager 的介面。

# 對 Amazon ECS Anywhere 問題進行疑難排解
<a name="ecs-anywhere-troubleshooting"></a>

Amazon ECS Anywhere 支援將*外部執行個體* (例如內部部署伺服器或虛擬機器) 註冊至 Amazon ECS 叢集。以下是您可能會遇到的常見問題，及其一般故障診斷建議。

**Topics**
+ [外部執行個體註冊問題](#ecs-anywhere-troubleshooting-registration)
+ [外部執行個體網路問題](#ecs-anywhere-troubleshooting-networking)
+ [在外部執行個體上執行任務的問題](#ecs-anywhere-troubleshooting-runtask)

## 外部執行個體註冊問題
<a name="ecs-anywhere-troubleshooting-registration"></a>

在 Amazon ECS 叢集註冊外部執行個體時，必須符合以下要求：
+ 必須擷取由*啟用 ID* 和*啟用代碼*組成的 AWS Systems Manager 啟用。您可以使用它來將外部執行個體註冊為 Systems Manager 受管執行個體。請求 Systems Manager 啟用憑證時，需指定註冊數量限制與到期日。註冊限制指定使用啟用時可註冊的執行個體數目上限。註冊限制的預設值為 `1` 個執行個體。過期日期指定啟用的過期時間。預設值為 24 小時。如果您用來註冊外部執行個體的 Systems Manager 啟用無效，則請求新的執行個體。如需詳細資訊，請參閱[將外部執行個體註冊到 Amazon ECS 叢集](ecs-anywhere-registration.md)。
+ IAM 政策用於為您的外部執行個體提供與 AWS API 操作通訊所需的許可。如果未正確建立此受管政策，且不包含必要的許可，則外部執行個體註冊會失敗。如需詳細資訊，請參閱[Amazon ECS Anywhere IAM 角色](iam-role-ecsanywhere.md)。
+ Amazon ECS 提供安裝指令碼，可在外部執行個體上安裝 Docker、Amazon ECS 容器代理程式和 Systems Manager Agent。如果安裝指令碼失敗，則指令碼很可能無法在不發生錯誤的情形下在同一個執行個體上再次執行。如果發生這種情況，請依照清除程序從執行個體清除 AWS 資源，以便再次執行安裝指令碼。如需詳細資訊，請參閱[取消註冊 Amazon ECS 外部執行個體](ecs-anywhere-deregistration.md)。
**注意**  
請注意，如果成功請求安裝指令碼並使用 Systems Manager 啟用，則第二次執行安裝指令碼會再次使用 Systems Manager 啟用。這轉而可能會導致您達到該啟用的註冊限制。如果達到此限制，則您必須建立新的啟用。
+ 在 GPU 工作負載的外部執行個體上執行安裝指令碼時，如果未偵測到或未正確設定 NVIDIA 驅動程式，則會出現錯誤。安裝指令碼使用 `nvidia-smi` 命令來確認 NVIDIA 驅動程式的存在。

## 外部執行個體網路問題
<a name="ecs-anywhere-troubleshooting-networking"></a>

若要傳達任何變更，您的外部執行個體需要 AWS網路連線。如果您的外部執行個體失去其網路連線 AWS，則在執行個體上執行的任務仍會繼續執行，除非手動停止。 AWS 還原與 的連線後，Amazon ECS 容器代理程式和 Systems Manager 代理程式在外部執行個體上使用的 AWS 登入資料會自動續約。如需用於外部執行個體與 之間通訊之 AWS 網域的詳細資訊 AWS，請參閱 [聯網](ecs-anywhere.md#ecs-anywhere-networking)。

## 在外部執行個體上執行任務的問題
<a name="ecs-anywhere-troubleshooting-runtask"></a>

如果您的任務或容器無法在外部執行個體上執行，最常見的原因是網路或許可相關問題。如果您的容器從 Amazon ECR 提取其映像，或者設定為將容器日誌傳送到 CloudWatch Logs，則您的任務定義必須指定有效的任務執行 IAM 角色。如果沒有有效的任務執行 IAM 角色，則您的容器將無法啟動。如需網路相關問題的詳細資訊，請參閱 [外部執行個體網路問題](#ecs-anywhere-troubleshooting-networking)。

**重要**  
Amazon ECS 提供了 Amazon ECS 日誌收集工具。您可以將其用於從外部執行個體收集日誌，以進行故障診斷。如需詳細資訊，請參閱[使用 Amazon ECS 日誌收集器收集容器日誌](ecs-logs-collector.md)。

# 對 Fargate 上的 Java 類別載入問題進行疑難排解
<a name="fargate-java-class-loading"></a>

在 Fargate 上執行的 Java 應用程式可能會在平台更新後遇到類別載入問題，特別是當應用程式依賴於非確定性類別載入行為時。這可能會表現為相依性注入錯誤、Spring Boot 失敗，或先前部署中不存在的其他執行時期例外狀況。

## 徵狀
<a name="java-class-loading-symptoms"></a>

您可能會遇到下列症狀：
+ Spring Boot 相依性注入錯誤
+ ClassNotFoundException 或 NoClassDefFoundError 例外狀況
+ 先前在 Fargate 上正常執行的應用程式現在會間歇性失敗
+ 相同的容器映像可在 Amazon EC2 上運作，但在 Fargate 上失敗
+ 相同容器映像在不同部署間行為不一致

## 原因
<a name="java-class-loading-causes"></a>

這些問題通常由下列原因所致：
+ **非確定性類別載入：**當底層平台變更檔案的存取或快取方式時，依賴於從 JAR 檔案載入類別順序的 Java 應用程式可能會失敗。
+ **平台更新：**Fargate 平台版本更新可能會變更底層檔案系統行為，影響探索與載入類別的順序。
+ **JAR 檔案排序相依性：**在未經明確相依性管理，而隱含依賴特定 JAR 載入順序的應用程式。

## Resolution
<a name="java-class-loading-resolution"></a>

若要解決 Fargate 上的 Java 類別載入問題，請實作確定性類別載入實務：

### 立即修正
<a name="java-class-loading-immediate-fix"></a>

如果您需要立即解決方法：

1. **強制指定 JAR 載入順序：**明確指定在應用程式的 classpath 組態中載入 JAR 檔案的順序。

1. **使用明確相依性管理：**確保在建置組態 (Maven、Gradle 等) 中明確宣告所有相依性，而不是依賴暫時性相依性。

### 長期最佳實務
<a name="java-class-loading-best-practices"></a>

實作這些實務，防止未來會出現的類別載入問題：

1. **確保類別載入具有決定性：**
   + 在建置檔案中使用明確的相依性宣告
   + 避免依賴 classpath 掃描順序
   + 使用相依性管理工具來解決版本衝突
   + 使用 Java 虛擬機器 (JVM) 選項，例如 `-verbose:class` 來取得 JVM 所載入類別的相關資訊。

1. **Spring Boot 應用程式：**
   + 將 `@ComponentScan` 搭配明確的基本套件使用
   + 明確設定 Bean 以避免自動設定衝突
   + 使用 `@DependsOn` 註釋來控制 Bean 初始化順序

1. **建置組態：**
   + 使用 Maven 或 Gradle 中的相依性管理區段
   + 排除造成衝突的暫時性相依性
   + 使用 Maven Enforcer 外掛程式等工具來偵測相依性問題

1. **測試：**
   + 使用不同的 JVM 實作測試應用程式
   + 執行模擬不同部署環境的整合測試
   + 使用工具分析開發期間的 classpath 衝突

## 預防
<a name="java-class-loading-prevention"></a>

若要防止未來部署中出現 Java 類別載入問題：
+ **遵循決定性類別載入實務：**設計應用程式，使其不依賴從 classpath 載入類別的順序。
+ **使用明確相依性管理：**一律在建置組態中明確宣告所有必要的相依性及其版本。
+ **跨環境測試：**定期測試不同環境與平台版本的應用程式，及早識別潛在問題。
+ **監控平台更新：**隨時掌握 Fargate 平台更新，並在新平台版本影響生產工作負載之前測試應用程式。

# AWS Fargate 調節配額
<a name="throttling"></a>

AWS Fargate 會使用 AWS 每個區域的[權杖儲存貯體演算法](https://en.wikipedia.org/wiki/Token_bucket)，將 Amazon ECS 任務和 Amazon EKS Pod 啟動率限制為配額 （先前稱為限制）。使用此演算法，您的帳戶擁有儲存特定數量字符的儲存貯體。儲存貯體中的字符數量代表您在任何指定秒數的速率配額。每個客戶帳戶都有一個任務和 Pod 字符儲存貯體，會根據客戶帳戶啟動的任務和 Pod 的數量耗盡。此字符儲存貯體具有允許您定期提出更多請求的儲存貯體最大值，以及允許您在需要時保持穩定的請求速率的重新填滿速率。

例如，Fargate 客戶帳戶的任務和 Pod 字符儲存貯體大小為 100 個字符，重新填滿速率為每秒 20 個字符。因此，您可以立即啟動 Amazon ECS 任務和 Amazon EKS Pod (每個客戶帳戶最多 100 個)，持續啟動速率為每秒 20 個 Amazon ECS 任務和 Amazon EKS Pod。


| 動作 | 儲存貯體容量上限 (或爆量率) | 儲存貯體重新填滿速率 (或持續速率) | 
| --- | --- | --- | 
| 隨需型 Amazon ECS 任務和 Amazon EKS Pod 的 Fargate 資源速率配額[1](#fargate-throttling-note-1) | 100 | 20 | 
| Spot Amazon ECS 任務的 Fargate 資源速率配額 | 100 | 20 | 

<a name="fargate-throttling-note-1"></a>1使用 [Amazon EKS 平台版本](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html)中提到的平台版本時，僅啟動 Amazon EKS Pod 的帳戶爆量率為 20，Pod 的持續啟動速率為每秒 20 次。

## 在 Fargate 中對 `RunTask` API 進行限流
<a name="fargate-throttling-runtask"></a>

此外，Fargate 在以單獨配額使用 Amazon ECS `RunTask` API 啟動任務時會限制請求速率。Fargate 會根據區域限制每個 AWS 帳戶的 Amazon ECS `RunTask` API 請求。您每提出一個請求，就會從儲存貯體中刪除一個字符。我們這樣做是為了協助服務效能，並確保所有 Fargate 客戶的公平使用。無論 API 呼叫來自 Amazon Elastic Container Service 主控台、命令列工具還是第三方應用程式，API 呼叫都會受限於請求配額。呼叫 Amazon ECS `RunTask` API 的速率配額是每秒 20 次呼叫 (爆量和持續)。不過，每次呼叫此 API 最多可啟動 10 個任務。這表示您可以在一秒鐘內對此 API 進行 10 次呼叫，請求在每次呼叫中啟動 10 個任務，從而實現在一秒鐘內啟動 100 個任務。同理，您也可以對此 API 進行 20 次呼叫，請求在每次呼叫中啟動 5 個任務。如需有關 Amazon ECS `RunTask` API 的 API 限流的詳細資訊，請參閱 Amazon ECS API Reference 中的 [API request throttling](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/request-throttling.html)。

實際上，任務和 Pod 啟動速率還取決於其他注意事項，例如要下載和解壓縮的容器映像、運作狀態檢查以及啟用的其他整合 (例如向負載平衡器註冊任務或 Pod)。根據客戶啟用的功能，客戶將看到任務和 Pod 啟動速率與上述配額相比的變化。

## 在 Fargate 中調整速率配額
<a name="fargate-throttling-increase"></a>

您可為 AWS 帳戶請求增加 Fargate 速率調節配額。如需詳細資訊，請參閱《Service Quotas 使用者指南》中的[請求增加配額](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)。

# 對 Amazon ECS 受管執行個體進行疑難排解
<a name="troubleshooting-managed-instances-complete"></a>

使用以下程序對 Amazon ECS 受管執行個體進行故障診斷，包括常見問題、診斷技術和解決步驟。

## 先決條件
<a name="prerequisites"></a>

對 Amazon ECS 受管執行個體進行故障診斷之前，請確定您已備妥下列要求。
+  AWS CLI 已安裝並設定適當的許可

  如需詳細資訊，請參閱 *AWS Command Line Interface User Guide* 中的 [Installing or updating to the latest version of the AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。
+ 使用 Amazon ECS 受管執行個體容量提供者存取叢集。如需詳細資訊，請參閱[為 Amazon ECS 受管執行個體建立叢集](create-cluster-managed-instances.md)。

## 常見的疑難排解案例：
<a name="common-troubleshooting-scenarios"></a>

### 檢視 Amazon ECS 受管執行個體容器代理程式日誌
<a name="viewing-container-agent-logs"></a>

您可以透過連線至在執行個體中執行的特權容器，在 Amazon ECS 受管執行個體中檢視這些 Amazon ECS 日誌檔案。

#### 診斷步驟
<a name="diagnostic-steps-logs"></a>

**部署具有權限和 Linux 功能的偵錯容器做為 Amazon ECS 任務：**

設定下列環境變數。

將 *user-input* 取代為實際值。

```
export ECS_CLUSTER_NAME="your-cluster-name"
export AWS_REGION="your-region"
export ACCOUNT_ID="your-account-id"
```

使用名為 的 CLI JSON 檔案建立任務定義`node-debugger.json`。

```
cat << EOF > node-debugger.json
{
  "family": "node-debugger",
  "taskRoleArn": "arn:aws:iam::${ACCOUNT_ID}:role/ecsTaskExecutionRole",
  "executionRoleArn": "arn:aws:iam::${ACCOUNT_ID}:role/ecsTaskExecutionRole",
  "cpu": "256",
  "memory": "1024",
  "networkMode": "host",
  "pidMode": "host",
  "requiresCompatibilities": ["MANAGED_INSTANCES", "EC2"],
  "containerDefinitions": [
    {
      "name": "node-debugger",
      "image": "public.ecr.aws/amazonlinux/amazonlinux:2023",
      "essential": true,
      "privileged": true,
      "command": ["sleep", "infinity"],
      "healthCheck": {
          "command": ["CMD-SHELL", "echo debugger || exit 1"],
          "interval": 30,
          "retries": 3,
          "timeout": 5
      },
      "linuxParameters": {
        "initProcessEnabled": true
      },
      "mountPoints": [
        {
          "sourceVolume": "host-root",
          "containerPath": "/host",
          "readOnly": false
        }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/aws/ecs/node-debugger",
          "awslogs-create-group": "true",
          "awslogs-region": "${AWS_REGION}",
          "awslogs-stream-prefix": "ecs"
        }
      }
    }
  ],
  "volumes": [
    {
      "name": "host-root",
      "host": {
        "sourcePath": "/"
      }
    }
  ]
}
EOF
```

註冊，然後執行任務。執行下列命令。

```
aws ecs register-task-definition --cli-input-json file://node-debugger.json

TASK_ARN=$(aws ecs run-task \
  --cluster $ECS_CLUSTER_NAME \
  --task-definition node-debugger \
  --enable-execute-command \
  --capacity-provider-strategy capacityProvider=managed-instances-default,weight=1 \
  --query 'tasks[0].taskArn' --output text)

# Wait for task to be running
aws ecs wait tasks-running --cluster $ECS_CLUSTER_NAME --tasks $TASK_ARN
```

連線至容器。執行下列命令。

```
aws ecs execute-command \
  --cluster $ECS_CLUSTER_NAME \
  --task $TASK_ARN \
  --container node-debugger \
  --interactive \
  --command "/bin/sh"
```

**檢查 Amazon ECS 代理程式日誌：**

在容器的互動式工作階段中，執行下列命令：

```
# Install required tools
yum install -y util-linux-core

# View ECS agent logs
nsenter -t 1 -m -p cat /var/log/ecs/ecs-agent.log | tail -50

# Check agent registration
nsenter -t 1 -m -p grep "Registered container instance" /var/log/ecs/ecs-agent.log

Example Output:

{"level":"info","time":"2025-10-16T12:39:37.665","msg":"Registered container instance with cluster!"}

# Verify capabilities
nsenter -t 1 -m -p grep "Response contained expected value for attribute" /var/log/ecs/ecs-agent.log
```

**檢查客服人員指標：**

執行下列命令以檢視日誌。

```
# View metrics logs
nsenter -t 1 -m -p cat /var/log/ecs/metrics.log | tail -20
```

### 任務置放問題
<a name="task-placement-issues"></a>

以下是任務置放問題的症狀：
+ 任務卡在 PENDING 狀態
+ 任務無法在 Amazon ECS 受管執行個體上啟動
+ 資源不足錯誤

#### 診斷步驟
<a name="task-placement-diagnostic"></a>

執行下列命令來診斷任務置放問題，並收集叢集容量、容器執行個體和系統服務的相關資訊：

```
# Check cluster capacity
aws ecs describe-clusters --clusters cluster-name --include STATISTICS

# Check cluster capacity providers
aws ecs describe-clusters --clusters cluster-name --include STATISTICS --query 'clusters[].capacityProviders'

# List container instances
aws ecs list-container-instances --cluster cluster-name

# Check container instance details
aws ecs describe-container-instances --cluster cluster-name --container-instances container-instance-arn

# Check container instance remaining resources CPU/Mem
aws ecs describe-container-instances --cluster $ECS_CLUSTER_NAME --container-instances container-instance-arn --query 'containerInstances[].remainingResources'

# Check container instance Security Group
aws ecs describe-container-instances --cluster $ECS_CLUSTER_NAME --container-instances container-instance-arn --query 'containerInstances[].ec2InstanceId' --output text
aws ec2 describe-instances --instance-ids instance-id --query 'Reservations[0].Instances[0].SecurityGroups'
aws ec2 describe-security-groups --group-ids security-group-id
```

**系統服務監控：**

```
# Check Containerd status
nsenter -t 1 -m -p systemctl status containerd.service

# Check Amazon ECS container agent status
nsenter -t 1 -m -p systemctl status ecs
```

#### Resolution
<a name="task-placement-resolution"></a>

若要解決任務置放問題，請依照下列步驟確保適當的組態和容量：
+ 驗證任務資源需求與可用容量
+ 檢查置放限制條件和策略
+ 確保已設定 Amazon ECS 受管執行個體容量提供者
+ 確保任務和容器執行個體安全群組具有允許 Amazon ECS 代理程式管理端點流量的傳出規則

### 聯網問題
<a name="networking-issues"></a>

以下是聯網問題的摘要：
+ 無法連線到外部服務的任務
+ DNS 解析問題

#### 診斷步驟
<a name="networking-diagnostic"></a>

**網路連線測試：**

從偵錯容器執行下列命令：

**注意**  
確認連接至容量提供者或 Amazon ECS 任務的安全群組允許流量。

```
# Install DNS Utility
yum install bind-utils -y

# Test DNS resolution
nslookup amazon.com

# Test external connectivity
curl -I https://amazon.com
```

### 資源限制
<a name="resource-constraints"></a>

以下是聯網問題的摘要：
+ 由於記憶體限制而終止的任務
+ CPU 限流
+ 磁碟空間問題

#### 診斷步驟
<a name="resource-constraints-diagnostic"></a>

執行命令來監控資源和容器限制。

**資源監控：**

```
# Check memory usage
nsenter -t 1 -m -p free -h

# Check disk usage
nsenter -t 1 -m -p lsblk

# Check disk usage
nsenter -t 1 -m -p df -h
```

**容器限制：**

```
# Check OOM kills
nsenter -t 1 -m -p dmesg | grep -i "killed process"
```

### 容器執行個體代理程式中斷連線問題
<a name="container-instance-agent-disconnect"></a>

以下是容器執行個體代理程式中斷連線問題的症狀：
+ 在 Amazon ECS 主控台中顯示為中斷連線的容器執行個體
+ 任務無法放置在特定執行個體上
+ 日誌中的客服人員註冊失敗

#### 診斷步驟
<a name="agent-disconnect-diagnostic"></a>

 如果在主機上執行 ECS Exec 可存取的現有權限任務，請執行下列命令來診斷代理程式連線問題：

```
# check service status 
nsenter -t 1 -m -p systemctl restart ecs 
nsenter -t 1 -m -p systemctl restart containerd 

# restart stopped services 
nsenter -t 1 -m -p systemctl restart ecs 
nsenter -t 1 -m -p systemctl restart containerd
```

否則，請強制取消註冊 Amazon ECS 受管執行個體。執行以下命令：

```
# list ECS Managed Instance container
aws ecs list-container-instances --cluster managed-instances-cluster --query 'containerInstanceArns' --output text

# deregister the specific container instance
aws ecs deregister-container-instance \
    --cluster $ECS_CLUSTER_NAME \
    --container-instance container-instance-arn \
    --force
```

#### Resolution
<a name="agent-disconnect-resolution"></a>

若要解決客服人員中斷連線問題，請遵循下列步驟：
+ 驗證容器執行個體的 IAM 角色許可
+ 檢查安全群組規則允許傳出 HTTPS 流量到 ECS 端點
+ 確保與 AWS 服務的網路連線
+ 視需要重新啟動 ECS 代理程式服務： `nsenter -t 1 -m -p systemctl restart ecs`
+ 確認 /etc/ecs/ecs.config 中的 ECS\$1CLUSTER 組態與您的叢集名稱相符

## Amazon ECS 受管執行個體中的日誌分析
<a name="log-analysis"></a>

### 系統日誌
<a name="system-logs"></a>

使用下列命令來檢查系統日誌，並識別受管執行個體的潛在問題：

```
# Check system messages
nsenter -t 1 -m -p journalctl --no-pager -n 50

# Check kernel logs
nsenter -t 1 -m -p dmesg | tail -20

# Check for disk space errors
nsenter -t 1 -m -p journalctl --no-pager | grep -i "no space\|disk full\|enospc"
```

## 使用 EC2 AWS CLI 從 Amazon ECS 受管執行個體取得主控台輸出
<a name="console-output"></a>

使用 Amazon EC2 執行個體 ID 擷取主控台輸出。

將 *user-input* 取代為實際值。

```
aws ec2 get-console-output --instance-id instance-id --latest --output text
```

## 清除
<a name="cleanup"></a>

執行下列動作來停止轉移任務並取消註冊任務定義。

```
# Stop debug task
aws ecs stop-task --cluster $ECS_CLUSTER_NAME --task $TASK_ARN

# Deregister task definition (optional)
aws ecs deregister-task-definition --task-definition node-debugger
```

## 其他資源
<a name="additional-resources"></a>

如需疑難排解 Amazon ECS 受管執行個體的詳細資訊，請參閱下列資源：
+ [對 Amazon ECS Amazon ECS 受管執行個體錯誤進行疑難排解](managed-instances-errors.md)
+ [Amazon ECS 故障診斷](troubleshooting.md)
+ [Amazon ECS 容器代理程式組態](ecs-agent-config.md)
+ [使用 ECS Exec 監控 Amazon ECS 容器](ecs-exec.md)

# 對 Amazon ECS 受管執行個體進行疑難排解
<a name="troubleshooting-managed-instances"></a>

使用 Amazon ECS 受管執行個體啟動任務時，Amazon ECS 會先嘗試將任務置放在現有容量上，並為無法置放的任務請求額外容量。如果執行個體佈建失敗，Amazon EC2 請求 ID 會包含在任務失敗訊息中。您可透過此請求 ID 在 CloudTrail 中查詢失敗請求的詳細資訊，進一步進行疑難排解。

**注意**  
如果您選擇套用最低權限許可，並為執行個體描述檔指定自己的許可，而不是使用 `AmazonECSInstanceRolePolicyForManagedInstances`受管政策，您可以新增下列許可，以協助疑難排解 Amazon ECS 受管執行個體的任務相關問題：  
`ecs:StartTelemetrySession`
`ecs:PutSystemLogEvents`

## 任務定義與 Amazon ECS 受管執行個體不相容
<a name="task-definition-incompatible"></a>

### 常見原因
<a name="task-definition-incompatible-cause"></a>

當任務定義包含 Amazon ECS 受管執行個體不支援的參數或組態時，就會發生此錯誤。常見的不相容問題包括不支援的網路模式、任務角色或資源需求。

### Resolution
<a name="task-definition-incompatible-resolution"></a>

1. 確認任務定義使用設定為 `MANAGED_INSTANCES` 的 `requiresCompatibilities`。

1. 確保任務定義使用 `awsvpc` 網路模式。

1. 檢查 CPU 與記憶體值是否在 Amazon ECS 受管執行個體的支援範圍內。

1. 檢閱詳細錯誤訊息，了解具體的不相容問題詳情。

## 不與叢集相關聯的容量提供者
<a name="capacity-provider-missing"></a>

### 常見原因
<a name="capacity-provider-missing-cause"></a>

當容量提供者策略中指定的容量提供者未與叢集建立關聯或不存在時，就會發生此錯誤。

### Resolution
<a name="capacity-provider-missing-resolution"></a>

1. 確認容量提供者存在於帳戶與區域中。

1. 透過 Amazon ECS 主控台或 CLI 將容量提供者與叢集建立關聯。

1. 確保容量提供者在使用之前處於 `ACTIVE` 狀態。

## 基礎結構角色許可錯誤
<a name="infrastructure-role-errors"></a>

### 常見原因
<a name="infrastructure-role-errors-cause"></a>

當 Amazon ECS 基礎結構角色缺乏代表您執行 Amazon EC2 操作的必要許可，或該角色因信任關係問題而無法擔任時，就會發生此錯誤。

### Resolution
<a name="infrastructure-role-errors-resolution"></a>

1. 確認基礎結構角色與 Amazon ECS 具有適當的信任關係。

1. 確保角色具有必要的 Amazon EC2 許可，包括 `ec2:RunInstances`、`ec2:DescribeInstances`、`iam:PassRole`。

1. 如需特定許可的詳細資訊，請檢查 CloudTrail 中的編碼授權失敗訊息。

1. 更新角色政策，納入錯誤訊息中識別到的缺少許可。

## VcpuLimitExceeded 錯誤
<a name="vcpu-limit-exceeded"></a>

### 常見原因
<a name="vcpu-limit-exceeded-cause"></a>

當您已達到目前區域中執行個體類型系列的 vCPU 服務配額時，就會發生此錯誤。在容量可用之前，Amazon ECS 受管執行個體無法啟動額外的執行個體。

### Resolution
<a name="vcpu-limit-exceeded-resolution"></a>

1. 透過 AWS Support Center 請求增加受影響執行個體類型系列的服務配額。

1. 建議使用屬於不同 vCPU 配額類別的不同執行個體類型。

1. 終止閒置的 Amazon EC2 執行個體，釋放 vCPU 容量。

1. 檢閱容量提供者組態，使用 vCPU 需求較低的執行個體類型。

## InsufficientCapacity 與相關容量錯誤
<a name="insufficient-capacity"></a>

### 常見原因
<a name="insufficient-capacity-cause"></a>

當 AWS 沒有足夠的容量來滿足您的執行個體請求時，就會發生這些錯誤。這可能包括請求的可用區域中執行個體容量、位址容量或磁碟區容量不足。

### Resolution
<a name="insufficient-capacity-resolution"></a>

1. 在容量提供者中設定多個子網路，藉此嘗試在不同可用區域中啟動執行個體。

1. 建議使用可能具有更多可用容量的不同執行個體類型。

1. 當容量可用性經常變更時，請等待並重試操作。

1. 對於持續性容量需求，建議採用預留執行個體或 Savings Plans。

## UnauthorizedOperation 錯誤
<a name="unauthorized-operation"></a>

### 常見原因
<a name="unauthorized-operation-cause"></a>

當 Amazon ECS 服務沒有執行 Amazon EC2 操作或傳遞 IAM 角色的必要許可時，就會發生此錯誤。常見案例包括缺少執行個體設定檔的 `ec2:RunInstances` 許可或 `iam:PassRole` 許可。

### Resolution
<a name="unauthorized-operation-resolution"></a>

1. 確認 Amazon ECS 基礎結構角色具有啟動 Amazon EC2 執行個體的必要許可。

1. 確保基礎結構角色具有 Amazon ECS 受管執行個體使用的執行個體設定檔 `iam:PassRole` 許可。

1. 如需特定許可的詳細資訊，請檢查 CloudTrail 中的編碼授權失敗訊息。

1. 更新角色政策，納入錯誤訊息中識別到的缺少許可。

## 任務等待容量逾時
<a name="task-timeout-capacity"></a>

### 常見原因
<a name="task-timeout-capacity-cause"></a>

當執行個體啟動並註冊至叢集所需的時間超過預期時，就會發生此錯誤。這可能是由 Amazon EC2 容量限制、執行個體啟動失敗或網路連線問題所致。

### Resolution
<a name="task-timeout-capacity-resolution"></a>

1. 檢查所在區域中 Amazon EC2 服務運作狀態是否有任何持續的問題。

1. 確認子網路有足夠的 IP 位址可用。

1. 確保安全群組允許 Amazon ECS 代理程式通訊所需的流量。

1. 建議使用多個可用區域來改善容量可用性。

1. 重試任務啟動操作，因為容量限制通常是暫時的。

## 網路組態錯誤
<a name="network-configuration-errors"></a>

### 常見原因
<a name="network-configuration-errors-cause"></a>

當任務的網路需求與容量提供者的網路組態不相符，例如 VPC 不相符或缺少網路組態時，就會發生這些錯誤。

### Resolution
<a name="network-configuration-errors-resolution"></a>

1. 確認容量提供者已使用正確的 VPC 與子網路設定。

1. 確保安全群組與子網路屬於相同的 VPC。

1. 檢查任務定義的網路組態是否與容量提供者相容。

1. 使用正確的網路設定更新容量提供者組態。

## 由於執行個體卡住，無法刪除容量提供者
<a name="capacity-provider-deletion-errors"></a>

### 常見原因
<a name="capacity-provider-deletion-errors-cause"></a>

當 Amazon ECS 受管執行個體卡在 `ACTIVE`或 `DRAINING` 狀態，但執行個體上沒有執行中的任務時，就會發生這些錯誤。

### Resolution
<a name="capacity-provider-deletion-errors-resolution"></a>

若要允許刪除容量提供者以繼續，您可以使用下列命令強制取消註冊停滯的執行個體。

```
aws ecs deregister-container-instance \
    --cluster arn:aws:ecs:us-east-1:111122223333:cluster/MyCluster \
    --container-instance arn:aws:ecs:us-east-1:111122223333:container-instance/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE \
    --force
```

# 對 Amazon ECS Amazon ECS 受管執行個體錯誤進行疑難排解
<a name="managed-instances-errors"></a>

以下是部分 Amazon ECS 受管執行個體錯誤訊息以及可採取的錯誤修正動作。

## 如果沒有叢集名稱，則不支援 Amazon ECS 受管執行個體提供者
<a name="managed-instances-provider-cluster-required"></a>

當您嘗試使用 Amazon ECS 受管執行個體提供者參數建立容量提供者，但沒有叢集欄位時，就會發生此錯誤。

若要解決此問題，請在建立容量提供者時指定有效的叢集名稱。

## 建立 Amazon ECS 受管執行個體容量提供者時，需要提供 Amazon ECS 受管執行個體提供者詳細資訊
<a name="managed-instances-provider-details-required"></a>

當您嘗試使用 Amazon ECS 受管執行個體提供者建立容量提供者，但未提供實際物件時，就會出現此錯誤。

若要修正此問題，請指定有效的 Amazon ECS 受管執行個體提供者詳細資訊，然後再試一次。

## Amazon ECS 受管執行個體容量提供者必須指定執行個體設定檔
<a name="managed-instances-ec2-instance-profile-required"></a>

當您嘗試使用 Amazon ECS 受管執行個體提供者建立容量提供者，但未提供 Ec2InstanceProfile 時，就會看到此錯誤。

若要解決此問題，請為 Amazon ECS 受管執行個體容量提供者指定有效的 EC2 執行個體設定檔。如需詳細資訊，請參閱[Amazon ECS 受管執行個體執行個體設定檔](managed-instances-instance-profile.md)。

## Amazon ECS 受管執行個體容量提供者必須指定 InfrastructureRole
<a name="managed-instances-infrastructure-role-required"></a>

當您嘗試使用 Amazon ECS 受管執行個體提供者建立容量提供者，但未提供 InfrastructureRole 時，就會顯示此訊息。

若要修正此問題，請為 Amazon ECS 受管執行個體容量提供者指定有效的基礎結構角色。如需詳細資訊，請參閱[Amazon ECS 基礎結構 IAM 角色](infrastructure_IAM_role.md)。

## Amazon ECS 受管執行個體容量提供者必須指定網路組態
<a name="managed-instances-network-configuration-required"></a>

當您嘗試使用 Amazon ECS 受管執行個體提供者建立容量提供者，但未提供網路組態時，就會遇到此錯誤。

若要解決此問題，請為 Amazon ECS 受管執行個體容量提供者指定具有非空白子網路的有效網路組態。如需詳細資訊，請參閱[Amazon ECS 受管執行個體的 Amazon ECS 任務聯網](managed-instance-networking.md)。

## 沒有執行個體類型符合 Amazon ECS 受管執行個體容量提供者中指定的執行個體需求
<a name="managed-instances-no-instance-types"></a>

當您嘗試使用 Amazon ECS 受管執行個體提供者建立容量提供者，但沒有 EC2 執行個體類型符合執行個體需求時，就會發生這種情況。

若要解決此問題，請檢閱並調整執行個體需求，使其與可用的 EC2 執行個體類型相符。

## 指定的基礎結構角色 ARN 無效
<a name="managed-instances-invalid-infrastructure-role-arn"></a>

當 InfrastructureRole 未遵循特定 ARN 格式時，就會發生此錯誤。

預期格式：`arn:partition:iam::account-id:role/role-name`。指定有效的角色 ARN，然後再試一次。如需詳細資訊，請參閱[Amazon ECS 基礎結構 IAM 角色](infrastructure_IAM_role.md)。

## 指定的執行個體設定檔角色 ARN 無效
<a name="managed-instances-invalid-instance-profile-arn"></a>

當執行個體設定檔未遵循特定 ARN 格式時，就會發生此錯誤。

預期格式：`arn:partition:iam::account-id:instance-profile/profile-name`。指定有效的角色 ARN，然後再試一次。如需詳細資訊，請參閱[Amazon ECS 受管執行個體執行個體設定檔](managed-instances-instance-profile.md)。

## 指定的安全群組 ID 無效
<a name="managed-instances-invalid-security-group-id"></a>

當安全群組 ID 未遵循特定格式時，就會發生此錯誤。

預期格式：`sg-xxxxxxxx` 或 `sg-xxxxxxxxxxxxxxxxxx` [8 或 17 個字元，包括字母 (小寫) 與 "sg-" 後面的數字]。指定安全群組 ID，然後再試一次。

## 指定的子網路 ID 無效
<a name="managed-instances-invalid-subnet-id"></a>

當子網路 ID 未遵循特定格式時，就會發生此錯誤。

預期格式：`subnet-xxxxxxxx` 或 `subnet-xxxxxxxxxxxxxxxxxx` [8 或 17 個字元，包括字母 (小寫) 與 "subnet-" 後面的數字]。指定子網路 ID，然後再試一次。

## Amazon ECS 受管執行個體容量提供者必須指定具有非空白子網路的網路組態
<a name="managed-instances-network-configuration-empty-subnets"></a>

當您嘗試使用 Amazon ECS 受管執行個體提供者與具有空子網路的網路組態建立容量提供者時，就會發生此錯誤。

若要解決此問題，請為 Amazon ECS 受管執行個體容量提供者指定具有非空白子網路的有效網路組態。

## Amazon ECS 受管執行個體容量提供者的標籤數不能超過允許的最大值
<a name="managed-instances-max-tags-exceeded"></a>

當您嘗試建立的容量提供者超過允許的標籤數量上限 (45) 時，就會發生此錯誤。

若要解決此問題，請將標籤數量減少至 45 個或更少，然後再試一次。

## propagateTags 的值無效
<a name="managed-instances-invalid-propagate-tags"></a>

當您嘗試建立具有無效 propagateTags 值的容量提供者時，會發生此錯誤。

值必須是其中一個有效的 propagateTags 值。指定有效的值，然後再試一次。

## 具有叢集範圍限定的指定容量提供者已存在
<a name="managed-instances-capacity-provider-exists-cluster-scope"></a>

當您嘗試建立、更新或刪除沒有叢集名稱的 Amazon ECS 受管執行個體容量提供者，但有現有的叢集範圍限定容量提供者時，就會發生此錯誤。

若要變更容量提供者組態或刪除容量提供者，請使用叢集參數更新或刪除容量提供者。

## 指定的容量提供者已存在於帳戶或其他叢集中
<a name="managed-instances-capacity-provider-exists-different-cluster"></a>

當您嘗試建立、更新或刪除具有叢集欄位的 Amazon ECS 受管執行個體容量提供者，但有現有的帳戶範圍限定容量提供者或不同叢集的現有叢集範圍限定容量提供者時，就會發生此錯誤。

若要解決此問題，請使用不同的容量提供者名稱，或使用現有的容量提供者。

## 容量提供者作用中叢集名稱與請求中的叢集名稱不相符
<a name="managed-instances-cluster-name-mismatch"></a>

當容量提供者的作用中叢集名稱與請求中指定的叢集名稱不相符時，就會發生此錯誤。

確保請求中的叢集名稱與容量提供者的相關聯叢集相符。

## 容量提供者不是 Amazon ECS 受管執行個體容量提供者
<a name="managed-instances-not-managed-instances-provider"></a>

當您嘗試在需要容量提供者的環境中使用非 Amazon ECS 受管執行個體容量提供者的容量提供者時，就會發生此錯誤。

確定請求使用有效的 Amazon ECS 受管執行個體容量提供者。

## CapacityProvider 名稱不得為空白
<a name="managed-instances-capacity-provider-name-required"></a>

當您嘗試建立容量提供者而不指定容量提供者名稱時，就會發生此錯誤。

指定有效的容量提供者名稱，然後再試一次。

## 更新容量提供者時需要名稱
<a name="managed-instances-update-name-required"></a>

當您嘗試更新容量提供者而不指定容量提供者名稱時，就會發生此錯誤。

指定有效的名稱，然後再試一次。

## 標籤不能為 null 或具有 null 元素
<a name="managed-instances-tags-null-elements"></a>

當您嘗試使用 null 值標記容量提供者時，就會發生此錯誤。

確保所有標籤值都已正確指定，不是 null。

# Amazon ECS API 失敗原因
<a name="api_failures_messages"></a>

當您透過 Amazon ECS API、主控台或 AWS CLI 觸發的 API 動作退出時顯示 `failures` 錯誤訊息，以下內容可能有助於對原因進行疑難排解。失敗時會傳回原因，以及與失敗相關聯的資源的 Amazon Resource Name (ARN)。

許多資源是區域限定的，所以在使用主控台時，請務必為您的資源設定正確的區域。使用 時 AWS CLI，請確定您的 AWS CLI 命令已使用 `--region region` 參數傳送至正確的區域。

如需有關 `Failure` 資料類型結構的詳細資訊，請參閱《Amazon Elastic Container Service API 參考》**中的[故障](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Failure.html)。

以下是執行 API 命令時可能會收到的失敗訊息範例。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/api_failures_messages.html)

**注意**  
除了此處描述的失敗案例，API 操作也可能因例外狀況而失敗，從而導致錯誤回應。如需此類例外狀況的清單，請參閱[常見錯誤](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/CommonErrors.html)。

# 使用 Amazon Q Developer 進行故障診斷
<a name="troubleshooting-with-Q"></a>

您可以在 [Amazon ECS 主控台中使用 Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html)，以協助診斷和解決 Amazon ECS 資源的問題。對於容器、任務、服務、部署和任務定義的特定錯誤和狀態訊息，主控台會顯示**使用 Amazon Q Developer 檢查**選項。當您選擇此選項時，Amazon Q Developer 會在內容中分析問題，並建議可能的原因和修復步驟。

## 所需的許可
<a name="troubleshooting-with-Q-permissions"></a>
+ 檢視您要疑難排解之 Amazon ECS 資源的許可，例如叢集、服務、任務和任務定義。
+ 在 主控台中使用 [Amazon Q Developer 的許可](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/security_iam_permissions.html)。
+ （建議） 檢視相關日誌和指標的許可，例如：
  + CloudWatch Logs
  + CloudWatch

## 程序
<a name="troubleshooting-with-Q-procedure"></a>

1. 在 開啟 主控台[https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)。

1. 決定您要疑難排解的資源。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/troubleshooting-with-Q.html)

1. 在資源詳細資訊頁面上，找到描述問題的狀態或運作狀態原因。

1. 按一下狀態原因以開啟快顯視窗。

1. 如果可用，請選擇**使用 Amazon Q Developer 檢查**。

1. 檢閱 Amazon Q Developer 提供的說明和建議的修復步驟。根據您的環境套用組態或操作變更。

## 考量事項
<a name="troubleshooting-with-Q-considerations"></a>

搭配使用 Amazon Q Developer 與 Amazon ECS 時，請考慮下列事項：
+ **按鈕可用性** - 僅針對遇到潛在問題的資源顯示「檢查 Amazon Q Developer」按鈕。此選項不適用於運作狀態良好的資源。
+ **唯讀操作** - Amazon Q Developer 整合僅執行讀取操作。它不會進行變動或寫入動作。
+ **跨區域處理** - Amazon Q Developer 可能會跨 AWS 區域處理資料，以提供 AI 支援的分析。如需跨區域處理的詳細資訊，請參閱 [Amazon Q Developer 中的跨區域處理](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/cross-region-processing.html)。
+ ** 僅限主控台** - 此整合只能透過主控台使用。它無法透過 AWS CLI、 AWS APIs或基礎設施做為程式碼工具使用。

## 進一步了解
<a name="troubleshooting-with-Q-learn-more"></a>

如需使用 Amazon Q Developer 的詳細資訊，請參閱[與 Amazon Q Developer 聊天相關 AWS](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/chat-with-q.html)。