【问题标题】:How do I connect to my AWS DynamoDB instance from a Spring Java Elastic Beanstalk app?如何从 Spring Java Elastic Beanstalk 应用程序连接到我的 AWS DynamoDB 实例?
【发布时间】:2018-06-08 06:20:47
【问题描述】:

我正在涉足 DynamoDB,并使用 Spring Boot 编写了一个应用程序。

我在本地(在我自己的桌面上)开发了它,连接到我自己的也在本地运行的 DynamoDB 实例。我的连接信息保存在resources 的属性文件中(包含在类路径中)。

我想在 AWS 的 Elastic Beanstalk 上运行它以连接到 AWS 托管的 DynamoDB 实例。

我应该在我的属性文件中添加什么?或者更好的是,AWS 是否可以轻松拥有特定于环境的属性?例如,我宁愿不必将我的实时实例访问密钥保存在源代码控制中的纯文本文件中。还是我应该推出自己的机制?

【问题讨论】:

    标签: java amazon-web-services amazon-dynamodb amazon-elastic-beanstalk


    【解决方案1】:

    这个问题实际上是两个问题:1)如何将 Java 应用程序连接到 AWS Dynamo 数据库实例以及 2)如何安全地管理凭证。

    对于 1,它非常简单,有一个 java AWS SDK,它提供了一个用于连接到 Dynamo 实例的接口。主要方式是将一些 AWS 凭证导出为环境变量,然后 AWS SDK 会自动提取它们并进行身份验证:

    export AWS_ACCESS_KEY_ID=your_access_key_id
    export AWS_SECRET_ACCESS_KEY=your_secret_access_key
    

    然后你可以在你的代码中实例化一个 Dynamo 客户端:

    AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard()
        .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(
            "http://localhost:8000",
            "us-west-2"))
        .build(); 
    

    https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/CodeSamples.Java.html

    对于 2,没有一个正确答案。我同意你的观点,将凭证以纯文本形式放在 repo 中并不是一个好方法。有几种更好的方法。基本思想是,您将加密存储库中保存机密的文本文件,然后在部署时对其进行解密。这种解密可以手动完成,也可以在某种部署脚本中完成。查看用于 AWS 密钥管理的 AWS KMS 服务。不幸的是,您的问题过于开放,无法更具体地回答。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-07
      • 2016-02-15
      • 2020-11-09
      • 2015-03-14
      • 2016-01-09
      • 2019-08-28
      • 2019-04-20
      • 2020-06-27
      相关资源
      最近更新 更多