本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:将构件上传到 Amazon S3
在本教程中,您将学习如何使用包含几个构建操作的 Amazon CodeCatalyst 工作流程将项目上传到 Amazon S3 存储桶。当工作流程启动时,这些操作将按顺序运行。第一个生成操作生成两个文件,Hello.txt
和Goodbye.txt
,并将它们捆绑到一个生成构件中。第二个构建操作会将构件上传到 Amazon S3。您需要将工作流程配置为在每次将提交推送到源存储库时运行。
先决条件
在开始之前,您需要:
-
你需要一个带有关联 AWS 账户的 CodeCatalyst 空间。有关更多信息,请参阅 创建空间。
-
在你的空间里,你需要一个名为:
codecatalyst-artifact-project
使用 “从头开始” 选项来创建此项目。
有关更多信息,请参阅 在 Amazon 中创建一个空项目 CodeCatalyst。
-
在你的项目中,你需要一个 CodeCatalyst 名为:
codecatalyst-artifact-environment
按如下方式配置此环境:
-
选择任何类型,例如 “开发”。
-
将您的 AWS 账户与之关联。
-
对于默认IAM角色,请选择任意角色。稍后您将指定其他角色。
有关更多信息,请参阅 部署到 AWS 账户 和 VPCs。
-
步骤 1:创建 AWS 角色
在此步骤中,您将创建一个 AWS IAM角色,稍后将该角色分配给工作流程中的生成操作。此角色授予 CodeCatalyst 构建操作访问您的 AWS 账户和写入存储项目的 Amazon S3 的权限。该角色被称为 “构建” 角色。
注意
如果您已经有为其他教程创建的构建角色,则也可以将其用于本教程。只要确保它具有以下步骤中显示的权限和信任策略即可。
有关IAM角色的更多信息,请参阅《AWS AWS Identity and Access Management 用户指南》中的IAM角色。
创建生成角色
-
为该角色创建策略,如下所示:
-
登录到 AWS。
打开IAM控制台,网址为https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择策略。
-
选择创建策略。
-
选择JSON选项卡。
-
删除现有代码。
-
粘贴以下代码:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": "*" } ] }
注意
首次使用该角色运行工作流程操作时,请在资源策略语句中使用通配符,然后在策略可用后使用资源名称缩小策略范围。
"Resource": "*"
-
选择下一步:标签。
-
选择下一步:审核。
-
在名称中,输入:
codecatalyst-s3-build-policy
-
选择创建策略。
现在,您已经创建了权限策略。
-
-
创建生成角色,如下所示:
-
在导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)。
-
选择 “自定义信任策略”。
-
删除现有的自定义信任策略。
-
添加以下自定义信任策略:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
选择下一步。
-
在权限策略中,搜索
codecatalyst-s3-build-policy
并选中其复选框。 -
选择下一步。
-
在 “角色名称” 中,输入:
codecatalyst-s3-build-role
-
在角色描述中,输入:
CodeCatalyst build role
-
选择 Create role(创建角色)。
现在,您已经创建了一个包含信任策略和权限策略的构建角色。
-
第 2 步:创建 Amazon S3 存储桶
在此步骤中,您将创建一个 Amazon S3 存储桶,用于上传Hello.txt
和Goodbye.txt
项目。
创建 Amazon S3 存储桶
打开 Amazon S3 控制台,网址为https://console.aws.amazon.com/s3/
。 -
在主窗格中,选择创建存储桶。
-
在存储桶名称中,输入:
codecatalyst-artifact-bucket
-
对于 AWS 区域(亚马逊云科技区域),选择一个区域。本教程假设您选择了美国西部(俄勒冈)us-west-2。有关 Amazon S3 支持的区域的信息,请参阅中的亚马逊简单存储服务终端节点和配额AWS 一般参考。
-
在页面底部,选择创建存储桶。
-
复制您刚刚创建的存储桶的名称,例如:
codecatalyst-artifact-bucket
现在,您已经在美国西部(俄勒冈州)us-west-2 区域创建了一个名codecatalyst-artifact-bucket
为的存储桶。
步骤 3:创建源存储库
在此步骤中,您将在中创建源存储库 CodeCatalyst。此存储库用于存储教程的工作流程定义文件。
有关源存储库的更多信息,请参阅创建源存储库。
创建源存储库
打开 CodeCatalyst 控制台,网址为 https://codecatalyst.aws/
。 -
导航到您的项目,
codecatalyst-artifact-project
。 -
在导航窗格中,选择代码,然后选择源存储库。
-
选择添加存储库,然后选择创建存储库。
-
在存储库名称中,输入:
codecatalyst-artifact-source-repository
-
选择创建。
现在,您已经创建了一个名为的存储库codecatalyst-artifact-source-repository
。
步骤 4:创建工作流程
在此步骤中,您将创建一个由以下按顺序运行的构建块组成的工作流程:
-
触发器-当您将更改推送到源存储库时,此触发器会自动启动工作流程运行。有关触发器的更多信息,请参阅启动工作流程使用触发器自动运行。
-
名为 “
GenerateFiles
-触发时GenerateFiles
” 的生成操作会创建两个文件Hello.txt
和Goodbye.txt
,并将它们打包到名为的输出构件中codecatalystArtifact
。 -
另一个名为 “构建操作”
Upload
— 操作完成后,该GenerateFiles
Upload
操作将运行 AWS CLI 命令,将源存储库codecatalystArtifact
和源存储库中的文件上传aws s3 sync
到您的 Amazon S3 存储桶。已在 AWS CLI CodeCatalyst计算平台上预安装和预先配置,因此您无需安装或配置它。有关 CodeCatalyst 计算平台上预打包软件的更多信息,请参阅指定运行时环境映像。有关
aws s3 sync
命令 AWS CLI的更多信息,请参阅《AWS CLI 命令参考》中的 sync。
有关生成操作的更多信息,请参阅使用工作流程进行构建。
创建工作流
-
在导航窗格中,选择 C I/CD,然后选择工作流程。
-
选择 “创建工作流程”。
-
删除YAML示例代码。
-
添加以下YAML代码:
注意
在下面的YAML代码中,如果你愿意,你可以省略该
Connections:
部分。如果省略此部分,则必须确保在您的环境中 “默认IAM角色” 字段中指定的角色包含中步骤 1:创建 AWS 角色描述的权限和信任策略。有关使用默认IAM角色设置环境的更多信息,请参阅创建环境。Name: codecatalyst-artifact-workflow SchemaVersion: 1.0 Triggers: - Type: Push Branches: - main Actions: GenerateFiles: Identifier: aws/build@v1 Configuration: Steps: # Create the output files. - Run: echo "Hello, World!" > "Hello.txt" - Run: echo "Goodbye!" > "Goodbye.txt" Outputs: Artifacts: - Name: codecatalystArtifact Files: - "**/*" Upload: Identifier: aws/build@v1 DependsOn: - GenerateFiles Environment: Name:
codecatalyst-artifact-environment
Connections: - Name:codecatalyst-account-connection
Role:codecatalyst-s3-build-role
Inputs: Artifacts: - codecatalystArtifact Configuration: Steps: # Upload the output artifact to the S3 bucket. - Run: aws s3 sync . s3://codecatalyst-artifact-bucket
在上面的代码中,替换:
-
codecatalyst-artifact-environment
使用您在中创建的环境的名称先决条件。 -
codecatalyst-account-connection
使用您在中创建的账户连接的名称先决条件。 -
codecatalyst-s3-build-role
使用您在中创建的构建角色的名称步骤 1:创建 AWS 角色。 -
codecatalyst-artifact-bucket
使用您在中创建的 Amazon S3 的名称第 2 步:创建 Amazon S3 存储桶。
有关此文件中属性的信息,请参阅生成和测试操作 YAML。
-
-
(可选)选择 “验证”,确保YAML代码在提交之前有效。
-
选择 Commit (提交)。
-
在 “提交工作流程” 对话框中,输入以下内容:
-
对于工作流程文件名,保留默认值
codecatalyst-artifact-workflow
。 -
在 “提交消息” 中,输入:
add initial workflow file
-
对于 “存储库”,选择codecatalyst-artifact-source-repository。
-
在 “分支名称” 中,选择 “主分支”。
-
选择 Commit (提交)。
现在,您已经创建了一个工作流程。由于在工作流程顶部定义了触发器,因此工作流程运行会自动启动。具体而言,当您将
codecatalyst-artifact-workflow.yaml
文件提交(并推送)到源存储库时,触发器会启动工作流程运行。 -
查看正在运行的工作流程
-
在导航窗格中,选择 C I/CD,然后选择工作流程。
-
选择您刚刚创建的工作流程:
codecatalyst-artifact-workflow
. -
选择GenerateFiles查看第一个构建操作的进度。
-
选择 “上传” 以查看第二个构建操作的进度。
-
“上载” 操作完成后,请执行以下操作:
-
如果工作流程运行成功,请转到下一个过程。
-
如果工作流程运行失败,请选择 Logs 来解决问题。
-
步骤 5:验证结果
工作流程运行后,前往 Amazon S3 服务并查看您的 codecatalyst-artifact-bucket
桶。现在,它应该包含以下文件和文件夹:
. |— .aws/ |— .git/ |Goodbye.txt |Hello.txt |REAME.md
Goodbye.txt
和Hello.txt
文件之所以被上传,是因为它们是codecatalystArtifact
构件的一部分。.aws/
.git/
、和README.md
文件之所以上传,是因为它们位于您的源存储库中。
清理
清理干净 CodeCatalyst AWS ,避免为这些服务收费。
要清理干净 CodeCatalyst
打开 CodeCatalyst 控制台,网址为 https://codecatalyst.aws/
。 -
删除
codecatalyst-artifact-source-repository
源存储库。 -
删除工作
codecatalyst-artifact-workflow
流程。
要清理干净 AWS
-
在 Amazon S3 中进行清理,如下所示:
打开 Amazon S3 控制台,网址为https://console.aws.amazon.com/s3/
。 -
删除
codecatalyst-artifact-bucket
存储桶中的文件。 -
删除
codecatalyst-artifact-bucket
存储桶。
-
清理一下IAM,如下所示:
打开IAM控制台,网址为https://console.aws.amazon.com/iam/
。 -
删除
codecatalyst-s3-build-policy
。 -
删除
codecatalyst-s3-build-role
。