AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用自定义 Amazon 系统映像 (AMI)

在创建 AWS Elastic Beanstalk 环境时,您可以指定要使用的 Amazon 系统映像 (AMI),而不是平台版本中所包含的标准 Elastic Beanstalk AMI。在您的环境中启动实例时,如果您需要安装标准 AMI 未包含的大量软件,则使用自定义 AMI 可以缩短配置时间。

使用配置文件能够快速、一致地配置和自定义您的环境。但在环境创建和更新过程中,应用配置可能需要花费很长的时间。如果您需要在配置文件中进行大量的服务器配置,可以制作一份包含所需软件和配置的自定义 AMI,以缩短配置耗时。

此外,您还可以借助自定义 AMI 对底层组件 (如 Linux 内核) 进行更改,这在配置文件中很难实现或需要很长时间才能完成。要创建自定义 AMI,请在 Amazon EC2 中启动 Elastic Beanstalk 平台 AMI,根据需要自定义软件和配置,然后停止该实例并据之保存一个 AMI。

创建自定义 AMI

识别基础 Elastic Beanstalk AMI

  1. 打开 Elastic Beanstalk 控制台

  2. 创建一个运行您的应用程序的 Elastic Beanstalk 环境。有关如何启动 Elastic Beanstalk 应用程序的更多信息,请转到开始使用 Elastic Beanstalk

  3. 导航到您的环境的管理页

  4. 选择 Configuration

  5. Instances (实例) 配置卡上,请注意 EC2 image ID (EC2 映像 ID) 标签旁边的值。

    
            突出显示了“EC2 映像 ID”的“实例”配置卡
  6. 终止环境。

Custom AMI ID (自定义 AMI ID 字段) 中的值是平台版本、EC2 实例架构和您创建环境所在的 AWS 区域的常备 Elastic Beanstalk AMI。如果需要为多个平台、架构或区域创建 AMI,请重复此流程为每个组合指定正确的基础 AMI。

注意

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

也可以从并非由 Elastic Beanstalk 发布的社区 AMI 创建自定义 AMI。您可以使用最新的 Amazon Linux AMI 作为起点。使用不由 Elastic Beanstalk 管理的 Linux AMI 启动环境时,Elastic Beanstalk 会尝试安装平台软件(语言、框架、代理服务器等)及其他组件,以支持增强型运行状况报告等功能。

注意

基于 Windows Server 的 Elastic Beanstalk 平台不支持不由 Elastic Beanstalk 管理的 AMI。

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

创建自定义 AMI

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 选择 Launch Instance

  3. 选择社区 AMI

  4. 如果您确定希望自定义的基本 Elastic Beanstalk 或 Amazon Linux AMI,以创建自定义 AMI,请在搜索框中输入其 AMI ID,然后按 Enter

    您也可以搜索满足需要的其他社区 AMI 的列表。

    注意

    我们建议您选择使用 HVM 虚拟化的 AMI。这些 AMI 的描述包含 Virtualization type: hvm (虚拟化类型: hvm)

    
              EC2 控制台中列出了具有 HVM 虚拟化类型的 AMI

    有关实例虚拟化类型的详细信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的 Linux AMI 虚拟化类型

  5. 选择 Select (选择) 以选择此 AMI。

  6. 选择实例类型,然后选择 Next: Configure Instance Details (下一步: 配置实例详细信息)

  7. (Linux 平台) 展开 Advanced Details (高级详细信息)部分,然后在 User Data (用户数据) 字段中粘贴以下文本。

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

    存储库版本号 是指 AMI 名称中的年份和月份版本。例如,基于 Amazon Linux 2015 年 3 月版的 AMI 的存储库版本号为 2015.03。对于 Elastic Beanstalk 映像,该版本号是您的平台版本解决方案堆栈名称中显示的日期。

    注意

    这些设置配置 lock-on-launch 功能。此功能使 AMI 在启动时使用固定的特定存储库版本,并禁用安全更新的自动安装。两者都需要将自定义 AMI 用于 Elastic Beanstalk。

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

  9. 使用 SSH 或 RDP 连接到此实例

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

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

  12. 在 Amazon EC2 控制台中,停止 EC2 实例。然后,在 Instance Actions (实例操作) 菜单上,选择 Create Image (EBS AMI) (创建映像(EBS AMI))

  13. 为避免产生额外的 AWS 费用,请终止此 EC2 实例

在 Elastic Beanstalk 环境中使用您的自定义 AMI

  1. 打开 Elastic Beanstalk 控制台

  2. 导航到您的环境的管理页

  3. 选择 Configuration

  4. Instances (实例)配置卡上,选择 Modify (修改)

  5. 对于 Custom AMI ID (自定义 AMI ID),键入您的自定义 AMI ID。

  6. 选择 Apply

当您使用自定义 AMI 创建新环境时,应该使用您用作创建 AMI 的基础的相同平台版本。如果以后您使用自定义 AMI 将平台更新应用于环境,Elastic Beanstalk 会尝试在引导过程中应用库和配置更新。

清除自定义 AMI

在您使用完自定义 AMI 并且不再需要它来启动 Elastic Beanstalk 环境时,请考虑将其清除以最大程度地减少存储成本。清除自定义 AMI 涉及到从 Amazon EC2 取消注册它并删除其他关联的资源。有关详细信息,请参阅取消注册您的 Linux AMI取消注册您的 Windows AMI