部署到 AWS Elastic Beanstalk 时的 ConnectionString 转换

Posted

技术标签:

【中文标题】部署到 AWS Elastic Beanstalk 时的 ConnectionString 转换【英文标题】:ConnectionString Transforms when deploying to AWS Elastic Beanstalk 【发布时间】:2017-05-07 11:01:32 【问题描述】:

我的反对

在我当前的项目中,我正在尝试将 .NET MVC 项目部署到 AWS 上的 Elastic Beanstalk。我过去通常使用 Azure,但在跟踪连接字符串的配置转换信息时遇到了困难。

我尝试过的

已经发现我可以更改/操作 AppSettings,但我不太喜欢将我的连接字符串移动到 appsettings 的想法,如果我不是绝对必须这样做的话。

此外,我不想对生产环境进行 Web.Release.config 转换,因为该项目可能会发布到开发、暂存和生产环境,所有环境都带有单独的连接字符串。

我也尝试查看 ebextensions,但我还没有完全指出改变任何东西的连接字符串的方向。

我在寻找什么

是否有人有任何他们使用过的解决方案或可以推荐的任何资源(博客、指南等)?

tl;博士

寻找一种方法来为部署在 AWS Elastic Beanstalk 上的 ASP.NET MVC 项目执行 ConnectionString 转换。

【问题讨论】:

【参考方案1】:

我没有任何指南,但您可以使用以下步骤来实现您想要做的事情:

    使用配置管理器为每个环境创建新配置 添加其他配置转换(右键单击 Web.config,然后单击“添加配置转换”) 在配置转换中为每个环境设置连接字符串转换值 创建发布配置文件(右键单击 Asp.Net Mvc 项目并单击发布) 将发布方法设置为“Web 部署包” 设置配置以匹配您要使用的环境,这将自动应用正确的配置转换 将包发布到某个位置,然后作为新版本上传到您的 Elastic Beanstalk 为每个环境重复创建配置和发布配置文件

请注意,连接字符串在部署包中进行了参数化,实际值将出现在部署 zip 包中的 parameters.xml 文件中,并且 Web.config 将仅具有替换令牌。部署包时,Elastic Beanstalk 会将参数化应用到 Web.config。

【讨论】:

Web Deploy Package 是我们的正确解决方案。对我来说,缺少的部分是 awsdeploy 工具拾取包并从那里进行部署,如果这有意义的话。 @KevinR。但是这个解决方案是否仍然给您留下了您并不真正想要的多个转换?我正在寻找类似的东西,但能够将连接字符串设置为 Beanstalk 环境的一部分。到目前为止,我已经找到了这个答案:***.com/questions/19917010/… 但这似乎只适用于 AppSettings(和你一样,我想继续使用连接字符串)。 你用的是框架还是核心?使用核心更容易

以上是关于部署到 AWS Elastic Beanstalk 时的 ConnectionString 转换的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS CodeBuild 和 EB CLI 部署到 AWS Elastic Beanstalk

部署到 AWS Elastic Beanstalk 时的 ConnectionString 转换

AWS Elastic Beanstalk 部署后脚本

如何使用TFS 2017部署到Elastic Beanstalk?

如何使用 Elastic beanstalk 和 Dockerrun.aws.json 正确部署到 AWS?

超时后无法部署到 AWS Elastic Beanstalk