如何解決 Amazon ECS 中的 "ResourceInitializationError: failed to validate logger args (ResourceInitializationError:無法驗證記錄工具引數)" 錯誤?

2 分的閱讀內容
0

在 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 日誌群組

  1. 開啟 CloudWatch 主控台
  2. 從導覽列選擇 Amazon ECS 叢集所在的 Region (區域)。
  3. 在導覽窗格中,選擇 Logs (日誌),然後選擇 Log groups (日誌群組)。
  4. 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"  
        }  
      }  
    }  
  ]  
}

您也可以使用下列步驟建立自訂日誌群組:

  1. 指定日誌組態選項。
  2. 使用 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 政策。

AWS 官方
AWS 官方已更新 10 個月前