我使用AWS Elastic Beanstalk部署系统。一切正常。如果我想要一个UAT和PROD环境,我可以设置2个不同的弹性beanstalk应用程序,这也可以。现在我的问题:假设我的应用程序使用dynamoDB或S3存储桶(EB部署之外的东西)如何为UAT和PROD提供不同版本的这些?
采用发电机:您有 A 发电机数据库实例,而不是每个EB部署实例。我的代码会写给用户'表,但是如果只有一个dynamoDB,你如何使用相同的用户表停止UAT和PROD?
与S3桶相同?你理想的是prod.mybucket.xxx和uat.my bucket.xxx
我明显遗漏了什么,你能告诉我什么吗? :)
答案 0 :(得分:0)
您可以使用Elastic Beanstalk environment variables(此示例适用于java,但在其他语言中类似)。使用一个来跟踪环境类型(例如PARAM1 = dev或PARAM1 = uat),然后使用前缀
命名您的其他资源(存储桶/发电机表)s3 bucket - > prod-myapp-bucket / uat-myapp-bucket
在你的代码中,只需在bootstrap中抓取param1并以这种方式调出你的aws资源。这就是beanstalk让你的应用程序知道连接哪个数据库的方式(在Java中它是JDBC_CONNECTION_STRING)。
OR
您可以使用AWS api查询实际的Elastic Beanstalk环境名称以执行类似的操作(取决于您使用的语言,它类似于' Describe Environment')。