教程:使用 AWS CLI 在 AWS CodeStar 中创建项目 - AWS CodeStar

2024 年 7 月 31 日,亚马逊 Web Services (AWS) 将停止支持创建和查看 AWS CodeStar 项目。2024 年 7 月 31 日之后,您将无法再访问 AWS CodeStar 控制台或创建新项目。但是,由 AWS CodeStar创建的 AWS 资源(包括您的源存储库、管道和构建)将不受此更改的影响,并将继续运行。 AWS CodeStar 此次停用不会影响连接和 AWS CodeStar 通知。

 

如果您想跟踪工作、开发代码以及构建、测试和部署应用程序,Amazon CodeCatalyst 提供了简化的入门流程和其他功能来管理您的软件项目。详细了解 Amazon 的功能定价 CodeCatalyst。

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

教程:使用 AWS CLI 在 AWS CodeStar 中创建项目

本教程向您介绍如何使用 AWS CLI 通过示例源代码和示例工具链模板创建 AWS CodeStar 项目。AWS CodeStar 预配置 AWS CloudFormation 工具链模板中指定的 AWS 基础设施和 IAM 资源。项目管理工具链资源以构建和部署源代码。

AWS CodeStar 使用 AWS CloudFormation 构建和部署示例代码。此示例代码创建托管在 AWS Lambda 中并可通过 Amazon API Gateway 进行访问的 Web 服务。

先决条件:

  • 完成 设置 AWS CodeStar 中的步骤。

  • 您必须已创建 Amazon S3 存储桶。在本教程中,您将示例源代码和工具链模板上传到此位置。

注意

您的 AWS 账户可能产生与本教程相关的费用,包括 AWS CodeStar 使用 AWS 服务的费用。有关更多信息,请参阅 AWS CodeStar 定价

步骤 1:下载并查看示例源代码

在本教程中,有一个 zip 文件可供下载。它包含 Lambda 计算平台上的 Node.js 示例应用程序的示例源代码。将源代码放在存储库中后,其文件夹和文件如下所示:

tests/ app.js buildspec.yml index.js package.json README.md template.yml

在示例源代码中表示了以下项目元素:

  • tests/:为此项目的 CodeBuild 项目设置的单元测试。此文件夹包含在示例代码中,但它不是创建项目所必需的。

  • app.js:项目的应用程序源代码。

  • buildspec.yml:CodeBuild 资源的构建阶段的构建说明。此文件是包含 CodeBuild 资源的工具链模板所必需的。

  • package.json:应用程序源代码的依赖项信息。

  • README.md:包含在所有 AWS CodeStar 项目中的项目自述文件。此文件包含在示例代码中,但它不是创建项目所必需的。

  • template.yml:包含在所有 AWS CodeStar 项目中的基础设施模板文件或 SAM 模板文件。这不同于您在本教程后面上传的工具链 template.yml。此文件包含在示例代码中,但它不是创建项目所必需的。

步骤 2:下载示例工具链模板

为本教程提供的示例工具链模板创建存储库 (CodeCommit)、管道 (CodePipeline) 和构建容器 (CodeBuild) 并使用 AWS CloudFormation 将您的源代码部署到 Lambda 平台。除了这些资源之外,还存在可用于限定运行时环境的权限范围的 IAM 角色、CodePipeline 用于存储您的部署项目的 Amazon S3 存储桶和用于在您将代码推送到存储库时触发管道部署的 CloudWatch Events 规则。为了符合 AWS IAM 最佳实践,请缩小此示例中定义的工具链角色的策略范围。

下载并解压缩 YAML 格式的示例 AWS CloudFormation 模板。

在本教程后面运行 create-project 命令时,此模板将在 AWS CloudFormation 中创建以下自定义工具链资源。有关在本教程中创建的资源的更多信息,请参阅 AWS CloudFormation 用户指南 中的以下主题:

  • AWS::CodeCommit::Repository AWS CloudFormation 资源创建 CodeCommit 存储库。

  • AWS::CodeBuild::Project AWS CloudFormation 资源创建 CodeBuild 构建项目。

  • AWS::CodeDeploy::Application AWS CloudFormation 资源创建 CodeDeploy 应用程序。

  • AWS::CodePipeline::Pipeline AWS CloudFormation 资源创建 CodePipeline 管道。

  • AWS::S3::Bucket AWS CloudFormation 资源创建您管道的构件存储桶。

  • AWS::S3::BucketPolicy AWS CloudFormation 资源为您管道的构件存储桶创建构件存储桶策略。

  • AWS::IAM::Role AWS CloudFormation 资源创建 CodeBuild IAM 工作线程角色,该角色可向 AWS CodeStar 授予管理您的 CodeBuild 构建项目的权限。

  • AWS::IAM::Role AWS CloudFormation 资源创建 CodePipeline IAM 工作线程角色,该角色可向 AWS CodeStar 授予创建您的管道的权限。

  • AWS::IAM::Role AWS CloudFormation 资源创建 AWS CloudFormation IAM 工作线程角色,该角色可向 AWS CodeStar 授予创建您的资源堆栈的权限。

  • AWS::IAM::Role AWS CloudFormation 资源创建 AWS CloudFormation IAM 工作线程角色,该角色可向 AWS CodeStar 授予创建您的资源堆栈的权限。

  • AWS::IAM::Role AWS CloudFormation 资源创建 AWS CloudFormation IAM 工作线程角色,该角色可向 AWS CodeStar 授予创建您的资源堆栈的权限。

  • AWS::Events::Rule AWS CloudFormation 资源创建监控您的存储库的推送事件的 CloudWatch Events 规则。

  • AWS:::IAM::Role AWS CloudFormation 资源用于创建 CloudWatch Events IAM 角色。

