eb migrate - AWS Elastic Beanstalk

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

eb migrate

描述

将互联网信息服务 (IIS) 网站和应用程序从 Windows 服务器迁移到 Elastic Beanstalk。该命令会打包您的应用程序,保留其配置,然后将其部署到新的 Elastic Beanstalk 环境中。

有关迁移 IIS 站点和应用程序的更多信息,请参阅将 IIS 应用程序迁移到 Elastic Beanstalk

注意

在使用此命令之前,请确保您的系统满足以下要求:

  • 互联网信息服务 (IIS) 版本 7.0 或更高版本

  • 已安装 Web 部署 3.6 或更高版本

  • Windows 服务器上的管理权限

  • AWS 配置了适当权限的凭证

  • 您的源服务器对 AWS 服务具有出站互联网访问权限。

以下步骤概述了迁移过程:

  1. 发现 IIS 站点及其配置。

  2. Package 应用程序内容和配置。

  3. 创建 Elastic Beanstalk 环境和应用程序。

  4. 使用保留的设置部署应用程序。

该命令在结构化目录中创建迁移项目,如以下列表所示:

C:\migration_workspace\ └── .\migrations\latest\ ├── upload_target.zip └── upload_target\ ├── [SiteName].zip # One ZIP per default application of IIS site ├── [SiteName-ApplicationName].zip # One ZIP per additional application ├── aws-windows-deployment-manifest.json └── ebmigrateScripts\ ├── site_installer.ps1 # Site installation scripts ├── permission_handler.ps1 # Permission management └── other helper scripts

eb migrate cleanup用于管理这些工件。

语法

eb migrate [options]

eb migrate explore [options]

eb migrate cleanup [options]

在不带参数的情况下运行时,在非交互模式下eb migrate运行。要在交互模式下执行它,请运行eb migrate --interactive

交互模式命令提示输入以下信息:

  • 选择要迁移的 IIS 站点

  • 环境和应用程序名称

  • 平台版本选择

  • 实例类型和其他配置选项

子命令

explore

eb migrate explore子命令会检查您的 IIS 服务器并列出可用站点。

使用此命令显示以下信息:

  • 查看服务器上的所有 IIS 站点

  • 使用--verbose,检查详细配置,包括:

    • 网站绑定和端口

    • 应用程序池

    • 虚拟目录及其物理路径

    • 身份验证设置

PS C:\migrations_workspace > eb migrate explore Default Web Site Site2 site3 router
PS C:\migrations_workspace > eb migrate explore --verbose 1: Default Web Site: - Bindings: - *:8083: - Application '/': - Application Pool: DefaultAppPool - Enabled Protocols: http - Virtual Directories: - /: - Physical Path: C:\inetpub\wwwroot - Logon Method: ClearText - Application '/dotnet-6-0': - Application Pool: DefaultAppPool - Enabled Protocols: http - Virtual Directories: - /: - Physical Path: C:\inetpub\AspNetCoreWebApps\CoreWebApp-6-0 - Logon Method: ClearText - Application '/dotnet-8-0': - Application Pool: DefaultAppPool - Enabled Protocols: http - Virtual Directories: - /: - Physical Path: C:\inetpub\AspNetCoreWebApps\CoreWebApp-8-0 - Logon Method: ClearText 2: Site2: - Bindings: - *:8081: ...

清理

eb migrate cleanup子命令通过以下操作管理迁移工件:

  • 保留最近成功迁移的内容 ./migrations/latest

  • 正在删除较旧的迁移目录

  • 维护关键配置文件

PS C:\migrations_workspace > eb migrate cleanup Are you sure you would like to cleanup older artifacts within `./migrations/`? (y/N):

--force用于在清理期间跳过确认提示。

PS C:\migrations_workspace > eb migrate cleanup --force

选项

这些选项都不是必需的。如果您在没有任何选项eb migrate的情况下运行,EB CLI 将在非交互模式下执行。使用eb migrate --interactive,EB CLI 会提示您输入或选择所需设置的值。

名称

描述

-a application-name

--application-name application-name

新的 Elastic Beanstalk 应用程序的名称。

类型:字符串

默认: EBMigrated应用程序

