我需要将应用程序部署到AWS Beanstalk中的不同环境。因此,我可以使用MSBuild创建捆绑包,将zip文件上传到S3存储桶,然后部署到AWS EB。但是,我想根据环境更改某些web.config参数。例如,我想更改连接字符串。 现在我正在使用RDP手动更改web.config中的这些设置,或者必须使用更改的配置创建新包。但我希望在环境之间进行持续部署和升级,因此这些选项无效。
答案 0 :(得分:1)
为此,您可以使用配置脚本(.config)+一些aws环境变量。
背后的想法很简单。您可以使用函数Fn::GetOptionSetting
从aws设置中获取环境名称。然后,您可以使用powershell编辑文件,例如。
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html
我正在使用类似的方法在asp.net核心中设置windows环境变量。下面的脚本创建了一个PWS脚本并简单地执行它。
我附上了我用的脚本作为例子:
files:
"c:/cfn/set-aspnetcore-environment.ps1":
content: |
$envtype = "`{"Fn::GetOptionSetting": {"Namespace": "aws:elasticbeanstalk:application:environment", "OptionName": "AspNetCoreEnv"}}`"
$envtype | Out-File c:\cfn\set-aspnetcore-environment.txt
[Environment]::SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", $envtype, "Machine")
commands:
01_writeenv:
command: powershell.exe -ExecutionPolicy Bypass -File c:\\cfn\\set-aspnetcore-environment.ps1