您可能希望在 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 存储库。
系统会加密文件系统的传输中数据。要使用其他映像来加密传输中的数据,请参阅加密传输中的数据。
将 AWS CodeBuild 与 Amazon Elastic File System 结合使用
该示例介绍了将 Amazon EFS 与 AWS CodeBuild 结合使用所需的四个概括步骤。它们是:
-
在您的 AWS 账户中创建虚拟私有云(VPC)。
-
创建使用此 VPC 的文件系统。
-
创建并构建使用此 VPC 的 CodeBuild 项目。该 CodeBuild 项目使用以下内容来标识文件系统:
-
文件系统的唯一标识符。当您在构建项目中指定文件系统时,可以选择该标识符。
-
文件系统 ID。当您在 Amazon EFS 控制台中查看文件系统时,系统会显示该 ID。
-
挂载点。这是 Docker 容器中用于挂载文件系统的目录。
-
挂载选项。这些选项包含了有关如何挂载文件系统的详细信息。
-
-
查看构建项目,确保生成了正确的项目文件和变量。
注意
只有 Linux 平台支持在 Amazon EFS 中创建的文件系统。
主题
步骤 1:使用 AWS CloudFormation 创建 VPC
使用 AWS CloudFormation 模板创建 VPC。
-
按照AWS CloudFormation VPC 模板中的说明使用 AWS CloudFormation 创建 VPC。
注意
通过此 AWS CloudFormation 模板创建的 VPC 具有两个私有子网和两个公有子网。当您使用 AWS CodeBuild 挂载在 Amazon EFS 中创建的文件系统时,只能使用私有子网。如果您使用其中一个公有子网,则构建会失败。
通过 https://console.aws.amazon.com/vpc/
登录到AWS Management Console并打开 Amazon VPC 控制台。 -
选择您使用 AWS CloudFormation 创建的 VPC。
-
在描述选项卡上,记下 VPC 的名称及其 ID。在本示例的后面部分中创建您的 AWS CodeBuild 项目时,需要这两者。
步骤 2:使用 VPC 创建 Amazon Elastic File System 文件系统
使用您之前创建的 VPC 为本示例创建简单的 Amazon EFS 文件系统。
通过 https://console.aws.amazon.com/efs/
登录AWS Management Console并打开 Amazon SES 控制台。 -
选择创建文件系统。
-
从 VPC,选择您之前在本示例中记录的 VPC 名称。
-
保持可用区与您选定子网的关联。
-
选择下一步。
-
在添加标签中,对于默认的名称键,在值中,输入 Amazon EFS 文件系统的名称。
-
保留突增和通用型选定为您的默认性能和吞吐量模式,然后选择下一步。
-
对于配置客户端访问,请选择下一步。
-
选择创建文件系统。
-
(可选)我们建议您为您的 Amazon EFS 文件系统添加策略,以强制对传输中的数据进行加密。在 Amazon EFS 控制台中,选择文件系统策略,选择编辑,选中标有针对所有客户端强制执行传输中加密的复选框,然后选择保存。
步骤 3:创建 CodeBuild 项目以与 Amazon EFS 结合使用
创建 AWS CodeBuild 项目,该项目使用您之前在本示例中创建的 VPC。运行构建时,它会挂载之前创建的 Amazon EFS 文件系统。接下来,它会将 Java 应用程序创建的 .jar 文件存储在文件系统的挂载点目录中。
从 https://console.aws.amazon.com/codesuite/codebuild/home
打开 AWS CodeBuild 控制台。 -
从导航窗格中选择构建项目,然后选择创建构建项目。
-
在项目名称中输入项目名称。
-
从源提供商中,选择包含要构建的 Java 应用程序的存储库。
-
输入 CodeBuild 用于找到您的应用程序的信息,例如存储库 URL。每个源提供商的选项有所不同。有关更多信息,请参阅 Choose source provider。
-
从环境映像中,选择托管映像。
-
从操作系统中,选择 Amazon Linux 2。
-
从运行时中,选择标准。
-
从映像中,选择 aws/codebuild/amazonlinux2-x86_64-standard:4.0。
-
从环境类型中,选择 Linux。
-
在服务角色下,选择新建服务角色。在角色名称中,输入 CodeBuild 为您创建的角色的名称。
-
展开其他配置。
-
选择如果要构建 Docker 映像或希望您的构建获得提升的特权,请启用此标志。
注意
默认情况下,为非 VPC 构建启用 Docker 进程守护程序。如果您想使用 Docker 容器进行 VPC 构建,请参阅 Docker 文档网站上的运行时权限和 Linux 功能
并启用特权模式。此外,Windows 不支持特权模式。 -
从 VPC 中,选择 VPC ID。
-
从子网中,选择一个或多个与您的 VPC 关联的私有子网。您必须在挂载 Amazon EFS 文件系统的构建项目中使用私有子网。如果您使用公有子网,则构建会失败。
-
从安全组中,选择默认安全组。
-
在文件系统中,输入以下信息:
-
针对标识符,输入文件系统的唯一标识符。标识符只能包含字母数字字符和下划线,且长度必须少于 129 个字符。CodeBuild 会使用该标识符来创建标识 Elastic File System 的环境变量。该环境变量的格式为采用大写字母的
CODEBUILD_
。例如,如果输入<file_system_identifier>
my_efs
,则环境变量为CODEBUILD_MY_EFS
。 -
对于 ID,请选择文件系统 ID。
-
(可选)输入文件系统中的目录。CodeBuild 会挂载此目录。如果将目录路径留为空白,则 CodeBuild 会挂载整个文件系统。该路径相对于文件系统的根目录指定。
-
对于挂载点,输入构建容器中用于挂载文件系统的目录的绝对路径。如果此目录不存在,则 CodeBuild 会在构建过程中创建。
-
(可选)输入挂载选项。如果将挂载选项留为空白,则 CodeBuild 会使用其默认挂载选项:
nfsvers=4.1 rsize=1048576 wsize=1048576 hard timeo=600 retrans=2
有关更多信息,请参阅《Amazon Elastic File System 用户指南》中的建议的 NFS 挂载选项。
-
-
对于构建规范,选择插入构建命令,然后选择切换到编辑器。
-
在编辑器中输入以下构建规范命令。将
替换为您在步骤 17 中输入的标识符。使用大写字母(例如<file_system_identifier>
CODEBUILD_MY_EFS
)。version: 0.2 phases: install: runtime-versions: java: corretto11 build: commands: - mvn compile -Dgpg.skip=true -Dmaven.repo.local=$CODEBUILD_
<file_system_identifier>
-
对所有其他设置使用默认值,然后选择创建构建项目。构建完成后,系统会显示项目的控制台页面。
-
选择开始构建。
步骤 4:检查构建项目
在 AWS CodeBuild 项目构建完成后:
-
您会拥有一个由 Java 应用程序创建的 .jar 文件,该文件已被构建到您的挂载点目录下的 Amazon EFS 文件系统中。
-
系统会使用您在创建项目时输入的文件系统标识符,创建标识文件系统的环境变量。
有关更多信息,请参阅《Amazon Elastic File System 用户指南》中的装载文件系统。