Доступ к тому 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 ответа
Мне удалось получить доступ к файлам. Устройство уже подключено к пути внутри
Это можно определить с помощью команды
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"
}
}
}
}