--archive directory-or-zip

包含先前由生成的源代码的目录或 ZIP 文件eb migrate --archive-only

使用此选项部署先前创建的迁移包。

示例:--archive .\migrations\latest\upload_target--archive .\migrations\latest\upload_target.zip

-ao

--archive-only

仅创建目标存档目录,无需部署。

可以使用archive选项或手动部署生成的目录eb deployeb migrate

-c subdomain-name

--cname subdomain-name

用于在迁移的应用程序的 CNAME DNS 条目前缀的子域名。

类型:字符串

默认值:环境名称

-cf

--copy-firewall-config

将所有具有活动绑定的 HTTP 端口的源服务器防火墙配置复制到目的地。

在中创建相应的安全组规则 AWS。

-es snapshot-id [snapshot-id ...]

--ebs-snapshots snapshot-id [snapshot-id ...]

要与环境关联的 Amazon EBS 快照列表 IDs ,以逗号分隔。

示例:--ebs-snapshots snap-1234567890abcdef0, snap-0987654321fedcba1

--encrypt-ebs-volumes

对所有新的 Amazon EBS 卷强制加密。

重要

这是一个账户范围的设置,会影响未来所有 Amazon EBS 卷的创建。

-e environment-name

--environment-name environment-name

新 Elastic Beanstalk 环境的名称。

类型:字符串

默认: EBMigrated环境

限制:长度必须介于 4 到 40 个字符之间。只能包含字母、数字和连字符。不得以连字符开头或结尾。

--force

在操作期间跳过确认提示。

cleanup子命令一起使用时,无需确认即可删除迁移工件。

-ip profile-name

--instance-profile profile-name

要与环境的 Amazon EC2 实例关联的实例配置文件。

如果未指定,则创建一个具有访问 Elastic Beanstalk 资源的权限的默认实例配置文件。有关更多信息,请参阅 Elastic Beanstalk 实例配置文件

-i instance-type

--instance-type instance-type

您的 Elastic Beanstalk 环境的亚马逊 EC2 实例类型。

类型:字符串

默认:c5.2xlarge

有关可用的实例类型,请参阅亚马逊 EC2 用户指南中的亚马逊 EC2 实例类型

-in

--interactive

强制迁移过程采用交互模式。

即使默认值可用,也会提示输入配置值。

-k key-name

--keyname key-name

Amazon EC2 key pair 用于启用 RDP 访问环境实例。

对于调查日志中看不到的实例级问题很有用。

有效值:在 Amazon 注册的现有密钥对名称 EC2

-p platform-version

--platform platform-version

适用于环境的 Elastic Beanstalk 平台运行时。如果未指定,则自动从主机 Windows 服务器版本中检测到。

示例:"64bit Windows Server 2016 v2.16.2 running IIS 10.0"

有关可用平台版本的列表,请使用 eb 平台列表

--remote

表示在远程模式下执行迁移。此选项允许从堡垒主机执行,堡垒主机连接到包含要迁移到 Elastic Beanstalk 的应用程序和配置的目标服务器。在堡垒服务器上运行,eb migrate发现配置,在堡垒主机上暂存迁移逻辑,然后将您的应用程序部署到新的 Elastic Beanstalk 环境中。

使用此选项,您无需在需要迁移的 Windows 服务器上安装 EB CLI 和 Python。改为在堡垒主机上安装 Python 和 EB CLI,在堡垒主机上运行带有--remote选项的eb migrate命令。使用--target-ip选项指定要迁移的 IIS 配置的主机。

必须与--target-ip--username、和一起使用--password

--target-ip ip-address

包含要迁移的 IIS 服务器的远程 Windows 计算机的公有 IP 地址。

使用时为必填项--remote。只能在使用时指定--remote

--username username

用于访问包含要迁移的 IIS 服务器的远程 Windows 计算机的用户配置文件的用户名。

使用时为必填项--remote。只能在使用时指定--remote

--password password

用户配置文件的密码,用于访问包含要迁移的 IIS 服务器的远程 Windows 计算机。

使用时为必填项--remote。只能在使用时指定--remote

-sr role-name

--service-role role-name

