Доступ к тому rexray/ebs с хоста ECS

Мне удалось пройти https://aws.amazon.com/blogs/compute/amazon-ecs-and-docker-volume-drivers-amazon-ebs/ и запустить свою службу на основе контейнера на ECS с помощью rex-ray Docker плагин громкости. Я вижу, что моя служба генерирует данные внутри тома, войдя в контейнер Docker, используя docker exec -it <id> /bin/sh

Есть ли место на инстансе хоста EC2, где я могу проверить эти данные? Том rex-ray смонтирован где-нибудь на главном экземпляре?

Я использую одноузловой кластер ECS. Я использовал следующее определение задачи. Я объявил sourcePath на хосте в разделе томов, но я не вижу каталога выходных данных в контейнере хоста.

      {
"ipcMode": null,
"executionRoleArn": null,
"containerDefinitions": [
    {
        "dnsSearchDomains": null,
        "environmentFiles": null,
        "logConfiguration": {
            "logDriver": "awslogs",
            "secretOptions": null,
            "options": {
                "awslogs-group": "/ecs/xxxxx",
                "awslogs-region": "us-east-1",
                "awslogs-stream-prefix": "ecs"
            }
        },
        "entryPoint": null,
        "portMappings": [],
        "command": null,
        "linuxParameters": null,
        "cpu": 0,
        "environment": [
            {
                "name": "save_path",
                "value": "/outputs"
            },
            {
                "name": "watchdog_limit",
                "value": "60"
            },
            {
                "name": "max_records_per_file",
                "value": "14400"
            }
        ],
        "resourceRequirements": null,
        "ulimits": null,
        "dnsServers": null,
        "mountPoints": [
            {
                "readOnly": null,
                "containerPath": "/outputs",
                "sourceVolume": "rexray_volume"
            }
        ],
        "workingDirectory": null,
        "secrets": null,
        "dockerSecurityOptions": null,
        "memory": null,
        "memoryReservation": 300,
        "volumesFrom": [],
        "stopTimeout": null,
        "image": "xxxxxxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/xxxxxxxxx:1.1",
        "startTimeout": null,
        "firelensConfiguration": null,
        "dependsOn": null,
        "disableNetworking": null,
        "interactive": null,
        "healthCheck": null,
        "essential": true,
        "links": null,
        "hostname": null,
        "extraHosts": null,
        "pseudoTerminal": null,
        "user": null,
        "readonlyRootFilesystem": null,
        "dockerLabels": null,
        "systemControls": null,
        "privileged": null,
        "name": "Datafeed"
    }
],
"memory": null,
"taskRoleArn": null,
"family": "Xxxxxxxx",
"pidMode": null,
"requiresCompatibilities": [
    "EC2"
],
"networkMode": null,
"cpu": null,
"inferenceAccelerators": [],
"proxyConfiguration": null,
"volumes": [
    {
        "fsxWindowsFileServerVolumeConfiguration": null,
        "efsVolumeConfiguration": null,
        "name": "rexray_volume",
        "host": {
            "sourcePath": "/outputs"
        },
        "dockerVolumeConfiguration": {
            "autoprovision": true,
            "scope": "shared",
            "driver": "rexray/ebs",
            "driverOpts": {
                "volumetype": "gp3",
                "size": "20"
            }
        }
    }
],
"placementConstraints": [],
"tags": []

}

2 ответа

Мне удалось получить доступ к файлам. Устройство уже подключено к пути внутри папка.

Это можно определить с помощью команды . Поскольку устройство уже смонтировано, его нельзя снова смонтировать в другом месте, однако вы можете создать крепление --bind в более удобном месте.

      sudo mount --bind /var/lib/docker/plugins/xxxxxx/propagated-mount/volumes/rexray_vol outputs/

Однако мне нужно su, чтобы получить доступ к файлам. Дайте мне знать, если у вас есть лучшее решение.

SSH в экземпляр EC2 и запустите lsblkКоманда для поиска каталога данных сервисного контейнера ECS.

Ниже приведен пример определения задачи, если вы хотите знать, как создать том gp3 с указанными IOPS и шифрованием:

      resource "aws_ecs_task_definition" "postgres" {
  container_definitions    = ...
  family                   = "Postgres"
  requires_compatibilities = ["EC2"]
  network_mode             = "bridge"

  volume {
    name = "rexray_volume"

    docker_volume_configuration {
      scope         = "shared"
      autoprovision = false
      driver        = "rexray/ebs"
      driver_opts = {
        volumetype    = "gp3"
        size          = 20
        iops          = 3000
        encrypted     = true
        encryptionkey = "arn:aws:kms:us-east-1:111111111111:key/11111111-1111-1111-1111-11111111"
      }
    }
  }
}
Другие вопросы по тегам