用Docker设置AWS Localstack的例子

695 阅读1分钟

如果你使用这个例子,你将有一个AWS Localstack Docker实例在你的本地环境中运行。这将使你能够在没有AWS账户的情况下测试AWS命令或应用程序。所有这些都发生在你的本地环境中。

这只是在eu-west-1 区域上运行的s3 服务的一个最基本的例子设置。如果你得到一个与 "卷 "有关的错误,请参考文档。这在Mac OS上运行良好。

version: "2.1"

services:
  localstack:
    image: "localstack/localstack"
    container_name: "localstack"
    ports:
      - "4566-4599:4566-4599"
    environment:
      - DEBUG=1
      - DEFAULT_REGION=eu-west-1
      - SERVICES=s3
      - DATA_DIR=/tmp/localstack/data
      - DOCKER_HOST=unix:///var/run/docker.sock
    volumes:
      - "/tmp/localstack:/tmp/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"
version: "3.8"

services:
  localstack:
    image: "localstack/localstack"
    container_name: "localstack"
    ports:
      - "4566-4599:4566-4599"
    environment:
      - DEBUG=1
      - DEFAULT_REGION=eu-west-1
      - SERVICES=lambda
      - DATA_DIR=/tmp/localstack/data
      - DOCKER_HOST=unix:///var/run/docker.sock
      - LAMBDA_EXECUTOR=docker
      - HOST_TMP_FOLDER=./tmp/localstack
    volumes:
      - "./tmp/localstack:/tmp/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"

一旦你运行它,你应该看到如下所示的容器:

CONTAINER ID   IMAGE                   COMMAND                  PORTS                                        NAMES
600094dd55c1   localstack/localstack   "docker-entrypoint.sh"   0.0.0.0:4566-4599->4566-4599/tcp, 8080/tcp   localstack

访问http://localhost:4566 应该产生{"status": "running"} 响应。所有启用的API(在我们的例子中是s3 )都可以通过边缘服务端口4566

假设aws cli已经安装在你的系统上。创建一个专门用于我们Localstack设置的自定义配置文件:

$ aws configure --profile localstack
AWS Access Key ID [None]: test
AWS Secret Access Key [None]: test
Default region name [None]: eu-west-1
Default output format [None]:

确认它是否已经被创建:

$ cat ~/.aws/config 
[profile localstack]
region = eu-west-1

$ cat ~/.aws/credentials 
[localstack]
aws_access_key_id = test
aws_secret_access_key = test

测试

在终端,你应该在命令中添加profile。例如,$ aws --profile localstack 。在你的应用程序中,使用配置,如下图所示:

aws.Config{
   Address: "http://localhost:4566",
   Region:  "eu-west-1",
   Profile: "localstack",
   ID:      "test",
   Secret:  "test",
}