在 Elastic Beanstalk AMI 环境中使用自定义的亚马逊机器映像 () - AWS Elastic Beanstalk

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

在 Elastic Beanstalk AMI 环境中使用自定义的亚马逊机器映像 ()

本节说明何时考虑使用自定义,AMI并提供在您的环境AMI中配置和管理自定义的过程。当你创建 AWS Elastic Beanstalk 环境,您可以指定要使用的亚马逊系统映像 (AMI),而不是平台版本中包含的标准 Elastic Bean AMI stalk。如果您需要安装大量未包含在标准中的软件,则在您的环境中启动实例时,自定义AMI可以缩短配置时间AMIs。

使用配置文件可以有效地快速、一致地自定义您的环境。尽管在创建和更新环境期间,应用配置可能会花费很长时间。如果您在配置文件中进行了大量的服务器配置,则可以通过进行已AMI包含所需软件和配置的自定义来缩短此时间。

自定义AMI还允许您对低级组件(例如 Linux 内核)进行更改,这些组件难以实现或需要很长时间才能应用到配置文件中。要创建自定义AMI,请在亚马逊上启动 Elastic AMI Beanstalk 平台EC2,根据需要自定义软件和配置,然后停止实例AMI并从中保存。

创建自定义 AMI

您可以使用 EC2Image Builder 来创建和管理自定义AMIs,以此作为这些过程的替代方案。有关更多信息,请参阅 Image Builder User Guide

为了识别基础 Elastic Beanstalk AMI
  1. 在命令窗口中,运行以下命令。有关更多信息,请参阅describe-platform-version中的 AWS CLI 命令参考

    指定 AWS 您要使用自定义的区域AMI,并将平台ARN和版本号替换为应用程序所基于的 Elastic Beanstalk 平台。

    例 - Mac OS / Linux OS
    $ aws elasticbeanstalk describe-platform-version --region us-east-2 \ --platform-arn "arn:aws:elasticbeanstalk:us-east-2::platform/Node.js 20 running on 64bit Amazon Linux 2023/6.1.7" \ --query PlatformDescription.CustomAmiList [ { "VirtualizationType": "pv", "ImageId": "" }, { "VirtualizationType": "hvm", "ImageId": "ami-020ae06fdda6a0f66" } ]
    例 - Windows OS
    C:\> aws elasticbeanstalk describe-platform-version --region us-east-2 --platform-arn"arn:aws:elasticbeanstalk:us-east-2::platform/ IIS 10.0 running on 64bit Windows Server 2022/2.15.3" --query PlatformDescription.CustomAmiList [ { "VirtualizationType": "pv", "ImageId": "" }, { "VirtualizationType": "hvm", "ImageId": "ami-020ae06fdda6a0f66" } ]
  2. 记下结果中类似于 ami-020ae06fdda6a0f66ImageId 值。

价值是平台EC2版本AMI、实例架构和 AWS 与您的应用程序相关的区域。如果你需要AMIs为多个平台、架构创作或 AWS 区域,重复此过程以确定每个组合AMI的正确基础。

注意

不要使用已在 E AMI lastic Beanstalk 环境中启动的实例创建。Elastic Beanstalk 在配置期间对实例进行更改,这可能会导致保存的实例出现问题。AMI从 Elastic Beanstalk 环境中的实例保存映像还会使此实例上部署的应用程序版本成为映像的固定部分。

对于 Linux,也可以AMI从 Elastic Beanst AMI alk 未发布的社区中创建自定义。你可以使用最新的亚马逊 Linux AMI 作为起点。当你使用不由 Elastic Beanstalk 管理的 Linux AMI 启动环境时,Elastic Beanstalk 会尝试安装平台软件(语言、框架、代理服务器等)和其他组件来支持增强型健康报告等功能。

注意

AMIs基于 Windows Server 的自定义需要describe-platform-version退回的库存 Ela AMI stic Beanstalk,如前面的步骤 1 所示。

尽管 Elastic Beanstalk AMI 可以使用不由 Elastic Beanstalk 管理的,但是 Elastic Beanstalk 安装缺失的组件所导致的配置时间增加可能会减少或消除最初创建自定义的好处。AMI其他 Linux 发行版也许能够进行某些故障诊断操作,但不受官方支持。如果您的应用程序需要特定的 Linux 发行版,一个替代方案是创建 Docker 映像并在 Docker 平台多容器 Docker 平台上运行该映像。

