【问题标题】:AWS QLDB - Java Tutorial Step 2 (ConnectToLeger) - Unable to determine service/operation name to be authorizedAWS QLDB - Java 教程步骤 2 (ConnectToLeger) - 无法确定要授权的服务/操作名称
【发布时间】:2020-03-08 09:01:49
【问题描述】:

我正在尝试从此处找到的 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 文件中是正确的。 无论我尝试什么,我都会不断收到上面显示的异常。

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

【问题讨论】:

  • 请检查您的 AWS 访问密钥 ID 是否订阅了此服务。还要检查这个documentation
  • 您好,感谢您的意见。我已经在 AWS 控制台中注册了 QLDB,IAM 用户拥有对 QLDB 的完全访问权限,并且如前所述,我还使用该 IAM 用户创建了一个分类帐,我可以在控制台中看到该分类帐。我从常见错误开始,但似乎都与我的问题无关。

标签: java amazon-web-services amazon-iam amazon-qldb


【解决方案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。

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      只需修改这个:

      在 CreateLedger.getClient 方法中:

      返回生成器 .withRegion(Regions.US_EAST_1) .build();

      在 ConnectToLedger.getAmazonQldbSessionClientBuilder 方法中:

      return builder.region(Region.US_EAST_1);

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-27
        • 1970-01-01
        相关资源
        最近更新 更多