Elastic Beanstalk 的 IAM 服务角色用于管理相关服务。 AWS

如果未指定,则创建具有必要权限的默认服务角色。有关更多信息,请参阅 Elastic Beanstalk 服务角色

注意

仅指定角色名称,而不是完整的 ARN。Elastic Beanstalk 会自动创建完整的 ARN。

-s site-names

--sites site-names

以逗号分隔的待迁移的 IIS 站点列表。如果未指定,则迁移服务器上的所有可用站点。

示例:--sites "Default Web Site,Intranet,API"

--ssl-certificates certificate-arn[,certificate-arn ...]

要与 Application Load Balancer 关联的 ACM SSL 证书列表 ARNs ,以逗号分隔。

迁移具有 HTTPS 绑定的网站时是必需的。

示例:--ssl-certificates arn:aws:acm:region:account:certificate/certificate-id

-t key1=value1[,key2=value2 ...]

--tags key1=value1[,key2=value2 ...]

用逗号分隔的key=value对列表,用于标记环境中的新资源:环境、Elastic Beanstalk 应用程序、应用程序版本。

有关更多信息,请参阅 标记环境

--verbose

在迁移过程中显示详细信息。

explore子命令一起使用时,显示全面的站点配置详细信息。

-vpc config-file-or-string

--vpc-config config-file-or-string

环境的 VPC 配置,指定为 JSON 文件路径或 JSON 字符串。

配置必须包括:

{ "id": "vpc-1234567890abcdef0", "publicip": "true|false", "elbscheme": "public|private", "ec2subnets": ["subnet-a1b2c3d4", "subnet-e5f6g7h8"], "securitygroups": "sg-123456,sg-789012", "elbsubnets": ["subnet-a1b2c3d4", "subnet-e5f6g7h8"] }
  • id:(必填)VPC 标识符

  • publicip: 是否将公共分配 IPs 给实例

  • elbscheme: 负载均衡器方案(公共或私有)

  • ec2subnets: EC2 实例 IDs 的子网列表

  • securitygroups: 以逗号分隔的安全组 IDs

  • elbsubnets: 负载均衡 IDs 器的子网列表

重要

当您指定--vpc-config参数时,迁移将忽略源环境中的任何现有 VPC 设置。使用此参数时,迁移将仅使用您在传入的配置文件中指定的 VPC 设置。使用此参数会覆盖发现源实例的 VPC 配置或使用默认 VPC 的默认行为。

常用选项

输出

该命令在整个迁移过程中提供状态更新:

  1. VPC 配置检测(在 EC2 实例上运行时)

  2. 每个站点的源包生成进度

  3. 环境创建状态

  4. 部署进度

如果成功,则显示新环境的详细信息,包括:

  • 环境名称和 ID

  • 应用程序名称

  • 区域

  • 平台版本

  • 环境 CNAME

对于迁移期间出现的问题,请使用eb eventseb health命令获取详细信息。

示例

基本用法

交互模式下的基本迁移:

PS C:\migrations_workspace > eb migrate Identifying VPC configuration of this EC2 instance (i-0123456789abcdef0): id: vpc-1234567890abcdef0 publicip: true elbscheme: public ec2subnets: subnet-123,subnet-456,subnet-789 securitygroups: sg-123,sg-456 elbsubnets: subnet-123,subnet-456,subnet-789 Using .\migrations\latest to contain artifacts for this migration run. Generating source bundle for sites, applications, and virtual directories... Default Web Site/ -> .\migrations\latest\upload_target\DefaultWebSite.zip Creating application version Creating environment Environment details for: EBMigratedEnv Application name: EBMigratedApp Region: us-west-2 Deployed Version: app-230320_153045 Environment ID: e-abcdef1234 Platform: 64bit Windows Server 2019 v2.7.0 running IIS 10.0 Tier: WebServer-Standard-1.0 CNAME: ebmigratedenv.us-west-2.elasticbeanstalk.com Updated: 2023-03-20 15:30:45

使用自定义配置迁移特定站点:

PS C:\migrations_workspace > eb migrate ` --sites "Default Web Site,InternalAPI" ` --application-name "CorporateApp" ` --environment-name "Production" ` --instance-type "c5.xlarge" ` --tags "Environment=Production,Team=WebOps" ` --copy-firewall-config

