Я пытаюсь разместить образ Grafana 7.4 в ECS Fargate, используя том EFS для постоянного хранения.
Используя Terraform, я создал требуемый ресурс и предоставил задаче доступ к тому EFS через точку доступа.
resource "aws_efs_access_point" "default" {
file_system_id = aws_efs_file_system.default.id
posix_user {
gid = 0
uid = 472
}
root_directory {
path = "/opt/data"
creation_info {
owner_gid = 0
owner_uid = 472
permissions = "600"
}
}
}
Обратите внимание, что я установил разрешения владельца в соответствии с руководствами в https://grafana.com/docs/grafana/latest/installation/docker/#migrate-from-previous-docker-containers-versions (я пробовал оба идентификатора группы 0 и 1 поскольку документация кажется непоследовательной на gid).
Используя базовое изображение alpine вместо изображения grafana, я подтвердил, что каталог /var/lib/grafana
существует в контейнере с правильными установленными uid и gids. Однако при попытке запустить изображение графаны я получаю сообщение об ошибке
GF_PATHS_DATA='/var/lib/grafana' is not writable.
Я запускаю задачу с терраформированным определением задачи.
resource "aws_ecs_task_definition" "default" {
family = "${var.name}"
container_definitions = "${data.template_file.container_definition.rendered}"
memory = "${var.memory}"
cpu = "${var.cpu}"
requires_compatibilities = [
"FARGATE"
]
network_mode = "awsvpc"
execution_role_arn = "arn:aws:iam::REDACTED_ID:role/ecsTaskExecutionRole"
volume {
name = "${var.name}-volume"
efs_volume_configuration {
file_system_id = aws_efs_file_system.default.id
transit_encryption = "ENABLED"
root_directory = "/opt/data"
authorization_config {
access_point_id = aws_efs_access_point.default.id
}
}
}
tags = {
Product = "${var.name}"
}
}
С определением контейнера
[
{
"portMappings": [
{
"hostPort": 80,
"protocol": "tcp",
"containerPort": 80
}
],
"mountPoints": [
{
"sourceVolume": "${volume_name}",
"containerPath": "/var/lib/grafana",
"readOnly": false
}
],
"cpu": 0,
"secrets": [
...
],
"environment": [],
"image": "grafana/grafana:7.4.3",
"name": "${name}",
"user": "472:0"
}
]
Для пользователя я пробовал графану, 742: 0, 742 и 742: 1 при попытке gid 1.
Я считаю, что terraform, группы безопасности, mount_targets и т. Д. Верны, так как я могу получить альпийский образ, чтобы:
ls -lash /var/lib
> drw------- 2 472 root 6.0K Mar 12 11:22 grafana