自定义构建映像 - AWS Amplify 托管

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

自定义构建映像

您可以使用自定义构建映像,为 Amplify 应用程序提供自定义的构建环境。如果您在使用 Amplify 的默认容器进行构建期间需要花很长时间来安装特定的依赖项,则可以创建自己的 Docker 映像并在构建期间引用该映像。映像可以在公有 Amazon Elastic Container Registry 上托管。

要使自定义构建映像作为 Amplify 构建映像使用,它必须满足以下要求。

自定义构建映像要求

  1. 支持 GNU C 库 (glibc) 的 Linux 发行版,例如 Amazon Linux,专为 x86-64 架构编译。

  2. cURL:当我们启动您的自定义映像时,我们会将构建运行程序下载到您的容器中,因此我们需要有 cURL。如果缺少此依赖项,则构建将立即失败而没有任何输出,因为我们的构建运行程序无法生成任何输出。

  3. Git:为了克隆您的 Git 存储库,我们要求在映像中安装 Git。如果缺少此依赖项,克隆存储库步骤将会失败。

  4. OpenSSH:为了安全地克隆您的存储库,我们要求 OpenSSH 在构建期间临时设置 SSH 密钥。OpenSSH 包提供了构建运行程序执行此操作所需的命令。

  5. Bash 和 Bourne Shell:这两个实用程序用于在构建时运行命令。如果未安装它们,您的构建可能会在开始之前失败。

  6. Node.JS+NPM:我们的构建运行程序未安装 Node。相反,它依赖于安装在映象中的 Node 和 NPM。只有需要 NPM 程序包或节点特定命令的构建才需要这样做。但是,我们强烈建议安装它们,因为当它们存在时,Amplify 构建运行程序可以使用这些工具来改善构建执行。当您为 Hugo 设置覆盖时,Amplify 的包覆盖功能使用 NPM 来安装 Hugo 扩展包。

以下包不是必需的,但我们强烈建议您创建它。

  1. NVM (Node Version Manager):如果您需要处理不同版本的 Node,我们建议您安装此版本管理器。当您设置覆盖时,Amplify 的软件包覆盖功能会使用 NVM 在每次构建之前更改 Node.js 版本。

  2. Wget:Amplify 可以在构建过程中使用 Wget 实用程序下载文件。我们建议您将其安装在您的自定义图像中。

  3. Tar:Amplify 可以在构建过程中使用 Tar 实用程序解压缩下载的文件。我们建议您将其安装在您的自定义图像中。

为应用程序配置自定义构建映像

使用以下步骤,在 Amplify 控制台中为应用程序配置自定义构建映像。

配置托管在 Amazon ECR 中的自定义构建映像
  1. 要使用 Docker 映像设置 Amazon ECR Public 存储库,请参阅 Amazon ECR Public 用户指南中的入门

  2. 登录 AWS Management Console 并打开 Amplify 控制台

  3. 选择要为其配置自定义构建映像的应用程序。

  4. 在导航窗格中,依次选择托管构建设置

  5. 构建设置页面上,请在构建映像设置中选择编辑

  6. 编辑构建映像设置页面中,展开构建映像菜单,然后选择自定义构建映像

  7. 输入您在第一步中创建的 Amazon ECR Public 存储库的名称。这就是您的构建映像的托管位置。例如,如果您的存储库的名称为 ecr-examplerepo,您可以输入 public.ecr.aws/xxxxxxxx/ecr-examplerepo

  8. 选择保存

在构建映像中使用特定程序包和依赖项版本

利用实时程序包更新,您可以指定程序包版本和依赖项以便在 Amplify 的默认构建映像中使用。默认构建映像附带了几个预安装的程序包和依赖项(例如 Hugo、Amplify CLI、Yarn 等)。利用实时程序包更新,您可以覆盖这些依赖项的版本并指定特定版本,或者始终确保安装了最新版本。

如果启用了实时程序包更新,则在运行构建之前,构建运行程序会首先更新(或降级)指定的依赖项。这将与更新依赖项所花费的时间成比例增加构建时间,但好处是可以确保使用相同版本的依赖项来构建您的应用程序。

警告

将 Node.js 版本设置为最新会导致构建失败。相反,您必须指定确切的 Node.js 版本,例如 1821.5v0.1.2

配置实时软件包更新
  1. 登录 AWS Management Console 并打开 Amplify 控制台

  2. 选择要为其配置实时软件包更新的应用程序。

  3. 在导航窗格中,依次选择托管构建设置

  4. 构建设置页面上,请在构建映像设置中选择编辑

  5. 编辑构建映像设置页面的实时程序包更新列表中,选择新增

  6. 对于程序包,选择要覆盖的依赖项。

  7. 对于版本,要么保留默认最新版本,要么输入依赖项的特定版本。如果使用最新,依赖项将始终升级到可用的最新版本。

  8. 选择保存