无法连接到 Windows 10 机器上的 Localstack docker 实例 - 无法找到凭据
Unable to connect to a Localstack docker instance on a Windows 10 machine - Unable to locate credentials
我正尝试在 Windows 10 机器上试验 Localstack。
- 我想使用 localstack/localstack docker 图片。
- 我还希望将 amazon/aws-cli docker 图像用于针对我的 Localstack 实例的 运行ning 命令。 (例如创建一个 S3 存储桶)。
- 不想在我的windows机器上安装python/pip。
- 不想 在我的 windows 机器上安装 aws-cli。 (注意:我想对 aws-cli 命令使用 docker 图像。)
所以我似乎有 Localstack 运行 正常,但是当我尝试 运行 针对 Localstack 实例的 AWS 命令时,我收到 Unable to locate credentials
错误。
例如
CMD > docker run --rm -it amazon/aws-cli --endpoint-url=http://localhost:4566 s3 mb s3://testbucket
make_bucket failed: s3://testbucket Unable to locate credentials
和我的 docker 文件:
version: '3.2'
services:
localstack:
image: localstack/localstack # This will pull the latest
container_name: localstack
network_mode: bridge
ports:
- 4566:4566 # All servics will now go through the same port.
- "4571:4571"
- "${PORT_WEB_UI-8080}:${PORT_WEB_UI-8080}"
environment:
- SERVICES=s3
- DEBUG=1
- DATA_DIR=/tmp/localstack/data # This is the where the data will be stored/saved, inside the docker instance
- PORT_WEB_UI=${PORT_WEB_UI- }
volumes:
- "localstack-vol:/tmp/localstack"
volumes:
localstack-vol:
问题
是否可以从 aws-cli
docker 图像针对 Localstack 实例 运行 AWS 命令(例如创建 S3 存储桶)?
有什么方法可以指定凭据吗?
我还有一个 C:\Users\<username>\.aws
config
和 credentials
文件,其中包含以下内容:
Credentials
[<snip>]
aws_access_key_id=<snip>
aws_secret_access_key=<snip>
[localstack]
aws_access_key_id = foo
aws_secret_access_key = bar
config
[profile <snip>]
region = us-west-2
role_arn = arn:aws:iam::<snip>:role/local-development
source_profile = <snip>
[profile localstack]
region = us-west-2
output = json
有人可以看看我做错了什么吗?
在 @marcin 的帮助下,我得到了 运行ning:
要求:
创建一个docker-compose.yml文件
version: '3.5'
services:
localstack:
image: localstack/localstack # This will pull the latest
container_name: localstack
network_mode: bridge
ports:
- 4566:4566 # All servics will now go through the same port.
- "${PORT_WEB_UI-8080}:${PORT_WEB_UI-8080}"
environment:
- SERVICES=s3,sns,sqs
- DEBUG=1
- DATA_DIR=/tmp/localstack/data # This is the where the data will be stored/saved, inside the docker instance
- PORT_WEB_UI=${PORT_WEB_UI- }
volumes:
- "localstack-vol:/tmp/localstack"
volumes:
localstack-vol:
注意:注意容器的名称:localstack
。我们稍后会提到这个(当链接第二个 Docker 实例时,回到这个)。
然后运行在命令行中输入以下内容:
> docker-compose up
好的,在新的命令行中(因为我喜欢看到实例 运行ning 的输出):
> docker run --rm -it amazon/aws-cli --version
aws-cli/2.1.21 Python/3.7.3 Linux/4.19.128-microsoft-standard docker/x86_64.amzn.2 prompt/off
所以 aws-cli 在 localhost 上工作:没有什么特别的。
运行 aws-cli 命令针对我们的 localstack 实例
如果您注意到上面的内容,我只启动了以下服务:
- S3
- 社交网络
- SQS
所以让我们确保我们可以为每个人创建然后列出一些东西。
### Create an S3 Bucket, then list buckets
docker run --rm -it --link localstack amazon/aws-cli --no-sign-request --endpoint-url=http://localstack:4566 s3 mb s3://mytestbucket
docker run --rm -it --link localstack amazon/aws-cli --no-sign-request --endpoint-url=http://localstack:4566 s3 ls
### Create a Topic then list topics
docker run --rm -it --link localstack amazon/aws-cli --no-sign-request --endpoint-url=http://localstack:4566 sns create-topic --name test-topic
docker run --rm -it --link localstack amazon/aws-cli --no-sign-request --endpoint-url=http://localstack:4566 sns list-topics
### Create a Queue and list queues
docker run --rm -it --link localstack amazon/aws-cli --no-sign-request --endpoint-url=http://localstack:4566 sqs create-queue --queue-name testqueue
docker run --rm -it --link localstack amazon/aws-cli --no-sign-request --endpoint-url=http://localstack:4566 sqs list-queues
最后,如果您希望连接到 aws-cli Docker 实例以执行其中的 运行 命令(例如,有些奇怪的东西不起作用),那么使用这个:
> docker run --rm -it --entrypoint /bin/bash --link localstack amazon/aws-cli
我不得不覆盖默认设置 entrypoint
。相反,我是说:“输入”实例和 运行 这个 shell (bin/bash) 现在让我 运行 命令,就像我已经登录实例一样.
我正尝试在 Windows 10 机器上试验 Localstack。
- 我想使用 localstack/localstack docker 图片。
- 我还希望将 amazon/aws-cli docker 图像用于针对我的 Localstack 实例的 运行ning 命令。 (例如创建一个 S3 存储桶)。
- 不想在我的windows机器上安装python/pip。
- 不想 在我的 windows 机器上安装 aws-cli。 (注意:我想对 aws-cli 命令使用 docker 图像。)
所以我似乎有 Localstack 运行 正常,但是当我尝试 运行 针对 Localstack 实例的 AWS 命令时,我收到 Unable to locate credentials
错误。
例如
CMD > docker run --rm -it amazon/aws-cli --endpoint-url=http://localhost:4566 s3 mb s3://testbucket
make_bucket failed: s3://testbucket Unable to locate credentials
和我的 docker 文件:
version: '3.2'
services:
localstack:
image: localstack/localstack # This will pull the latest
container_name: localstack
network_mode: bridge
ports:
- 4566:4566 # All servics will now go through the same port.
- "4571:4571"
- "${PORT_WEB_UI-8080}:${PORT_WEB_UI-8080}"
environment:
- SERVICES=s3
- DEBUG=1
- DATA_DIR=/tmp/localstack/data # This is the where the data will be stored/saved, inside the docker instance
- PORT_WEB_UI=${PORT_WEB_UI- }
volumes:
- "localstack-vol:/tmp/localstack"
volumes:
localstack-vol:
问题
是否可以从 aws-cli
docker 图像针对 Localstack 实例 运行 AWS 命令(例如创建 S3 存储桶)?
有什么方法可以指定凭据吗?
我还有一个 C:\Users\<username>\.aws
config
和 credentials
文件,其中包含以下内容:
Credentials
[<snip>]
aws_access_key_id=<snip>
aws_secret_access_key=<snip>
[localstack]
aws_access_key_id = foo
aws_secret_access_key = bar
config
[profile <snip>]
region = us-west-2
role_arn = arn:aws:iam::<snip>:role/local-development
source_profile = <snip>
[profile localstack]
region = us-west-2
output = json
有人可以看看我做错了什么吗?
在 @marcin 的帮助下,我得到了 运行ning:
要求:
创建一个docker-compose.yml文件
version: '3.5'
services:
localstack:
image: localstack/localstack # This will pull the latest
container_name: localstack
network_mode: bridge
ports:
- 4566:4566 # All servics will now go through the same port.
- "${PORT_WEB_UI-8080}:${PORT_WEB_UI-8080}"
environment:
- SERVICES=s3,sns,sqs
- DEBUG=1
- DATA_DIR=/tmp/localstack/data # This is the where the data will be stored/saved, inside the docker instance
- PORT_WEB_UI=${PORT_WEB_UI- }
volumes:
- "localstack-vol:/tmp/localstack"
volumes:
localstack-vol:
注意:注意容器的名称:localstack
。我们稍后会提到这个(当链接第二个 Docker 实例时,回到这个)。
然后运行在命令行中输入以下内容:
> docker-compose up
好的,在新的命令行中(因为我喜欢看到实例 运行ning 的输出):
> docker run --rm -it amazon/aws-cli --version
aws-cli/2.1.21 Python/3.7.3 Linux/4.19.128-microsoft-standard docker/x86_64.amzn.2 prompt/off
所以 aws-cli 在 localhost 上工作:没有什么特别的。
运行 aws-cli 命令针对我们的 localstack 实例
如果您注意到上面的内容,我只启动了以下服务:
- S3
- 社交网络
- SQS
所以让我们确保我们可以为每个人创建然后列出一些东西。
### Create an S3 Bucket, then list buckets
docker run --rm -it --link localstack amazon/aws-cli --no-sign-request --endpoint-url=http://localstack:4566 s3 mb s3://mytestbucket
docker run --rm -it --link localstack amazon/aws-cli --no-sign-request --endpoint-url=http://localstack:4566 s3 ls
### Create a Topic then list topics
docker run --rm -it --link localstack amazon/aws-cli --no-sign-request --endpoint-url=http://localstack:4566 sns create-topic --name test-topic
docker run --rm -it --link localstack amazon/aws-cli --no-sign-request --endpoint-url=http://localstack:4566 sns list-topics
### Create a Queue and list queues
docker run --rm -it --link localstack amazon/aws-cli --no-sign-request --endpoint-url=http://localstack:4566 sqs create-queue --queue-name testqueue
docker run --rm -it --link localstack amazon/aws-cli --no-sign-request --endpoint-url=http://localstack:4566 sqs list-queues
最后,如果您希望连接到 aws-cli Docker 实例以执行其中的 运行 命令(例如,有些奇怪的东西不起作用),那么使用这个:
> docker run --rm -it --entrypoint /bin/bash --link localstack amazon/aws-cli
我不得不覆盖默认设置 entrypoint
。相反,我是说:“输入”实例和 运行 这个 shell (bin/bash) 现在让我 运行 命令,就像我已经登录实例一样.