1

我正在尝试从 AWS 运行 Java 教程: https ://docs.aws.amazon.com/qldb/latest/developerguide/getting-started.java.tutorial.html

在指南的第一步中,我必须将区域和端点添加到“getClient”方法中,以使其运行。在第二步,我在连接分类帐时遇到错误。

Exception in thread "main" com.amazonaws.services.qldbsession.model.AmazonQLDBSessionException: Unable to determine service/operation name to be authorized (Service: AmazonQLDBSession; Status Code: 403; Error Code: AccessDeniedException; Request ID

我知道我的 IAM 用户具有正确的权限,因为我可以使用它添加分类帐,并且现在它具有对 QLDB 的完全访问权限。我已经尝试在“createQldbDriver”方法和“凭据”中设置特定的区域和端点,以确保它使用的是我想要的 IAM 用户,即使我知道我的凭据在 aws/credentials 文件中是正确的。无论我尝试什么,我都会不断收到上面显示的异常。

我希望有人能指出我正确的方向。

4

3 回答 3

1

我想知道您的应用程序中是否存在依赖性问题,例如 QLDB 驱动程序和 AWS 开发工具包的版本不兼容。您能否确认版本匹配(至少)https://docs.aws.amazon.com/qldb/latest/developerguide/getting-started.java.html#getting-started.java.prereqs中的指导

dependencies {
    compile group: 'software.amazon.qldb', name: 'amazon-qldb-driver-java', version: '1.0.2'
    compile group: 'com.amazonaws', name: 'aws-java-sdk-qldb', version: '1.11.628'
    compile group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-ion', version: '2.10.0.pr1'
}

如果这不起作用,请您使用更多信息更新您的问题,例如您对教程代码所做的更改(如果您选择内联它们,请确保不包含任何凭据!)和完整的 -堆栈跟踪。可以公开共享请求 ID。

更新:黑暗中的另一个镜头:您是否可以在构建客户端驱动程序时自定义端点?如果是这样,您是否可能将控制和会话端点混合在一起?

于 2020-03-11T22:36:39.137 回答
0

不需要修改 CreateLedger 或 ConnectToLEdger 类中的端点或区域变量。

只需修改这个:

在 CreateLedger.getClient 方法中:

返回 builder .withRegion(Regions.US_EAST_1) .build();

在 ConnectToLedger.getAmazonQldbSessionClientBuilder 方法中:

返回 builder.region(Region.US_EAST_1);

通过这些更改,您可以让 SDK 为控制平面和事务数据平面找到正确的端点。

请查看https://docs.aws.amazon.com/qldb/latest/developerguide/getting-started.java.html#getting-started.java.prereqs

于 2020-08-13T18:50:08.740 回答
0

QLDB 有不同的服务端点,请参阅下面的示例端点。请检查您是否使用了正确的端点进行连接。请查看以下 QLDB文档

控制平面:qldb.us-east-1.amazonaws.com

事务数据平面:session.qldb.us-east-2.amazonaws.com

于 2020-05-17T18:14:32.573 回答