如何解決 Amazon ECS 中的 "ResourceInitializationError: failed to validate logger args" (ResourceInitializationError:無法驗證日誌參數) 錯誤?
上次更新日期:2022 年 7 月 22 日
在 Amazon Elastic Container Service (Amazon ECS) 中執行任務時,我收到以下錯誤:"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 任務找不到任務定義中定義的 Amazon CloudWatch 日誌群組時,Amazon ECS 會傳回 ResourceInitialization 錯誤。若要解決此錯誤,請為任務建立新的日誌群組。
解決方案
若要解決資 ResourceInitialization 錯誤,請選擇下列其中一種解決方案,以為任務建立新的日誌群組。
在主控台中建立 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 log group (CloudWatch 日誌群組)。下列範例命令會建立名為 mylogs 的日誌群組:
注意:如果您在執行 AWS CLI 命令時收到錯誤,請確認您使用的是最新版 AWS CLI。
aws logs create-log-group --log-group-name mylogs
使用 Amazon ECS 中的自動組態功能
Amazon ECS 主控台中的自動設定選項會使用任務定義系列名稱 (以 ecs 為字首),代表您建立日誌群組。下列範例會在 Task Definition (任務定義) 中指定日誌組態。
{
"containerDefinitions": [
{
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/task_definition_familyname ",
"awslogs-region": "eu-west-1",
"awslogs-stream-prefix": "ecs"
}
}
}
您也可以透過指定日誌組態選項並新增值為 true 的金鑰 awslogs-create-group 來建立自訂日誌群組,以代表您建立日誌群組。
下列範例會使用選項集在 Task Definition (任務定義) 中指定日誌組態。
{
"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 政策。