如何阻止AWS Elastic Beanstalk部署.NET Framework应用时创建Portal_deploy文件夹
解决AWS Elastic Beanstalk部署.NET Framework应用时创建子文件夹的问题
1. 如何阻止创建“Portal_deploy”子文件夹?
有几种直接的方法可以实现将ZIP包文件直接部署到C:\inetpub\wwwroot:
方法一:修正ZIP包的结构
确保你的Portal.zip根目录下直接包含应用的所有文件(比如web.config、bin文件夹、页面文件等),而不是先嵌套一个名为Portal的文件夹。多数情况下EB创建xxx_deploy文件夹,是因为ZIP包内容被嵌套在同名子目录里,EB会自动将这个子目录重命名为xxx_deploy并生成重写规则。
方法二:使用.ebextensions配置强制指定部署目录
在应用根目录下创建.ebextensions文件夹,里面新建一个deploy-settings.config文件,内容如下:
files: "C:\\Program Files\\Amazon\\ElasticBeanstalk\\config\\containerconfiguration": content: | containerconfiguration: dotnet: deploy_path: "C:\\inetpub\\wwwroot" iis: web_site: physical_path: "C:\\inetpub\\wwwroot"
这个配置会覆盖EB默认的部署路径,强制将应用文件直接部署到wwwroot根目录,不再创建子文件夹。
方法三:使用部署脚本自定义部署流程
如果上面的方法不生效,可以添加PowerShell部署脚本。在.ebextensions中创建deploy-script.config:
container_commands: 01_deploy_to_root: command: | Remove-Item -Path "C:\inetpub\wwwroot\*" -Recurse -Force Copy-Item -Path "C:\staging\*" -Destination "C:\inetpub\wwwroot" -Recurse -Force ignoreErrors: false
EB会先将ZIP包解压到C:\staging临时目录,这个脚本会把临时目录里的所有文件直接复制到wwwroot,并清空原有内容。
2. Elastic Beanstalk为何自动创建该文件夹,能否禁用?
EB创建xxx_deploy文件夹是默认的部署逻辑:
- 当EB检测到ZIP包根目录包含与应用名称(或ZIP包名称)同名的子文件夹时,会自动将该子目录重命名为
xxx_deploy,并生成重写规则保证URL访问正常。 - 另外,EB的IIS容器默认会为每个部署版本创建独立子目录,通过重写规则路由请求,避免部署过程中影响现有应用。
这种行为可以通过上述.ebextensions配置或修正ZIP包结构完全禁用。只要ZIP包结构正确,或者通过配置强制指定部署路径,就不会再生成xxx_deploy文件夹和对应的重写规则。
内容的提问来源于stack exchange,提问作者Reyansh Kharga
相关产品推荐
相关产品推荐

