连接到 DynamoDB Docker 时找不到 table 使用 NoSQL Workbench for DynamoDB
Can not find table using NoSQL Workbench for DynamoDB when connecting to DynamoDB Docker
我在 Docker 中启动了 DynamoDB:
docker run --network xxx --name dynamodb -d -p 8000:8000 amazon/dynamodb-local
我创建了一个 table:
aws dynamodb create-table --table-name test --attribute-definitions \
AttributeName=UUID,AttributeType=S \
--key-schema AttributeName=UUID,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 --endpoint-url http://localhost:8000
列出 table:
aws dynamodb list-tables --endpoint-url http://localhost:8000
{
"TableNames": [
"test"
]
}
我可以使用 localhost:8000
连接到它。现在我已经为 Amazon DynamoDB 安装了 NoSQL Workbench。我检查了操作生成器并添加了本地 dynamoDB 的连接。我搜索了 tables (test) 但我找不到任何东西?我做错了什么?
使其工作的关键是使用 -sharedDB
标志,详见 here。
不幸的是,只添加一个键会导致容器在启动后立即退出,我认为原因是通过提供一个标志它会覆盖所有标准的。
为了避免这个问题,我只提供了所有标准的并且它有效:
docker run -p 8000:8000 -d amazon/dynamodb-local -jar DynamoDBLocal.jar -sharedDb -dbPath .
使用docker-compose
你可以做同样的事情如下:
version: '3'
services:
local-dynamo:
image: amazon/dynamodb-local
command: -jar DynamoDBLocal.jar -sharedDb -dbPath .
ports:
- "8000:8000"
我在使用 docker 容器和 docker-compose 时遇到了同样的问题。
AWS 有一个文档页面 here,其中包含以下代码段:
version: '3.8'
services:
dynamodb-local:
command: "-jar DynamoDBLocal.jar -sharedDb -optimizeDbBeforeStartup -dbPath ./data"
image: "amazon/dynamodb-local:latest"
container_name: dynamodb-local
ports:
- "8000:8000"
volumes:
- "./docker/dynamodb:/home/dynamodblocal/data"
working_dir: /home/dynamodblocal
使用上面的方法我仍然无法连接 NoSQL Workbench,所以我尝试使用 AWS CLI 进行连接:
aws dynamodb list-tables --endpoint-url http://localhost:8000
为了让它工作,我必须做两件事:
- 运行
aws configure
因为我的 .aws 凭证文件中缺少一个区域。
- 使用
docker-compose up
而不是 docker-compose run
。 运行 命令不公开端口。
AWS CLI 连接 NoSQL 后 Workbench 连接成功。
我知道这个很老但是我遇到了同样的问题,NoSQL Workbench 在使用 docker 容器 dynamodb 图像时没有得到 tables 并解决了它另一种方式。
我用这个命令创建了 table:
aws dynamodb create-table --table-name Movies \
--key-schema AttributeName=year,KeyType=HASH \
AttributeName=title,KeyType=RANGE --attribute-definitions \
AttributeName=year,AttributeType=N \
AttributeName=title,AttributeType=S \
--provisioned-throughput ReadCapacityUnits=10,WriteCapacityUnits=10 \
--billing-mode PROVISIONED \
--endpoint-url http://localhost:8000 \
--profile default
在 NoSQL Workbench 中创建连接时,我注意到标注显示“NoSQL Workbench 在建立 DynamoDB 本地连接时使用 'localhost' 区域。”:
localhost-callout-image
我立即记得在配置 aws 凭证时我从未使用 localhost 作为区域。所以我所做的是将 localhost 设置为一个区域,再次执行创建 table 的命令,它开始在客户端获取 table 的信息。
希望这对某人有所帮助。
我在 Docker 中启动了 DynamoDB:
docker run --network xxx --name dynamodb -d -p 8000:8000 amazon/dynamodb-local
我创建了一个 table:
aws dynamodb create-table --table-name test --attribute-definitions \
AttributeName=UUID,AttributeType=S \
--key-schema AttributeName=UUID,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 --endpoint-url http://localhost:8000
列出 table:
aws dynamodb list-tables --endpoint-url http://localhost:8000
{
"TableNames": [
"test"
]
}
我可以使用 localhost:8000
连接到它。现在我已经为 Amazon DynamoDB 安装了 NoSQL Workbench。我检查了操作生成器并添加了本地 dynamoDB 的连接。我搜索了 tables (test) 但我找不到任何东西?我做错了什么?
使其工作的关键是使用 -sharedDB
标志,详见 here。
不幸的是,只添加一个键会导致容器在启动后立即退出,我认为原因是通过提供一个标志它会覆盖所有标准的。
为了避免这个问题,我只提供了所有标准的并且它有效:
docker run -p 8000:8000 -d amazon/dynamodb-local -jar DynamoDBLocal.jar -sharedDb -dbPath .
使用docker-compose
你可以做同样的事情如下:
version: '3'
services:
local-dynamo:
image: amazon/dynamodb-local
command: -jar DynamoDBLocal.jar -sharedDb -dbPath .
ports:
- "8000:8000"
我在使用 docker 容器和 docker-compose 时遇到了同样的问题。
AWS 有一个文档页面 here,其中包含以下代码段:
version: '3.8'
services:
dynamodb-local:
command: "-jar DynamoDBLocal.jar -sharedDb -optimizeDbBeforeStartup -dbPath ./data"
image: "amazon/dynamodb-local:latest"
container_name: dynamodb-local
ports:
- "8000:8000"
volumes:
- "./docker/dynamodb:/home/dynamodblocal/data"
working_dir: /home/dynamodblocal
使用上面的方法我仍然无法连接 NoSQL Workbench,所以我尝试使用 AWS CLI 进行连接:
aws dynamodb list-tables --endpoint-url http://localhost:8000
为了让它工作,我必须做两件事:
- 运行
aws configure
因为我的 .aws 凭证文件中缺少一个区域。 - 使用
docker-compose up
而不是docker-compose run
。 运行 命令不公开端口。
AWS CLI 连接 NoSQL 后 Workbench 连接成功。
我知道这个很老但是我遇到了同样的问题,NoSQL Workbench 在使用 docker 容器 dynamodb 图像时没有得到 tables 并解决了它另一种方式。
我用这个命令创建了 table:
aws dynamodb create-table --table-name Movies \
--key-schema AttributeName=year,KeyType=HASH \
AttributeName=title,KeyType=RANGE --attribute-definitions \
AttributeName=year,AttributeType=N \
AttributeName=title,AttributeType=S \
--provisioned-throughput ReadCapacityUnits=10,WriteCapacityUnits=10 \
--billing-mode PROVISIONED \
--endpoint-url http://localhost:8000 \
--profile default
在 NoSQL Workbench 中创建连接时,我注意到标注显示“NoSQL Workbench 在建立 DynamoDB 本地连接时使用 'localhost' 区域。”:
localhost-callout-image
我立即记得在配置 aws 凭证时我从未使用 localhost 作为区域。所以我所做的是将 localhost 设置为一个区域,再次执行创建 table 的命令,它开始在客户端获取 table 的信息。
希望这对某人有所帮助。