如何解决 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 集群所在的区域。
- 在左侧导航窗格中,选择 Logs(日志),然后选择 Log groups(日志组)。
- 在 Log groups(日志组)窗口中,选择 Create log group(创建日志组)。
使用 AWS CLI 创建 CloudWatch 日志组
使用 create-log-group AWS 命令行界面(AWS CLI)命令创建 CloudWatch 日志组。以下示例命令创建名为 mylogs 的日志组:
注意:如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新的 AWS CLI 版本。
aws logs create-log-group --log-group-name mylogs
使用 Amazon ECS 中的自动配置功能
Amazon ECS 控制台中的自动配置选项使用以 ecs 作为前缀的任务定义系列名称代表您创建日志组。以下示例在 Task Definition(任务定义)中指定 Log Configuration(日志配置)。
{
"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(任务定义)中指定 Log Configuration(日志配置)。
{
"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 策略。