适用于 AWS CodeBuild 的 Amazon Elastic File System 示例 - AWS CodeBuild
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

适用于 AWS CodeBuild 的 Amazon Elastic File System 示例

您可能希望在 Amazon Elastic File System(一项用于 Amazon EC2 实例的可扩展的共享文件服务)上创建自己的 AWS CodeBuild 构建。Amazon EFS 中的存储容量是弹性的,因此会随着文件的添加和删除而增长或收缩。它具有简单的 Web 服务界面,可用于创建和配置文件系统。它还为您管理所有文件存储基础设施,因此您无需担心部署、修补或维护文件系统配置。有关更多信息,请参阅 Amazon Elastic File System 用户指南 中的什么是 Amazon Elastic File System?

本示例显示了如何配置 CodeBuild 项目,使该项目可挂载 Java 应用程序,然后在 Amazon EFS 文件系统中构建 Java 应用程序。在开始之前,您必须准备好要构建的 Java 应用程序,该应用程序应上传至 S3 输入存储桶或 AWS CodeCommit、GitHub、GitHub Enterprise Server 或 Bitbucket 存储库。

系统会加密文件系统的传输中数据。要使用其他映像来加密传输中的数据,请参阅加密传输中的数据

概括步骤

本示例介绍了将 Amazon EFS 与 AWS CodeBuild 一起使用所需的三个概括步骤:

  1. 在您的 AWS 账户中创建 Virtual Private Cloud (VPC)。

  2. 创建使用此 VPC 的文件系统。

  3. 创建并构建使用此 VPC 的 CodeBuild 项目。该 CodeBuild 项目使用以下内容来标识文件系统:

    • 文件系统的唯一标识符。当您在构建项目中指定文件系统时,可以选择该标识符。

    • 文件系统 ID。当您在 Amazon EFS 控制台中查看文件系统时,系统会显示该 ID。

    • 挂载点。这是 Docker 容器中用于挂载文件系统的目录。

    • 挂载选项。这些选项包含了有关如何挂载文件系统的详细信息。

注意

只有 Linux 平台支持在 Amazon EFS 中创建的文件系统。

使用 AWS CloudFormation 创建 VPC

使用 AWS CloudFormation 模板创建 VPC。

  1. 按照AWS CloudFormation VPC 模板中的说明使用 AWS CloudFormation 创建 VPC。

    注意

    通过此 AWS CloudFormation 模板创建的 VPC 具有两个私有子网和两个公有子网。当您使用 AWS CodeBuild 挂载在 Amazon EFS 中创建的文件系统时,只能使用私有子网。如果您使用其中一个公有子网,则构建会失败。

  2. 登录 AWS 管理控制台 并通过以下网址打开 Amazon VPC 控制台:https://console.amazonaws.cn/vpc/

  3. 选择您使用 AWS CloudFormation 创建的 VPC。

  4. Description (描述) 选项卡上,记下 VPC 的名称及其 ID。在本示例的后面部分中创建您的 AWS CodeBuild 项目时,需要这两者。

使用 VPC 创建 Amazon Elastic File System 文件系统

使用您之前创建的 VPC 为本示例创建简单的 Amazon EFS 文件系统。

  1. 登录 AWS 管理控制台并通过以下网址打开 Amazon EFS 控制台:https://console.amazonaws.cn/efs/

  2. 选择 Create file system (创建文件系统)

  3. VPC,选择您之前在本示例中记录的 VPC 名称。

  4. 让可用区保持与您选定的子网关联。

  5. 选择 Next Step (下一步)

  6. Add tags (添加标签) 中,对于默认的 Name (名称) 键,在 Value (值) 中,输入 Amazon EFS 文件系统的名称。

  7. 保留 Bursting (突增)General Purpose (通用型) 选定为您的默认性能和吞吐量模式,然后选择 Next Step (下一步)

  8. 对于配置客户端访问,请选择下一步

  9. 选择 Create file system (创建文件系统)

创建 CodeBuild 项目以便与 Amazon EFS 一起使用