创建自定义 AMI
  1. 打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

  2. 选择启动实例

  3. 如果你识别了基本 Elastic Bean AMI stalk(describe-platform-version使用)或 A AMI mazon Linux,AMI请在搜索框中输入其 ID。然后按 Enter

    您也可以在列表中搜索其他适合您需求AMI的社区。

    注意

    我们建议您选择使用HVM虚拟化AMI的。它们在描述中AMIs显示虚拟化类型:hvm

    有关更多信息,请参阅 Amazon EC2 用户指南中的虚拟化类型

  4. 选择 “选择” 以选择AMI。

  5. 选择实例类型,然后选择下一步:配置实例详细信息

  6. (适用于已停用的 Amazon Linux AMI (AL1) 平台)如果您的环境在支持的基于 Linux 的平台或 Windows 平台上运行,请跳过此步骤。

    展开 “高级详细信息” 部分,然后将以下文本粘贴到 “用户数据” 字段中。

    #cloud-config repo_releasever: repository version number repo_upgrade: none

    存储库版本号是AMI名称中的年份和月份版本。例如,AMIs基于 2015 年 3 月发布的 Amazon Linux 有一个存储库版本号2015.03。对于 Elastic Beanstalk 镜像,这与基于亚马逊 AMI Linux(之前的 Amazon Linux 2 之前)的平台版本的解决方案堆栈名称中显示的日期相匹配。

    注意

    repo_releasever设置为亚马逊 Linux AMI 配置该 lock-on-launch 功能。这会AMI导致在启动时使用固定的特定存储库版本。Amazon Linux 2 不支持此功能 - 如果您的环境使用最新的 Amazon Linux 2 平台分支,请不要指定此功能。如果您仅在亚马逊 Linux 平台分支(AMI亚马逊 Linux 2 之前的分支)上使用AMI带有 Elastic Beanstalk 的自定义设置,则需要进行此设置。

    repo_upgrade 设置会禁止自动安装安全更新。必须在 Elastic Beanst AMI alk 上使用自定义设置。

  7. 继续执行向导以启动实EC2例。当系统提示时,选择您能够访问的密钥对,以便能够连接此实例来执行后续步骤。

  8. 使用SSH或@@ 连接到实例RDP。

  9. 执行任何所需的自定义操作。

  10. (Windows 平台)运行EC2Config服务 Sysprep。有关信息EC2Config,请参阅使用EC2Config服务配置 Windows 实例。确保将 Sysprep 配置为生成可从中检索的随机密码 AWS Management Console.

  11. 在 Amazon EC2 控制台中,停止EC2实例。然后在 “实例操作” 菜单上,选择 “创建映像” (EBSAMI)

  12. 为了避免产生额外费用 AWS 收费,终止EC2实例

在 Elastic Beanstalk 环境AMI中使用你的自定义设置
  1. 打开 Elastic Beanstalk 控制台,然后在区域列表中,选择你的 AWS 区域.

  2. 在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。

    注意

    如果您有多个环境,请使用搜索栏筛选环境列表。

  3. 在导航窗格中,选择 Configuration (配置)

  4. Capacity (容量) 配置类别中,选择 Edit (编辑)

  5. 对于 AMIID,请输入您的自定义 AMI ID。

  6. 要保存更改,请选择页面底部的 Apply(应用)。

使用自定义环境创建新环境时AMI,应使用与创建基础相同的平台版本AMI。

使用自定义环境管理环境 AMI

平台更新

使用自定义版本时AMI,无论更新是手动应用还是通过托管平台更新应用,Elastic Beanstalk 都将继续在其平台版本更新后的环境中使用AMI相同的自定义设置。环境不会被重置为使用新平台版本AMI的库存。

我们建议您AMI根据新平台版本AMI的库存创建新的自定义版本。这样做将应用新平台版本中可用的补丁,还可以最大限度地减少由于软件包或库版本不兼容而导致的部署失败。

有关创建新自定义的更多信息AMI,请参阅本主题创建自定义 AMI前面的。

移除自定义 AMI

如果您想AMI从环境中移除自定义并将其重置AMI为使用该环境的平台版本的库存,请使用以下CLI命令。

aws elasticbeanstalk update-environment \ --application-name my-application \ --environment-name my-environment \ --region us-east-1 \ --options-to-remove Namespace=aws:autoscaling:launchconfiguration,OptionName=ImageId
注意

为避免服务中断,AMI请在将此更改应用于生产环境之前,先用库存测试您的应用程序。

清理自定义 AMI

当您完成自定义操作AMI并且不再需要它来启动 Elastic Beanstalk 环境时,可以考虑对其进行清理以最大限度地降低存储成本。清理自定义AMI需要从 Amazon 注销其注册EC2并删除其他相关资源。有关详细信息,请参阅注销您的 Linux AMI 或注销您的 Windows。AMI