如何使用 AWS CodeDeploy and/or CloudFormation 配置 application.properties?
How can I configure application.properties using AWS CodeDeploy and/or CloudFormation?
我在 Elastic Beanstalk 上部署了一个 Spring Web 服务。我将 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。
一般来说,在任何类型的文件或部署自动化中包含访问密钥和秘密密钥是一种不好的做法。
您的应用程序部署到的实例应该有一个实例配置文件(即 IAM 角色)附加到它应该具有您需要的适当 DynamoDB 权限。
如果您附加了该实例配置文件,SDK 应该能够自动检测需要与之通信的凭据、区域和端点。
您可能需要更新创建 DynamoDB 客户端的方式以仅使用默认值。
要以 AWS SDK 可以检索的方式使用这些属性设置您的开发机器而无需将它们显式放入属性文件中,您可以 运行 AWS CLI 的 aws configure
命令应该使用有关您的区域和凭据的信息设置您的 ~/.aws/
文件夹以在您的开发机器上使用。
我在 Elastic Beanstalk 上部署了一个 Spring Web 服务。我将 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。
一般来说,在任何类型的文件或部署自动化中包含访问密钥和秘密密钥是一种不好的做法。
您的应用程序部署到的实例应该有一个实例配置文件(即 IAM 角色)附加到它应该具有您需要的适当 DynamoDB 权限。
如果您附加了该实例配置文件,SDK 应该能够自动检测需要与之通信的凭据、区域和端点。
您可能需要更新创建 DynamoDB 客户端的方式以仅使用默认值。
要以 AWS SDK 可以检索的方式使用这些属性设置您的开发机器而无需将它们显式放入属性文件中,您可以 运行 AWS CLI 的 aws configure
命令应该使用有关您的区域和凭据的信息设置您的 ~/.aws/
文件夹以在您的开发机器上使用。