我在 Amazon Elastic Container Service(Amazon ECS)中运行任务时,收到“ResourceInitializationError:未能验证记录器参数”错误。
简短描述
当 Amazon ECS 任务找不到任务 definitionAmazon 中定义的 Amazon CloudWatch 日志组时,Amazon ECS 将返回 ResourceInitialization 错误。您收到以下错误消息:
“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 集群所在的区域。
- 在导航窗格中,选择日志,然后选择日志组。
- 在日志组窗口中,选择创建日志组。
使用 AWS CLI 创建 CloudWatch 日志组
使用 AWS 命令行界面(AWS CLI)命令 create-log-group 创建 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 策略。