Автоматическое создание ковшей S3 на локальном столе
Использование localstack в моем docker-compose в основном для имитации S3.
Я знаю, что могу создавать ведра, это не проблема. То, что я хотел бы сделать, автоматически создает ведра, когда я запускаю сборку докеров.
Есть ли что-то для сборки уже для localstack?
Ответы
Ответ 1
Я смог добиться этого с помощью Localstack с помощью своего рода "обходного пути":
- Начать локальный стек
Создайте ожидаемые сегменты, например:
aws --endpoint-url=http://localhost:4572 s3 mb s3://test1
- Над строкой будет обновлен файл
s3_api_calls.json
в каталоге Localstack (по умолчанию в Linux это
/tmp/localstack/data
- Сделайте резервную копию файла
- Поместите скопированный файл в каталог Localstack (по умолчанию
/tmp/localstack/data
) перед повторным запуском стека
- Вы должны увидеть что-то вроде
2019-03-21T08:38:28:INFO:localstack.utils.persistence: Restored 2 API calls from persistent file: /tmp/localstack/data/s3_api_calls.json
в журнале запуска после того, как снова запустите Localstack, и корзина должна быть доступна: aws --endpoint-url=http://localhost:4572 s3 ls s3://test1
Ответ 2
Изменения, которые произошли с этим коммитом начиная с версии 0.10.0
.
Когда контейнер запускается в первый раз, он выполняет файлы с расширениями .sh, которые можно найти в /docker-entrypoint-initaws.d
. Файлы будут выполнены в алфавитном порядке. Вы можете легко создать ресурсы aws в localstack с помощью инструмента cli awslocal (или aws) в сценарии инициализации.
version: '3.7'
services:
localstack:
image: localstack/localstack
environment:
- SERVICES=s3
ports:
- "4572:4572"
volumes:
- ./aws:/docker-entrypoint-initaws.d
Со скриптом в каталоге ./aws/buckets.sh
:
#!/bin/bash
set -x
awslocal mb s3 s3://bucket
set +x
Примечание: set [-/+] x
предназначен только для включения и выключения вывода выполняемых команд.
Будет производить этот вывод:
...
localstack_1 | Starting mock S3 (http port 4572)...
localstack_1 | Waiting for all LocalStack services to be ready
localstack_1 | Ready.
localstack_1 | /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initaws.d/buckets.sh
localstack_1 | ++ awslocal s3 mb s3://bucket
localstack_1 | make_bucket: bucket
localstack_1 | ++ set +x
localstack_1 |