【问题标题】:Cannot connect to local DynamoDB无法连接到本地 DynamoDB
【发布时间】:2020-07-16 16:28:52
【问题描述】:

我无法连接到使用 cli 在本地运行的 DynamoDB。

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

无法连接到端点 URL:“http://localhost:8000/”

这也不起作用: aws dynamodb list-tables --region local 无法连接到端点 URL:“http://localhost:8000/”

我尝试使用不同的端口,但没有帮助。我也禁用了所有代理。 我可以使用这样的应用程序连接到 DynamoDB,所以我知道这不是 dynamodb 问题: aws dynamodb list-tables --endpoint-url http://dynamodb.us-west-2.amazonaws.com --region us-west-2

{ “表名”:[ “音乐” ] }

????????????

【问题讨论】:

  • 如何启动本地运行的 DynamoDb?
  • 我按照这里的说明操作:docs.aws.amazon.com/amazondynamodb/latest/developerguide/…。我也在我的日志中得到了这个: 引起:java.lang.UnsatisfiedLinkError: no sqlite4java-osx-x86_64 in java.library.path: [.]
  • 你用的是哪个java版本?
  • java版本“14.0.1”2020-04-14
  • 实际上“无法连接到端点 URL”可能在各种情况下发生,即使没有服务在 host:port 上侦听(例如 dynamodb 未运行或在不同端口上运行),所以肯定需要使用aws dynamodb--debug 运行以查看实际错误。

标签: java amazon-web-services amazon-dynamodb endpoint amazon-dynamodb-local


【解决方案1】:

当你跑步时

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

来自终端的命令确保输出如下所示,并且端口 8000 上不会运行任何服务:

Initializing DynamoDB Local with the following configuration:
Port:   8000
InMemory:       false
DbPath: null
SharedDb:       true
shouldDelayTransientStatuses:   false
CorsParams:     *

表示该服务在 8000 端口上运行成功。

DynamoDB 需要 any/fake 凭据才能工作。

AWS Access Key ID: "fakeMyKeyId"
AWS Secret Access Key: "fakeSecretAccessKey"

然后尝试下面的命令来列出表格。

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

【讨论】:

  • 运行 java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb 后的输出如上。我已经使用 cli configure 配置了我的凭据并提供了密钥和密钥。运行 aws dynamodb list-tables --endpoint-url localhost:8000 失败
  • 引起:java.lang.UnsatisfiedLinkError: no sqlite4java-osx-x86_64 in java.library.path: [./DynamoDBLocal_lib]
【解决方案2】:

日志中的错误是这里的关键 Caused by: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-x86_64 in java.library.path: [.]

这意味着无法定位到具体的依赖。

Saranjeet 提供的link 有一些解决方案。我更喜欢这种测试解决方案:

First, you need to download the zip file from offcial website. Unzip the file, copy all the *.dll, *.dylib, *.so to a folder under your project root. Say, src/test/resources/libs.
Then, add the code

System.setProperty("sqlite4java.library.path", "src/test/resources/libs/");
before you initialize a local instance of AmazonDynamoDB.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多