Я пытаюсь создать файл json (определение задачи для AWS fargate), используя jq из моего конвейера gitlab.
Я хочу добиться этой конфигурации, создав блок с помощью logConfiguration и "logDriver", см. справа ниже:
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "awslogs-wordpress",
"awslogs-region": "us-west-2",
"awslogs-stream-prefix": "awslogs-example"
}
},
1) У меня есть мой исходный файл json ниже, где я ввожу некоторые значения с помощью команд в точке # 2:
{
"family": "",
"networkMode": "awsvpc",
"executionRoleArn": "arn:aws:iam::XXXXXXXXX:role/ecsTaskExecutionRole",
"containerDefinitions": [
{
"name": "",
"image": ":",
"portMappings": [
{
"containerPort": 3091,
"hostPort": 3091,
"protocol": "tcp"
}
],
"essential": true
}
],
"requiresCompatibilities": [
"FARGATE"
],
"cpu": "256",
"memory": "512"
}
2) Когда я делаю эти команды с jq на моем конвейере gitlab, я добиваюсь части того, что хочу, это нормально, и я получаю json в точке # 2.A, но Я понял, что выводит 3 раза "LogDriver «, что неверно:
jq '.containerDefinitions[0].logConfiguration.options."awslogs-group"="'my_grup'"' tmp_task > ejm.json &&
jq '.containerDefinitions[0].logConfiguration.options."awslogs-region"="'eu-west-2'"' ejm.json > tmp_task &&
jq '.containerDefinitions[0].logConfiguration.options."awslogs-stream-prefix"="'ecsx'"' tmp_task > ejm.json
2.A)
{
"family": "my_branch",
"networkMode": "awsvpc",
"executionRoleArn": "arn:aws:iam::235907124541:role/ecsTaskExecutionRole",
"containerDefinitions": [
{
"name": "",
"image": ":",
"portMappings": [
{
"containerPort": 3091,
"hostPort": 3091,
"protocol": "tcp"
}
],
"essential": true,
"logConfiguration": {
"options": {
"awslogs-group": "my_grup",
"awslogs-region": "eu-west-2",
"awslogs-stream-prefix": "ecsx"
},
"logDriver": "awslogs"
},
"logDriver": "awslogs"
},
{
"logConfiguration": {
"logDriver": "awslogs"
}
}
],
"requiresCompatibilities": [
"FARGATE"
],
"cpu": "256",
"memory": "512"
}
Как видно из пункта 2.А выше, в конфигурации« logDriver »написано несколько раз, и когда определение задачи создается в AWS fargate, журналы недоступны в CloudWatch, поскольку он не выбирает конфигурацию «logDriver», да, в CloudWatch есть группа журналов, но ни stdout, ни stderr не регистрируются из контейнер, потому что "logDriver" не является правильно введено в задачу json.
ПРАВО JSON ОПРЕДЕЛЕНИЕ ЗАДАЧ ДОЛЖНО БЫТЬ ЕДИНСТВЕННЫМ В ССЫЛКЕ НИЖЕ.
https://docs.aws.amazon.com/AmazonECS/latest/userguide/using_awslogs.html
Потенциальное решение состоит в том, чтобы понять, как правильно записать в файл json, или если у кого-то есть лучшее представление о том, как поместить эту задачу json в конвейер.
Надеемся получить некоторые идеи от вас, и большое спасибо в продвинутом.