教程:将构件上传到 Amazon S3 - Amazon CodeCatalyst

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

教程:将构件上传到 Amazon S3

在本教程中,您将学习如何使用包含几个构建操作的 Amazon CodeCatalyst 工作流程将项目上传到 Amazon S3 存储桶。当工作流程启动时,这些操作将按顺序运行。第一个生成操作生成两个文件,Hello.txtGoodbye.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角色

创建生成角色
  1. 为该角色创建策略,如下所示:

    1. 登录到 AWS。

    2. 打开IAM控制台,网址为https://console.aws.amazon.com/iam/

    3. 在导航窗格中,选择策略

    4. 选择创建策略

    5. 选择JSON选项卡。

    6. 删除现有代码。

    7. 粘贴以下代码:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": "*" } ] }
      注意

      首次使用该角色运行工作流程操作时,请在资源策略语句中使用通配符,然后在策略可用后使用资源名称缩小策略范围。

      "Resource": "*"
    8. 选择下一步:标签

    9. 选择下一步:审核

    10. 名称中,输入:

      codecatalyst-s3-build-policy
    11. 选择创建策略

      现在,您已经创建了权限策略。

  2. 创建生成角色,如下所示:

    1. 在导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)

    2. 选择 “自定义信任策略”。

    3. 删除现有的自定义信任策略。

    4. 添加以下自定义信任策略:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    5. 选择下一步

    6. 权限策略中,搜索codecatalyst-s3-build-policy并选中其复选框。

    7. 选择下一步

    8. 在 “角色名称” 中,输入:

      codecatalyst-s3-build-role
    9. 角色描述中,输入:

      CodeCatalyst build role
    10. 选择 Create role(创建角色)。

    现在,您已经创建了一个包含信任策略和权限策略的构建角色。

第 2 步:创建 Amazon S3 存储桶

在此步骤中,您将创建一个 Amazon S3 存储桶,用于上传Hello.txtGoodbye.txt项目。

创建 Amazon S3 存储桶
  1. 打开 Amazon S3 控制台,网址为https://console.aws.amazon.com/s3/

  2. 在主窗格中,选择创建存储桶

  3. 存储桶名称中,输入:

    codecatalyst-artifact-bucket
  4. 对于 AWS 区域(亚马逊云科技区域),选择一个区域。本教程假设您选择了美国西部(俄勒冈)us-west-2。有关 Amazon S3 支持的区域的信息,请参阅中的亚马逊简单存储服务终端节点和配额AWS 一般参考

  5. 在页面底部,选择创建存储桶

  6. 复制您刚刚创建的存储桶的名称,例如:

    codecatalyst-artifact-bucket

现在,您已经在美国西部(俄勒冈州)us-west-2 区域创建了一个名codecatalyst-artifact-bucket为的存储桶。

步骤 3:创建源存储库

在此步骤中,您将在中创建源存储库 CodeCatalyst。此存储库用于存储教程的工作流程定义文件。

有关源存储库的更多信息,请参阅创建源存储库

创建源存储库
  1. 打开 CodeCatalyst 控制台,网址为 https://codecatalyst.aws/

  2. 导航到您的项目,codecatalyst-artifact-project

  3. 在导航窗格中,选择代码,然后选择源存储库

  4. 选择添加存储库,然后选择创建存储库

  5. 存储库名称中,输入:

    codecatalyst-artifact-source-repository
  6. 选择创建

现在,您已经创建了一个名为的存储库codecatalyst-artifact-source-repository

步骤 4:创建工作流程

在此步骤中,您将创建一个由以下按顺序运行的构建块组成的工作流程:

  • 触发器-当您将更改推送到源存储库时,此触发器会自动启动工作流程运行。有关触发器的更多信息,请参阅启动工作流程使用触发器自动运行

  • 名为 “GenerateFiles-触发时GenerateFiles” 的生成操作会创建两个文件Hello.txtGoodbye.txt,并将它们打包到名为的输出构件中codecatalystArtifact

  • 另一个名为 “构建操作” Upload — 操作完成后,该GenerateFilesUpload操作将运行 AWS CLI 命令,将源存储库codecatalystArtifact和源存储库中的文件上传aws s3 sync到您的 Amazon S3 存储桶。已在 AWS CLI CodeCatalyst计算平台上预安装和预先配置,因此您无需安装或配置它。

    有关 CodeCatalyst 计算平台上预打包软件的更多信息,请参阅指定运行时环境映像。有关aws s3 sync命令 AWS CLI的更多信息,请参阅《AWS CLI 命令参考》中的 sync

有关生成操作的更多信息,请参阅使用工作流程进行构建

创建工作流
  1. 在导航窗格中,选择 C I/CD,然后选择工作流程。

  2. 选择 “创建工作流程”

  3. 删除YAML示例代码。

  4. 添加以下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

    在上面的代码中,替换:

    有关此文件中属性的信息,请参阅生成和测试操作 YAML

  5. (可选)选择 “验证”,确保YAML代码在提交之前有效。

  6. 选择 Commit (提交)

  7. 在 “提交工作流程” 对话框中,输入以下内容:

    1. 对于工作流程文件名,保留默认值codecatalyst-artifact-workflow

    2. 在 “提交消息” 中,输入:

      add initial workflow file
    3. 对于 “存储库”,选择codecatalyst-artifact-source-repository

    4. 在 “分支名称” 中,选择 “分支”。

    5. 选择 Commit (提交)

    现在,您已经创建了一个工作流程。由于在工作流程顶部定义了触发器,因此工作流程运行会自动启动。具体而言,当您将codecatalyst-artifact-workflow.yaml文件提交(并推送)到源存储库时,触发器会启动工作流程运行。

查看正在运行的工作流程
  1. 在导航窗格中,选择 C I/CD,然后选择工作流程。

  2. 选择您刚刚创建的工作流程:codecatalyst-artifact-workflow.

  3. 选择GenerateFiles查看第一个构建操作的进度。

  4. 选择 “上传” 以查看第二个构建操作的进度。

  5. “上” 操作完成后,请执行以下操作:

    • 如果工作流程运行成功,请转到下一个过程。

    • 如果工作流程运行失败,请选择 Logs 来解决问题。

步骤 5:验证结果

工作流程运行后,前往 Amazon S3 服务并查看您的 codecatalyst-artifact-bucket 桶。现在,它应该包含以下文件和文件夹:

. |— .aws/ |— .git/ |Goodbye.txt |Hello.txt |REAME.md

Goodbye.txtHello.txt文件之所以被上传,是因为它们是codecatalystArtifact构件的一部分。.aws/.git/、和README.md文件之所以上传,是因为它们位于您的源存储库中。

清理

清理干净 CodeCatalyst AWS ,避免为这些服务收费。

要清理干净 CodeCatalyst
  1. 打开 CodeCatalyst 控制台,网址为 https://codecatalyst.aws/

  2. 删除codecatalyst-artifact-source-repository源存储库。

  3. 删除工作codecatalyst-artifact-workflow流程。

要清理干净 AWS
  1. 在 Amazon S3 中进行清理,如下所示:

    1. 打开 Amazon S3 控制台,网址为https://console.aws.amazon.com/s3/

    2. 删除codecatalyst-artifact-bucket存储桶中的文件。

    3. 删除codecatalyst-artifact-bucket存储桶。

  2. 清理一下IAM,如下所示:

    1. 打开IAM控制台,网址为https://console.aws.amazon.com/iam/

    2. 删除codecatalyst-s3-build-policy

    3. 删除codecatalyst-s3-build-role