【问题标题】:Cannot create elastic beanstalk with multiple IIS applications无法使用多个 IIS 应用程序创建弹性 beanstalk
【发布时间】: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 模板,但它也不起作用,它失败并显示非常相似的错误消息。

【问题讨论】:

标签: amazon-web-services amazon-elastic-beanstalk amazon-cloudformation


【解决方案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(或任何其他命令行工具)安装您的应用程序,则可以使用云形成来完成。如果/当您遇到问题时,试一试并提出一个新问题。
猜你喜欢
  • 2018-11-22
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 2015-03-05
  • 1970-01-01
  • 2016-05-15
  • 2014-12-29
  • 1970-01-01
相关资源
最近更新 更多