Ваш подход к использованию драйвера 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".