在AWS Elastic Beanstalk上配置ASP.NET应用程序

在AWS Elastic Beanstalk上配置ASP.NET应用程序,asp.net,amazon-web-services,iis,amazon-elastic-beanstalk,Asp.net,Amazon Web Services,Iis,Amazon Elastic Beanstalk,我需要在AWS Beanstalk中将应用程序部署到不同的环境中。因此,我可以使用MSBuild创建捆绑包,将zip文件上载到S3 bucket,并部署到AWS EB。但是,我想根据环境更改某些web.config参数。例如,我想更改连接字符串。 现在,我正在使用RDP手动更改web.config中的这些设置,或者必须使用更改的配置创建新包。但我希望在环境之间进行连续部署和升级,因此这些选项不起作用。要做到这一点,您可以使用配置脚本(.config)+一些aws环境变量 这背后的想法相当直截了当

我需要在AWS Beanstalk中将应用程序部署到不同的环境中。因此,我可以使用MSBuild创建捆绑包,将zip文件上载到S3 bucket,并部署到AWS EB。但是,我想根据环境更改某些web.config参数。例如,我想更改连接字符串。
现在,我正在使用RDP手动更改web.config中的这些设置,或者必须使用更改的配置创建新包。但我希望在环境之间进行连续部署和升级,因此这些选项不起作用。

要做到这一点,您可以使用配置脚本(.config)+一些aws环境变量

这背后的想法相当直截了当。您可以使用函数
Fn::getoptionset
从aws设置中获取环境名称。然后,您可以使用powershell编辑文件,例如

我正在使用类似的方法在asp.net core中设置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

非常感谢你!