创建一个 AWS CodeBuild 项目,该项目使用您之前在本示例中创建的 VPC。运行构建时,它会挂载之前创建的 Amazon EFS 文件系统。接下来,它会将 Java 应用程序创建的 .jar 文件存储在文件系统的挂载点目录中。

  1. Open the AWS CodeBuild console at https://console.amazonaws.cn/codesuite/codebuild/home.

  2. 从导航窗格中选择 Build projects (构建项目),然后选择 Create build project (创建构建项目)

  3. Project name (项目名称) 中,输入您的项目的名称。

  4. Source provider (源提供商) 中,选择包含要构建的 Java 应用程序的存储库。

  5. 输入 CodeBuild 用于找到您的应用程序的信息,例如存储库 URL。每个源提供商的选项有所不同。有关更多信息,请参阅选择源提供商

  6. 对于 Environment image (环境映像),选择 Managed image (托管映像)

  7. Operating system (操作系统) 中,选择 Amazon Linux 2

  8. Runtime(s) (运行时) 中,选择 Standard (标准)

  9. 对于 Image (映像),选择 aws/codebuild/amazonlinux2-x86_64-standard:3.0

  10. 对于 Environment type (环境类型),选择 Linux

  11. 选择 Privileged (特权)

    注意

    默认情况下,Docker 容器不允许访问任何设备。特权模式将授予构建项目的 Docker 容器访问所有设备的权限。有关更多信息,请参阅 Docker 文档网站上的运行时权限和 Linux 功能

  12. Service role (服务角色) 下,选择 New service role (新建服务角色)。在 Role name (角色名称) 中,输入 CodeBuild 为您创建的角色的名称。

  13. 展开 Additional configuration (其他配置)

  14. VPC,选择 VPC ID。

  15. 对于 Subnets (子网),选择一个或多个与您的 VPC 关联的私有子网。您必须在挂载 Amazon EFS 文件系统的构建项目中使用私有子网。如果您使用公有子网,则构建会失败。

  16. 对于 Security Groups (安全组),选择默认安全组。

  17. File systems (文件系统) 中,输入以下信息:

    • 对于 Identifier (标识符),输入文件系统的唯一标识符。该标识符必须少于 129 个字符,并且只能包含字母数字字符和下划线。CodeBuild 使用此标识符来创建用于标识弹性文件系统的环境变量。该环境变量的格式为采用大写字母的 CODEBUILD_file-system-identifier。例如,如果输入 efs-1,则环境变量为 CODEBUILD_EFS-1

    • 对于 ID,请选择文件系统 ID。

    • (可选)输入文件系统中的目录。CodeBuild 会挂载此目录。如果将 Directory path (目录路径) 留为空白,则 CodeBuild 会挂载整个文件系统。该路径相对于文件系统的根目录指定。

    • 对于 Mount point (挂载点),输入构建容器中用于挂载文件系统的目录的名称。如果此目录不存在,则 CodeBuild 会在构建过程中创建它。

    • (可选)输入挂载选项。如果将 Mount options (挂载选项) 留为空白,则 CodeBuild 会使用其默认挂载选项 (nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2)。有关更多信息,请参阅 Amazon Elastic File System 用户指南中的建议的 NFS 挂载选项

  18. 对于 Build specification (构建规范),选择 Insert build commands (插入构建命令),然后选择 Switch to editor (切换到编辑器)

  19. 在编辑器中输入以下构建规范命令。将 file-system-identifier 替换为您在步骤 17 中输入的标识符。使用大写字母(例如 CODEBUILD_EFS-1)。

    version: 0.2 phases: install: runtime-versions: java: corretto11 build: commands: - mvn compile -Dgpg.skip=true -Dmaven.repo.local=$CODEBUILD_file-system-identifier
  20. 对所有其他设置使用默认值,然后选择 Create build project (创建构建项目)。构建完成后,系统会显示项目的控制台页面。

  21. 选择 Start build

CodeBuild 和 Amazon EFS 示例摘要

在 AWS CodeBuild 项目构建完成后:

  • 您会拥有一个由 Java 应用程序创建的 .jar 文件,该文件已被构建到您的挂载点目录下的 Amazon EFS 文件系统中。

  • 系统会使用您在创建项目时输入的文件系统标识符,创建标识文件系统的环境变量。

有关更多信息,请参阅 Amazon Elastic File System 用户指南中的挂载文件系统