步骤 3:在 AWS CloudFormation 中测试您的工具链模板

在上传您的工具链模板之前,可以在 AWS CloudFormation 中测试您的工具链模板并解决任何错误。

  1. 将更新的模板保存到本地计算机,并打开 AWS CloudFormation 控制台。选择创建堆栈。您应在列表中看到新资源。

  2. 查看您的堆栈中是否存在任何堆栈创建错误。

  3. 在测试完成后,请删除堆栈。

    注意

    请确保删除了您的堆栈和在 AWS CloudFormation 中创建的所有资源。否则,当您创建项目时,可能会遇到资源名称已使用的错误。

步骤 4:上传您的源代码和工具链模板

要创建 AWS CodeStar 项目,必须首先将您的源代码打包为 .zip 文件,然后将它放在 Amazon S3 中。AWS CodeStar 将使用这些内容初始化您的存储库。当您在 AWS CLI 中运行命令以创建项目时,在输入文件中指定此位置。

您还必须上传 toolchain.yml 文件并将它放在 Amazon S3 中。当您在 AWS CLI 中运行命令以创建项目时,在输入文件中指定此位置

上传您的源代码和工具链模板
  1. 以下示例文件结构显示已准备好压缩和上传的源文件和工具链模板。示例代码包括 template.yml 文件。请记住,此文件与 toolchain.yml 文件不同。

    ls src toolchain.yml ls src/ README.md app.js buildspec.yml index.js package.json template.yml tests
  2. 创建源代码文件的 .zip。

    cd src; zip -r "../src.zip" *; cd ../
  3. 使用 cp 命令并包含文件作为参数。

    以下命令将 .zip 文件和 toolchain.yml 上传到 Amazon S3。

    aws s3 cp src.zip s3://MyBucket/src.zip aws s3 cp toolchain.yml s3://MyBucket/toolchain.yml
配置您的 Amazon S3 存储桶以共享您的源代码
  • 因为您将源代码和工具链存储在 Amazon S3 中,所以可以使用 Amazon S3 存储桶策略和对象 ACL 来确保其他 IAM 用户或 AWS 账户可以从您的示例创建项目。AWS CodeStar 可确保创建自定义项目的任何用户都有权访问要使用的工具链和源。

    要允许任何人使用您的示例,请运行以下命令:

    aws s3api put-object-acl --bucket MyBucket --key toolchain.yml --acl public-read aws s3api put-object-acl --bucket MyBucket --key src.zip --acl public-read

第 5 步:在 AWS CodeStar 中创建项目

使用以下步骤创建您的项目。

重要

确保在 AWS CLI 中配置首选 AWS 区域。在 AWS CLI 中配置的 AWS 区域中创建您的项目。

  1. 运行 create-project 命令并包含 --generate-cli-skeleton 参数:

    aws codestar create-project --generate-cli-skeleton

    输出中将显示 JSON 格式的数据。将数据复制到本地计算机上或安装 AWS CLI 的实例上某位置处的文件(如 input.json)中。按照下面所示修改复制的数据,并保存您的结果。为存储桶名称为 myBucket 的名为 MyProject 的项目配置此输入文件。

    • 确保提供 roleArn 参数。对于自定义模板,如本教程中的示例模板,您必须提供角色。此角色必须拥有创建步骤 2:下载示例工具链模板中指定的所有资源的权限。

    • 确保您在 stackParameters 下提供 ProjectId 参数。为本教程提供的示例模板需要此参数。

    { "name": "MyProject", "id": "myproject", "description": "Sample project created with the CLI", "sourceCode": [ { "source": { "s3": { "bucketName": "MyBucket", "bucketKey": "src.zip" } }, "destination": { "codeCommit": { "name": "myproject" } } } ], "toolchain": { "source": { "s3": { "bucketName": "MyBucket", "bucketKey": "toolchain.yml" } }, "roleArn": "role_ARN", "stackParameters": { "ProjectId": "myproject" } } }
  2. 切换到包含您刚才保存的文件的目录,然后再次运行 create-project 命令。包含 --cli-input-json 参数。

    aws codestar create-project --cli-input-json file://input.json
  3. 如果成功,输出中将显示与以下内容类似的数据:

    { "id": "project-ID", "arn": "arn" }
    • 输出包含有关新项目的信息:

      • id 值表示项目 ID。

      • arn 值表示项目的 ARN。

  4. 使用 describe-project 命令检查您的项目创建状态。包含 --id 参数。

    aws codestar describe-project --id <project_ID>

    与以下内容类似的数据将显示在输出中:

    { "name": "MyProject", "id": "myproject", "arn": "arn:aws:codestar:us-east-1:account_ID:project/myproject", "description": "", "createdTimeStamp": 1539700079.472, "stackId": "arn:aws:cloudformation:us-east-1:account_ID:stack/awscodestar-myproject/stack-ID", "status": { "state": "CreateInProgress" } }
    • 输出包含有关新项目的信息:

      • id 值表示唯一项目 ID。

      • state 值表示项目创建状态,如 CreateInProgressCreateComplete

在创建项目时,您可以从命令行或您常用的 IDE 为项目存储库添加成员配置访问权限