在 localstack 上自动创建 S3 Buckets
Auto create S3 Buckets on localstack
在我的 docker-compose 中使用 localstack 主要是为了模仿 S3。
我知道我可以创建存储桶,这不是问题所在。我想做的是当我 运行 一个 docker-compose 时自动创建桶。
是否已经为 localstack 内置了一些东西?
我能够通过 "workaround":
的 Localstack 实现这一点
- 启动本地堆栈
创建预期的存储桶,例如:
aws --endpoint-url=http://localhost:4572 s3 mb s3://test1
- 以上行将更新 Localstack 目录中的
s3_api_calls.json
文件(默认情况下 Linux
/tmp/localstack/data
- 备份文件
- 在再次启动堆栈之前,将复制的文件放入 Localstack 目录(默认为
/tmp/localstack/data
)
- 再次启动 Localstack 后,您应该能够在启动日志中看到类似
2019-03-21T08:38:28:INFO:localstack.utils.persistence: Restored 2 API calls from persistent file: /tmp/localstack/data/s3_api_calls.json
的内容,并且存储桶应该可用:aws --endpoint-url=http://localhost:4572 s3 ls s3://test1
此 commit 自版本 0.10.0
以来的更改。
When a container is started for the first time, it will execute files
with extensions .sh that are found in /docker-entrypoint-initaws.d
.
Files will be executed in alphabetical order. You can easily create
aws resources on localstack using awslocal (or aws) cli tool in the
initialization scripts.
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
中有脚本:
#!/usr/bin/env 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 |
DATA_DIR:用于保存持久化数据的本地目录(目前仅支持这些服务:Kinesis、DynamoDB、Elasticsearch、S3)
在我的 docker-compose 中使用 localstack 主要是为了模仿 S3。
我知道我可以创建存储桶,这不是问题所在。我想做的是当我 运行 一个 docker-compose 时自动创建桶。
是否已经为 localstack 内置了一些东西?
我能够通过 "workaround":
的 Localstack 实现这一点- 启动本地堆栈
创建预期的存储桶,例如:
aws --endpoint-url=http://localhost:4572 s3 mb s3://test1
- 以上行将更新 Localstack 目录中的
s3_api_calls.json
文件(默认情况下 Linux/tmp/localstack/data
- 备份文件
- 在再次启动堆栈之前,将复制的文件放入 Localstack 目录(默认为
/tmp/localstack/data
) - 再次启动 Localstack 后,您应该能够在启动日志中看到类似
2019-03-21T08:38:28:INFO:localstack.utils.persistence: Restored 2 API calls from persistent file: /tmp/localstack/data/s3_api_calls.json
的内容,并且存储桶应该可用:aws --endpoint-url=http://localhost:4572 s3 ls s3://test1
此 commit 自版本 0.10.0
以来的更改。
When a container is started for the first time, it will execute files with extensions .sh that are found in
/docker-entrypoint-initaws.d
. Files will be executed in alphabetical order. You can easily create aws resources on localstack using awslocal (or aws) cli tool in the initialization scripts.
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
中有脚本:
#!/usr/bin/env 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 |
DATA_DIR:用于保存持久化数据的本地目录(目前仅支持这些服务:Kinesis、DynamoDB、Elasticsearch、S3)