在 Amazon Elastic Container Service (Amazon ECS) 中執行任務時,我收到 "ResourceInitializationError: failed to validate logger args (ResourceInitializationError:無法驗證記錄工具引數)" 錯誤。
簡短說明
當 Amazon ECS 任務找不到任務 definitionAmazon 中定義的 Amazon CloudWatch 日誌群組時,Amazon ECS 會傳回 ResourceInitialization 錯誤。您會收到以下錯誤訊息:
"ResourceInitializationError: failed to validate logger args: create stream has been retried 1 times: failed to create CloudWatch log stream: ResourceNotFoundException: The specified log group does not exist. : exit status 1 (ResourceInitializationError:無法驗證記錄工具引數:已重試 1 次建立串流:無法建立 CloudWatch 日誌串流:ResourceNotFoundException:指定的日誌群組不存在。:退出狀態 1)"
若要解決此錯誤,請為任務建立新的日誌群組。
若要疑難排解無法啟動 Amazon ECS 任務的錯誤,請使用 AWSSupport-TroubleshootECSTaskFailedToStart 執行手冊。然後,請參閱針對問題的相關疑難排解步驟。
解決方案
尋找無法啟動的任務
重要事項:
- 在 ECS 叢集資源所在的相同 AWS 區域中使用 AWSSupport-TroubleshootECSTaskFailedToStart 執行手冊。
- 使用執行手冊時,您必須使用最近失敗的任務 ID。如果失敗的任務屬於 Amazon ECS 服務,請在服務中使用最近失敗的任務。失敗的任務必須在 ECS:DescribeTasks 自動化過程中可見。依預設,停止的 ECS 任務會在進入已停止狀態後顯示 1 小時。使用最近失敗的任務 ID 可防止任務狀態清除作業在自動化期間中斷分析。
如需有關如何啟動執行手冊的說明,請參閱 AWSSupport-TroubleshootECSTaskFailedToStart。根據自動化的輸出,使用下列其中一個手動疑難排解步驟。
對此錯誤進行疑難排解
若要解決 ResourceInitialization 錯誤,請檢閱下列解決方法,為任務建立新的日誌群組。
如果您不知道任務定義中定義的日誌群組並傳回錯誤,請執行下列命令:
aws ecs describe-task-definition --task-definition nginx-fargate:3 | jq -r .taskDefinition.containerDefinitions[].logConfiguration
輸出會說明您必須在 CloudWatch 中重新建立的日誌群組。
在主控台中建立 CloudWatch 日誌群組
- 開啟 CloudWatch 主控台。
- 從導覽列選擇 Amazon ECS 叢集所在的 Region (區域)。
- 在導覽窗格中,選擇 Logs (日誌),然後選擇 Log groups (日誌群組)。
- 在 Log groups (日誌群組) 視窗中,選擇 Create log group (建立日誌群組)。
使用 AWS CLI 建立 CloudWatch 日誌群組
使用 create-log-group AWS Command Line Interface (AWS CLI) 命令建立 CloudWatch 日誌群組。下列範例命令會建立名為 mylogs 的日誌群組:
**注意事項:**如果您在執行 AWS CLI 命令時收到錯誤訊息,請確定您使用的是最新版本的 AWS CLI。
aws logs create-log-group --log-group-name mylogs
使用 Amazon ECS 主控台中的自動設定功能
自動設定選項會使用任務定義系列名稱 (以 ecs 為字首),為您建立日誌群組。下列範例會在任務定義中指定日誌組態:
{ "containerDefinitions": [
{
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-create-group": "true",
"awslogs-group": "awslogs-wordpress",
"awslogs-region": "us-west-2",
"awslogs-stream-prefix": "awslogs-example"
}
}
}
]
}
您也可以使用下列步驟建立自訂日誌群組:
- 指定日誌組態選項。
- 使用 true 值新增金鑰 awslogs-create-group。這會為您建立日誌群組。
下列範例會使用選項集,在任務定義中指定日誌組態:
{ "containerDefinitions": [
{
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "example_container",
"awslogs-region": "eu-west-1",
"awslogs-create-group": "true",
"awslogs-stream-prefix": "example"
}
}
}
]
}
**注意事項:**受管 AWS Identity and Access Management (IAM) 政策 AmazonECSTaskExecutionRolePolicy 不包含 logs:CreateLogGroup 權限。若要使用 awslogs-create-group 選項,請新增 logs:CreateLogGroup 作為內嵌 IAM 政策。