我正在使用AWS Elastic Beanstalk来部署系统。这一切都很好。如果我想要一个UAT和PROD环境,我可以设置两个不同的弹性豆茎应用程序,这也很好。现在我的问题是:假设我的应用程序使用dynamoDB或S3存储桶(EB部署之外的东西),我如何为UAT和PROD提供不同版本的这些存储桶?
以dynamo为例:您有一个dynamo DB实例,而不是每个EB部署一个。我的代码会写入一个"用户"表,但如果只有一个dynamoDB,如何停止UAT和PROD使用同一个用户表?
与S3铲斗相同?理想情况下,您想要的是prod.mybucket.xxx和uat.my bucket.xxxx
我显然错过了什么,你能告诉我吗?:)
您可以使用Elastic Beanstalk环境变量(此示例适用于java,但在其他语言中类似)。使用一个来跟踪环境类型(例如PARAM1=dev或PARAM1=uat),然后用前缀命名您的其他资源(存储桶/发电机表)
s3桶->生产myapp桶/uat myapp桶
在您的代码中,只需在引导程序中获取param1,并以这种方式打开您的aws资源。这就是beanstall让您的应用程序知道要连接到哪个数据库的方式(在Java中,它是JDBC_CONNECTION_STRING)。
或
您可以使用AWSAPI查询实际的ElasticBeanstalk环境名称来执行类似的操作(根据您使用的语言,它类似于"描述环境")。