如何使用AWS CodeDeploy和/或CloudFormation配置application.properties?

时间:2019-05-10 00:44:12

标签: spring amazon-web-services spring-boot amazon-cloudformation aws-code-deploy

我在Elastic Beanstalk上部署了Spring Web Service。我将AWS CloudFormation用于基础架构,并使用AWS CodePipeline从合并到主分支自动部署Web服务。

最近,我添加了DynamoDB集成,并且需要在application.properties中配置一些内容。我尝试使用环境变量来配置application.properties,但是在尝试从CodeDeploy设置环境变量时遇到了麻烦。

这是我的application.properties

amazon.dynamodb.endpoint=${DYNAMODB_ENDPOINT:http://localhost:8000}
amazon.dynamodb.region=${AWS_REGION:default-region}
amazon.dynamodb.accesskey=${DYNAMODB_ACCESS_KEY:TestAccessKey}
amazon.dynamodb.secretkey=${DYNAMODB_SECRET_KEY:TestSecretKey}

spring.data.dynamodb.entity2ddl.auto = create-drop
spring.data.dynamodb.entity2ddl.gsiProjectionType = ALL
spring.data.dynamodb.entity2ddl.readCapacity = 10
spring.data.dynamodb.entity2ddl.writeCapacity = 1

默认值适用于当我运行本地DynamoDB实例时,它们可以正常工作。但是,我不知道如何让CodeDeploy为我设置环境变量,我也考虑过让CloudFormation设置环境变量,但也找不到如何做到这一点。我尝试在EC2实例中手动设置环境变量,但这没有用,也不是我在使用EB时要寻找的解决方案,并且希望该项目使用全自动部署。请告诉我是否可行,配置Web服务的行业标准是什么,以及是否误解了CodeDeploy或CloudFormation。

1 个答案:

答案 0 :(得分:0)

通常,将访问和密钥包含在任何类型的文件中或部署自动化中是一种不好的做法。

部署了您的应用程序的实例应具有一个附加到其上的实例配置文件(即IAM角色),该配置文件应具有所需的相应DynamoDB权限。

如果您附加了该实例配置文件,则SDK应该能够自动检测需要与之通信的凭据,区域和端点。

您可能需要更新创建DynamoDB客户端的方式以仅使用默认值。

要以一种具有这些属性的方式将您的开发机器设置为AWS开发工具包可以检索而无需将其显式放入属性文件的方式,您可以运行AWS CLI的aws configure命令来设置{{1} }文件夹,其中包含有关您所在地区的信息以及要在开发计算机上使用的凭据。