AWS DynamoDb 本地 - 询问区域

问题描述 投票:0回答:2

我正在研究示例,但无法像给定的 cli 示例中那样列出表格。

我的 cli 参数:

java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -inMemory

aws dynamodb list-tables --endpoint-url http://localhost:8000

然后它总是要求我提供一个区域并将我指向“aws configure”。当我在凭据和本地区域中输入任何内容时,我得到:

Unable to locate credentials. You can configure credentials by running "aws configure".

我做错了什么?我只是想在使用云本身之前在本地玩一下以更加熟悉 cli 界面。让我烦恼,但我无法让它工作。

感谢您的任何提示!

amazon-web-services amazon-dynamodb
2个回答
6
投票

在本地运行 DynamoDB 时,您不需要有效的密钥,但需要输入有效的区域。例如,运行 aws configure 时,输入 aws 访问密钥 id 的任何密钥、aws 秘密访问密钥的任何密钥,并针对区域键入 us-east-1 或 us-west-1 等。 尝试再次运行该命令,它应该可以工作。


0
投票

AWS CLI 正在尝试查找凭证。这些通常存储在

~/.aws/config
和/或
~/.aws/credentials
文件中。配置后
config
文件的示例:

[profile PowerUserAccess-471112967987]
sso_session = cdk-dev
sso_account_id = 471112967987
sso_role_name = PowerUserAccess
region = us-east-1
[sso-session cdk-dev]
sso_start_url = https://d-9067fe592f.awsapps.com/start
sso_region = us-east-1
sso_registration_scopes = sso:account:access

但是,要连接到 dynamodb-local,根据您的设置,您不需要使用 AWS 配置文件来连接到 dynamodb,甚至不需要上述两个文件中的任何一个。要连接到本地运行的 dynamodb,首先获取 dynamodb-local 的端口号:

$ docker ps
CONTAINER ID   IMAGE                         COMMAND                  CREATED       STATUS        PORTS                     NAMES
ea98a2203bda   amazon/dynamodb-local:2.5.1   "java -jar DynamoDBL…"   4 weeks ago   Up 20 hours   0.0.0.0:64870->8000/tcp   service-dynamodb-1

注意示例中的

PORTS
。这里0.0.0.0:64870是ip和端口。此示例假设您在 docker 容器内运行 dynamodb,这对于大多数现代开发配置来说都是典型的。

在已知 IP 和端口的情况下,使用 AWS CLI 测试连接并列出数据库表:

aws dynamodb list-tables --endpoint-url http://localhost:64870 --region doesnotmatter

输出示例:

{
    "TableNames": [
        "acme_tablename"
    ]
}

如果您在连接和列出表时仍然遇到问题,请确认您的

AWS_PROFILE
环境变量未设置,然后重试。或者,如果您知道自己正在使用特定的 AWS 配置文件,请使用
aws configure
进行设置。

区域通常仅在您连接到 AWS 托管的 dynamodb 实例时才相关。

© www.soinside.com 2019 - 2024. All rights reserved.