Использование localstack в моем docker-compose в основном для имитации S3.
Я знаю, что могу создавать ведра, проблема не в этом. Я хотел бы автоматически создавать корзины при запуске docker-compose up.
Есть ли что-то встроенное в localstack?
Использование localstack в моем docker-compose в основном для имитации S3.
Я знаю, что могу создавать ведра, проблема не в этом. Я хотел бы автоматически создавать корзины при запуске docker-compose up.
Есть ли что-то встроенное в localstack?
Изменение, внесенное в этот коммит, начиная с версии 0.10.0
.
Когда контейнер запускается в первый раз, он выполняет файлы с расширениями .sh, которые находятся в
/docker-entrypoint-initaws.d
. Файлы будут выполняться в алфавитном порядке. Вы можете легко создавать ресурсы aws в локальном стеке с помощью инструмента cli awslocal (или aws) в сценариях инициализации.
version: '3.7'
services:
localstack:
image: localstack/localstack
environment:
- SERVICES=s3
ports:
- "4566:4566"
# - "4572:4572" Old S3 port
volumes:
- ./aws:/docker-entrypoint-initaws.d
Со скриптом в каталоге ./aws/buckets.sh
:
#!/bin/bash
set -x
awslocal s3 mb 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 |
mb
и s3
неверны! Должно быть awslocal s3 mb s3://bucket
. Спасибо за ответ, избавив меня от лишних хлопот!
- person Matt Keen; 22.11.2019
docker-entrypoint-initaws.d
и его содержимое (.sh
скрипты) в контейнере localstack? Я пробовал создать его в /usr/local/bin/
и /opt/code/localstack/
, но похоже, что .sh
скрипты не запускаются при запуске контейнера.
- person feature_not_bug; 23.12.2019
/docker-entrypoint-initaws.d
, поэтому ./aws/buckets.sh
будет /docker-entrypoint-initaws.d/buckets.sh
, в зависимости от конфигурации выше.
- person Matthew Warman; 06.01.2020
test: "awslocal s3api head-bucket --bucket bucket"
- person Matthew Warman; 12.04.2021
Мне удалось добиться этого с помощью Localstack с помощью своего рода «обходного пути»:
Создайте ожидаемые сегменты, например:
aws --endpoint-url=http://localhost:4572 s3 mb s3://test1
s3_api_calls.json
файл в каталоге Localstack (по умолчанию в Linux это /tmp/localstack/data
/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
DATA_DIR: локальный каталог для сохранения постоянных данных (в настоящее время поддерживается только для этих служб: Kinesis, DynamoDB, Elasticsearch, S3)