Монтировать S3 bucket как файловую систему на контейнере AWS ECS - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь смонтировать S3 как том в док-контейнере AWS ECS, используя драйвер rexray / s3fs.

Я могу сделать это на моей локальной машине, где я установил плагин

$docker plugin install rexray/s3fs

и установленное ведро S3 на док-контейнере.

$docker plugin ls

ID                  NAME                 DESCRIPTION                                   ENABLED

3a0e14cadc17        rexray/s3fs:latest   REX-Ray FUSE Driver for Amazon Simple Storage   true 

$docker run -ti --volume-driver=rexray/s3fs -v s3-bucket:/data img

Я пытаюсь повторить это на AWS ECS.

Пробовал следовать нижеприведенному документу: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-volumes.html

Если я задаю значение Driver, то задача не может быть запущена и дает "не удалось разместить задачу, потому что ни один контейнерный экземпляр не выполнил все его требования." ошибка.

Я использую экземпляр t2.medium и задаю его требование для задачи, поэтому это не должно быть проблемой требований H / W.

Если я удалю конфигурацию драйвера из определения задания, будет выполнено задание.

Кажется, я что-то не так настраиваю.

Кто-нибудь пробовал / пробовал то же самое, пожалуйста, поделитесь знаниями.

Спасибо !!

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Ваш подход к использованию драйвера rexray / s3fs правильный.

Это шаги, которые я выполнил, чтобы все работало на Amazon Linux 1.

Сначала вам нужно установить s3fs.

yum install -y gcc libstdc+-devel gcc-c+ fuse fuse-devel curl-devel libxml2-devel mailcap automake openssl-devel git gcc-c++
git clone https://github.com/s3fs-fuse/s3fs-fuse
cd s3fs-fuse/
./autogen.sh
./configure --prefix=/usr --with-openssl
make
make install

Теперь установите драйвер. Здесь вы можете изменить некоторые параметры, например, использовать роль IAM вместо ключа доступа и региона AWS.

docker plugin install rexray/s3fs:latest S3FS_REGION=ap-southeast-2 S3FS_OPTIONS="allow_other,iam_role=auto,umask=000" LIBSTORAGE_INTEGRATION_VOLUME_OPERATIONS_MOUNT_ROOTPATH=/ --grant-all-permissions

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

yum update -y ecs-init
service docker restart && start ecs

Теперь вы должны быть готовы создать определение задачи. Важной частью является конфигурация вашего тома, показанная ниже.

"volumes": [
  {
    "name": "name-of-your-s3-bucket",
    "host": null,
    "dockerVolumeConfiguration": {
      "autoprovision": false,
      "labels": null,
      "scope": "shared",
      "driver": "rexray/s3fs",
      "driverOpts": null
    }
  }
]

Теперь вам просто нужно указать точку монтирования в определении контейнера:

"mountPoints": [
  {
    "readOnly": null,
    "containerPath": "/where/ever/you/want",
    "sourceVolume": "name-of-your-s3-bucket"
  }
]

Теперь, если у вас есть соответствующие разрешения IAM для доступа к корзине s3, ваш контейнер должен запускаться, и вы можете продолжать использовать s3 в качестве тома.

Если вы получили ошибку при запуске задачи с сообщением «ATTRIBUTE», дважды проверьте, что плагин был успешно установлен на экземпляре ec2 и агент ecs был перезапущен. Также дважды проверьте имя вашего драйвера "rexray / s3fs".

0 голосов
/ 02 февраля 2019

В экземплярах ecs cluster ec2 должен быть установлен драйвер rexray. В этом посте они обсуждают это. https://aws.amazon.com/blogs/compute/amazon-ecs-and-docker-volume-drivers-amazon-ebs/

Чтобы помочь вам начать работу, мы создали шаблон AWS CloudFormation, который создает кластер ECS с двумя узлами. Шаблон загружает драйвер тома rexray / ebs на каждый узел и назначает им роль IAM со встроенной политикой, которая позволяет им вызывать действия API, необходимые REX-Ray.

То же самое относится к драйверу s3

...