java - 如何从 Spring Java Elastic Beanstalk 应用程序连接到我的 AWS DynamoDB 实例?

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

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

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

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

我应该在属性文件中放入什么?或者更好的是,AWS 是否可以轻松拥有特定于环境的属性?例如,我不想将实时实例访问 key 保存在源代码管理中的纯文本文件中。或者我应该推出自己的机制?

最佳答案

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

对于 1 来说,这非常简单,有一个 java AWS SDK 提供了用于连接到 Dynamo 实例的接口(interface)。主要方法是将一些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,没有一个正确答案。我确实同意你的观点,将纯文本凭证放入存储库中并不是一个好方法。有几种更好的方法。基本思想是,您可以对存储库中保存 secret 的文本文件进行加密,然后在部署时对其进行解密。此解密可以手动完成或在某种部署脚本中完成。查看用于 AWS secret 管理的 AWS KMS 服务。不幸的是,您的问题太开放,无法更具体地回答。

关于java - 如何从 Spring Java Elastic Beanstalk 应用程序连接到我的 AWS DynamoDB 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50748073/

相关文章:

python - 在弹性 beanstalk 部署期间应用的环境变量

java - 查找具有给定地理点的最近 50 个项目

java - 抽象类的对象是匿名内部类吗?

java - AWS Redshift : libraries for mock/mirror redshift

amazon-web-services - 是否可以在AWS中的option_settings上使用Ref函数?

java - 快速查询包含键的表(DynamoDB 和 Java)

amazon-web-services - AWS 云形成 : Is it possible to Update Stack to recreate DB resources without data loss

java - 我的自定义 Vaadin 6 主题不工作

java - 迁移到 Java Web Start - Applet-Desc 会被弃用吗?

java - 如何判断其中一代堆是否已满?