无需部署即可创建迁移存档:

PS C:\migrations_workspace > eb migrate --archive-only Using .\migrations\latest to contain artifacts for this migration run. Generating source bundle for sites, applications, and virtual directories... Default Web Site/ -> .\migrations\latest\upload_target\DefaultWebSite.zip Generated destination archive directory at .\migrations\latest\upload_target You can execute `eb init` and `eb create` from this directory to deploy to EB.

高级配置示例

使用 JSON 文件使用自定义 VPC 配置进行迁移:

PS C:\migrations_workspace > cat vpc-config.json { "id": "vpc-1234567890abcdef0", "publicip": "false", "elbscheme": "internal", "ec2subnets": [ "subnet-private1", "subnet-private2" ], "securitygroups": [ "sg-app", "sg-database", "sg-monitoring" ], "elbsubnets": [ "subnet-private1", "subnet-private2" ] } PS C:\migrations_workspace eb migrate ` --sites "InternalAPI" ` --vpc-config vpc-config.json ` --instance-type "r5.xlarge" ` --tags "Environment=Internal,Security=High"

使用 SSL 证书和主机标头迁移站点:

PS C:\migrations_workspace > eb migrate ` --sites "SecurePortal" ` --ssl-certificates "arn:aws:acm:region:account:certificate/cert1,arn:aws:acm:region:account:certificate/cert2" ` --verbose INFO: Detected HTTPS bindings: - www.example.com:443 - api.example.com:443 INFO: Configuring Application Load Balancer with SSL certificates INFO: Creating host-based routing rules: - www.example.com -> target group 1 - api.example.com -> target group 2

使用 EBS 快照配置迁移:fo

PS C:\migrations_workspace > eb migrate ` --sites "Default Web Site" ` --ebs-snapshots "snap-1234567890abcdef0" "snap-0987654321fedcba1" ` --encrypt-ebs-volumes Using .\migrations\latest to contain artifacts for this migration run. INFO: Enabling EBS encryption for all new volumes in us-west-2 INFO: Configuring environment with specified EBS snapshots

安全配置示例

处理具有复杂防火墙规则的站点:

PS C:\migrations_workspace > eb migrate ` --sites "Default Web Site,ReportingService" ` --copy-firewall-config ` --verbose INFO: Detected the following Windows Firewall rules: - Allow Web Traffic (TCP 80, 443) - Allow Reporting Traffic (TCP 8081) INFO: Creating corresponding security group rules

使用自定义 IAM 角色进行迁移:

PS C:\migrations_workspace > eb migrate ` --sites "SecureApp" ` --instance-profile "CustomInstanceProfile" ` --service-role "CustomServiceRole"

远程执行示例

从远程 Windows 服务器迁移 IIS 应用程序:

PS C:\migrations_workspace > eb migrate ` --remote ` --target-ip "192.0.2.10" ` --username "administrator" ` --password "YourPassword123" ` --application-name "RemoteApp" ` --environment-name "RemoteEnv" INFO: Establishing SSH connection to remote host 192.0.2.10... INFO: Connection established INFO: Discovering IIS sites on remote host... INFO: Found 2 sites: Default Web Site, API INFO: Extracting site configurations... INFO: Generating source bundle for sites, applications, and virtual directories... Default Web Site/ -> .\migrations\latest\upload_target\DefaultWebSite.zip API/ -> .\migrations\latest\upload_target\API.zip Creating application version Creating environment Environment details for: RemoteEnv Application name: RemoteAppstage mi Region: us-west-2 Deployed Version: app-230320_153045 Environment ID: e-abcdef1234 Platform: 64bit Windows Server 2019 v2.7.0 running IIS 10.0 Tier: WebServer-Standard-1.0 CNAME: remoteenv.us-west-2.elasticbeanstalk.com Updated: 2023-03-20 15:30:45

通过特定站点选择进行远程迁移:

PS C:\migrations_workspace > eb migrate ` --remote ` --target-ip "192.0.2.10" ` --username "administrator" ` --password "YourPassword123" ` --sites "API" ` --instance-type "c5.large"