我想在将容器推送到 aws ecs 之前在本地测试它。
我使用 Go (aws-sdk-go-v2) 端点解析器和 http://localhost:8000 作为 url 对 docker-compose 堆栈进行了单元测试,其中包括 dynamodb-local 容器。
所以我想在本地构建和测试容器,并意识到我需要将它附加到 docker-compose 创建的默认网络。我对此有点挣扎,所以我建立了一个精简的试验。我创建了一个端点解析器,其 URL 为 http://dynamo-local:8000(在 dc 中命名为容器 dynamo-local),并将其附加到 docker run 中的默认网络。
现在一切正常,我可以成功执行各种表操作,但让我感到困惑的一件事是,如果我运行 aws cli:
aws --endpoint-url=http://localhost:8000 dynamodb 列表
那么当肯定存在表时,输出显示不存在表。我天真地假设,因为我可以访问具有不同端点的同一容器的端口 8000,我应该能够访问相同的资源。错误的。
显然是我的教育差距。我错过了什么?我需要将试用版扩展到对完整应用程序的适当测试,因此了解这里发生的事情对我来说很重要。
有没有办法可以使用 aws cli 访问表?
码头工人撰写文件:
version: '3.5'
services:
localstack:
image: localstack/localstack:latest
container_name: localstack_test
ports:
- '4566:4566'
environment:
- SERVICES=s3,sns,sqs, lambda
- DEBUG=1
- DATA_DIR=
volumes:
- './.AWSServices:/tmp/AWSServices'
- '/var/run/docker.sock:/var/run/docker.sock'
nginx:
build:
context: .
dockerfile: Dockerfile
image: chanonry/urlfiles-nginx:latest
container_name: nginx
ports:
- '8080:80'
dynamodb:
image: amazon/dynamodb-local:1.13.6
container_name: dynamo-local
ports:
- '8000:8000'
networks:
default:
name: test-net