无法使用多个 IIS 应用程序创建弹性 beanstalk

Posted

技术标签:

【中文标题】无法使用多个 IIS 应用程序创建弹性 beanstalk【英文标题】:Cannot create elastic beanstalk with multiple IIS applications 【发布时间】:2014-02-10 00:27:29 【问题描述】:

我正在尝试将生产 Web 服务器迁移到 AWS,该服务器是基于 Windows 的 IIS,在 1 个网站下定义了多个应用程序。我已经尝试过 Elastic Beanstalk 和 Cloud Formation。我更喜欢弹性 beanstalk,但我会对任何具有自动缩放和简单部署例程的东西感到满意。

我创建了一个带有一个子应用程序的示例网站,它在本地运行良好。我尝试编辑弹性 beanstalk 的默认 AMI 以添加额外的应用程序并部署到它。当我尝试使用新的 AMI 重新部署应用程序时,它未能完成部署,并出现以下错误。

[实例:i-3f13bc11 模块:AWSEBAutoScalingGroup 配置集: Infra-WriteRuntimeConfig、Infra-WriteApplication1、 Infra-WriteApplication2、Infra-EmbeddedPreBuild、Hook-PreAppDeploy、 Hook-EnactAppDeploy、Infra-EmbeddedPostBuild、Hook-PostAppDeploy] 命令在实例上失败。返回码:1 输出:null。

我确实尝试使用 Visual Studio 附带的 cloud-formation 模板,但它也不起作用,它失败并显示非常相似的错误消息。

【问题讨论】:

自定义windows实例后,需要运行EC2Config服务Sysprep。有关 EC2Config 的信息,请转到使用 EC2Config 服务配置 Windows 实例。docs.aws.amazon.com/elasticbeanstalk/latest/dg/… 【参考方案1】:

执行此操作的最佳方法是使用 CloudFormation 创建一个自动缩放组。在 LaunchConfiguration 类型中,您可以从 S3 添加文件并指示 IIS 安装应用程序。例如:

"WebAsSpotLaunchConfiguration" : 
            "Type" : "AWS::AutoScaling::LaunchConfiguration",
            "Metadata" : 
                "AWS::CloudFormation::Init" : 
                    "config" : 
                        "sources" : 
                            "C:\\inetpub\\wwwroot" : 
                                "Fn::Join" : [
                                    "/",
                                    [
                                        "http://s3.amazonaws.com",
                                        
                                            "Ref" : "DeployS3Bucket"
                                        ,
                                        
                                            "Ref" : "DeployWebS3Key"
                                        
                                    ]
                                ]
                            
                        ,
                        "commands" : 
                            "1-add-app-1" : 
                                "command" : "C:\\Windows\\System32\\inetsrv\\appcmd add app /site.name:MySite /path:/app1 /physicalPath:C:\inetpub\mysite\app1",
                                "waitAfterCompletion" : "0"
                            ,
                            "2-add-app-2"     : 
                                "command" : "C:\\Windows\\System32\\inetsrv\\appcmd add app /site.name:MySite /path:/app2 /physicalPath:C:\inetpub\mysite\app2",
                                "waitAfterCompletion" : "0"
                            
                        
                    
                ,

我知道,如果您还不了解 CloudFormation,这可能需要一些时间来设置。但在我看来,这是值得投资的。

【讨论】:

我尝试使用 CloudFormation,但遇到了与使用 Beanstalk 相同的问题。我没有绑定到任何一个平台,我对这两个平台都很满意,我会试一试。我有点不确定您如何从 S3 存储桶部署到各个应用程序中。您能否提供一些关于如何从您那里提取部署包的见解,可以从 S3 添加您的文件并指示 IIS 安装应用程序。我喜欢这种方法,我只是没有任何例子。 @JustEngland 只需从安装了 IIS 的 ami 开始,将两个应用程序的所有 Web 文件放入一个 zip 文件,然后将文件部署到 S3。 Cloud Formation 获取 zip 并将其解压缩到 inetpub 目录。如果你愿意,你可以做多个拉链。如果您可以使用 appcmd(或任何其他命令行工具)安装您的应用程序,则可以使用云形成来完成。如果/当您遇到问题时,试一试并提出一个新问题。

以上是关于无法使用多个 IIS 应用程序创建弹性 beanstalk的主要内容,如果未能解决你的问题,请参考以下文章

带有 IIS 的 Amazon 弹性负载均衡器

validate_email python库在本地机器上工作,但不在aws弹性bean上

我正在尝试使用 .ebextensions 配置在弹性 beanstalk 上安装 pdftk 服务器,但无法安装

无法在 AWS 中使用 RDS 创建弹性 Beanstalk 环境

IIS 上的 Gzip 压缩 - 无法正常工作

当我尝试使用 Spring Boot 为 SessionFactory 创建 bean 时无法解析的循环引用