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

时间:2018-06-07 18:36:37

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

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

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

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

我应该在属性文件中添加什么内容?或者更好的是,AWS是否可以轻松获得特定于环境的属性?例如,我希望不必在源代码管理中的纯文本文件中保存我的实时实例访问密钥。或者我应该推出自己的机制?

1 个答案:

答案 0 :(得分:0)

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

For 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服务。不幸的是,你的问题太开放了,无法更具体地回答。