首页 >Java >从 springboot 应用程序访问 AWS Keyspace

从 springboot 应用程序访问 AWS Keyspace

王林
王林转载
2024-02-11 19:27:081235浏览

php小编西瓜今天为大家介绍一种方法,可以让我们的Spring Boot应用程序访问AWS Keyspace。AWS Keyspace是一种托管的Apache Cassandra数据库服务,可提供高度可扩展和高度可用的存储解决方案。通过使用Spring Data Cassandra和Spring Cloud AWS,我们可以轻松地连接和操作AWS Keyspace,从而使我们的应用程序能够无缝地与这个强大的数据库服务进行交互。本文将向您展示如何配置和使用Spring Boot应用程序来访问AWS Keyspace,以及如何执行基本的CRUD操作。让我们开始吧!

问题内容

我正在尝试进行 POC 来了解如何从 springboot 应用程序连接 AWS Keyspace。我从本地桌面运行它。

我正在使用 IAM 用户 accesskey/secret 并使用 datastax 和 aws java sdk 依赖项。

application.properties

aws.accessKey=ACCESS_KEY
aws.secretKey=SECRET_KEY
aws.region=us-east-2
aws.keyspace.endPoint=cassandra.us-east-2.amazonaws.com
aws.keyspace.name=test_keyspace

我还使用 BasicAWSCredentials 和 AmazonKeyspaceClientBuilder 使用上述属性创建了一个 AmazonKeyspace Bean。我对此端点有疑问,无论这是否正确

但是当我运行应用程序时,它失败并出现 AllNodesFailedException。 您能让我知道如何解决这个问题吗?我不确定我是否为此遗漏了一些东西。

解决方法

要在 Java 项目中使用 Keyspace,建议您使用 software.amazon.awssdk.services.keyspaces.KeyspacesClient,这是适用于 V2 的 AWS 开发工具包。 AWS Java V1 即将被弃用:

https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-java-v1-x-on-december- 31-2025/

您需要执行几个步骤:

  1. 创建引用 JKS 文件的 application.conf 文件。见下文。

  2. 您必须创建 Cassandra Java 客户端驱动程序 (JKS) 文件。该文件是一种安全文件格式,用于保存 Java 应用程序的证书信息。这是连接到 Amazon Keyspaces 所必需的。有关更多信息,请参阅以下文档主题:https://docs。 aws.amazon.com/keyspaces/latest/devguide/using_java_driver.html

您将需要 application.conf 文件。这是内容。请注意,它引用了 JKS 文件。

datastax-java-driver {
            basic.contact-points = ["cassandra.us-east-1.amazonaws.com:9142"]
            basic.load-balancing-policy {
                class = DefaultLoadBalancingPolicy
                local-datacenter = us-east-1
                slow-replica-avoidance = false
            }
            advanced {
                auth-provider = {
                    class = software.aws.mcs.auth.SigV4AuthProvider
                    aws-region = us-east-1
                }
                ssl-engine-factory {
                    class = DefaultSslEngineFactory
                    truststore-path = "C:\\Users\\scmacdon\\KeyspaceCert\\cassandra_truststore.jks"
                    truststore-password = "11xxxxxxxx"
                    hostname-validation = false
                }
            }
        }

要使用 KeyspacesClient 和所需的 CqlSession 对象,请使用下面的代码。

String configFilePath = "C:\\AWS\\application.conf";
    Region region = Region.US_EAST_1;
    KeyspacesClient keyClient = KeyspacesClient.builder()
        .region(region)
        .build();
    
   DriverConfigLoader loader = DriverConfigLoader.fromFile(new File(configFilePath));
   CqlSession session = CqlSession.builder()
       .withConfigLoader(loader)
       .build();

要处理凭证,请参阅此处的 Java V2 开发指南:默认凭证提供程序链

您还需要一个 movies.json 文件来获取完整示例。您可以在这里找到:

https://github.com/awsdocs /aws-doc-sdk-examples/tree/main/resources/sample_files

要在 Java V2 中运行完整示例,请运行此代码。这将使您熟悉 V2 KeyspacesClient。

参见:

https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javav2/example_code/keyspaces/src/main/java/com/example/keyspace/ScenarioKeyspaces .java

请注意,此示例太大,无法在此处发布。

我刚刚运行了这个并且它有效......

以上是从 springboot 应用程序访问 AWS Keyspace的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除