教學課程:在 AWS CodeStar 使用 AWS CLI 建立專案 - AWS CodeStar

2024 年 7 月 31 日,Amazon Web Services (AWS) 將停止建立和檢視 AWS CodeStar 專案的支援。2024 年 7 月 31 日之後,您將無法再存取 AWS CodeStar 主控台或建立新專案。但是 AWS CodeStar,由建立的 AWS 資源 (包括您的來源儲存庫、管道和組建) 將不受此變更的影響,並將繼續運作。 AWS CodeStar 連線和 AWS CodeStar 通知不會受到此停止的影響。

 

如果您想要追蹤工作、開發程式碼以及建置、測試和部署應用程式,Amazon CodeCatalyst 提供簡化的入門程序和其他功能來管理軟體專案。進一步了解 Amazon 的功能定價 CodeCatalyst。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

教學課程:在 AWS CodeStar 使用 AWS CLI 建立專案

本教學課程說明如何使用建立具有範例原始程式碼和範例工具鏈範本的AWS CodeStar專案。AWS CLI AWS CodeStar佈建AWS CloudFormation工具鏈範本中指定的AWS基礎架構和 IAM 資源。專案會管理您的工具鏈資源來建置並部署您的原始程式碼。

AWS CodeStar 使用 AWS CloudFormation 來建置並部署您的範本程式碼。此範例程式碼會建立一個託管於其中的 Web 服務,AWS Lambda並可透過 Amazon API Gateway 存取。

先決條件:

  • 完成「設定 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 專案均具備的專案 readme 檔案。此檔案包含在範本程式碼中,但並非建立專案所必須之元素。

  • template.yml:所有 AWS CodeStar 專案均具備的基礎設施範本檔案或 SAM 範本檔案。這與您稍後將於本教學課程上傳的工具鏈 template.yml 不同。此檔案包含在範本程式碼中,但並非建立專案所必須之元素。

步驟 2:下載範例工具鏈範本

針對此教學課程所提供的範例工具鏈範本會建立儲存庫 (CodeCommit)、管道 (CodePipeline) 和建置容器 (CodeBuild),並使用 AWS CloudFormation 將您的原始程式碼部署到 Lambda 平台。除了這些資源之外,您還可以使用 IAM 角色來限定執行階段環境的許可範圍、 CodePipeline用於存放部署成品的 Amazon S3 儲存貯體,以及當您將程式碼推送至儲存庫時用來觸發管道部署的 CloudWatch 事件規則。為了符合 AWS IAM 最佳實務,請縮減此範例定義的工具鏈角色政策的範圍。

下載並解壓縮 YAML 格式的AWS CloudFormation範例範本。

稍後在此教學課程執行 create-project 命令時,此範本會在 AWS CloudFormation 中建立下列自訂工具鏈資源。如需此教學課程中建立的資源詳細資訊,請參閱 AWS CloudFormation 使用者指南中的下列主題:

  • AWS::CodeCommit::RepositoryAWS CloudFormation資源創建一個 CodeCommit存儲庫。

  • AWS::CodeBuild::ProjectAWS CloudFormation資源創建一個 CodeBuild 構建項目。

  • AWS::CodeDeploy::ApplicationAWS CloudFormation源創建一個 CodeDeploy應用程序。

  • AWS::CodePipeline::PipelineAWS CloudFormation源會建立 CodePipeline管線。

  • AWS::S3::BucketAWS CloudFormation源會建立管道的成品值區。

  • AWS::S3::BucketPolicyAWS CloudFormation源會為管道的成品值區建立成品值區原則。

  • AWS::IAM::RoleAWS CloudFormation源會建立 CodeBuild IAM 背景工作者角色,以提供管理 CodeBuild 組建專案的AWS CodeStar權限。

  • AWS::IAM::RoleAWS CloudFormation源會建立 CodePipeline IAM 背景工作者角色,以提供建立管道的AWS CodeStar權限。

  • AWS::IAM::RoleAWS CloudFormation源會建立 AWS CloudFormation IAM 背景工作者角色,以提供建立資源堆疊的AWS CodeStar權限。

  • AWS::IAM::RoleAWS CloudFormation源會建立 AWS CloudFormation IAM 背景工作者角色,以提供建立資源堆疊的AWS CodeStar權限。

  • AWS::IAM::RoleAWS CloudFormation源會建立 AWS CloudFormation IAM 背景工作者角色,以提供建立資源堆疊的AWS CodeStar權限。

  • AWS::Events::RuleAWS CloudFormation源會建立 E CloudWatch vents 規則,以監視存放庫中是否有推送事件。

  • AWS::IAM::RoleAWS CloudFormation源會建立 CloudWatch 活動 IAM 角色。

步驟 3:測試 AWS CloudFormation 內的工具鏈範本

上傳工具鏈範本前,您可在 AWS CloudFormation 測試工具鏈範本並針對錯誤進行疑難排解。

  1. 儲存您的更新範本到本機電腦,並開啟 AWS CloudFormation 主控台。選擇 Create Stack (建立堆疊)。您應該會在清單中看到新資源。

  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區域AWS CLI。您的專案是在中設定的AWS區域中建立AWS CLI。

  1. 執行 create-project 命令並納入 --generate-cli-skeleton 參數:

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

    即會在輸出中顯示 JSON 格式化資料。將資料複製至本機電腦或執行個體上 AWS CLI 安裝位置中的檔案 (如 input.json)。如下所示修改複製的資料,並儲存您的結果。此輸入檔案的專案名稱設定為 MyProject,儲存貯體名稱則設定為 myBucket

    • 請確認您已提供 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 來新增團隊成員或針對專案儲存庫進行設定存取