教學課程:在 AWS 中建立專案 CodeStar 與AWS CLI - AWS CodeStar

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

教學課程:在 AWS 中建立專案 CodeStar 與AWS CLI

本教學課程將告訴您如何使用AWS CLI建立 AWS CodeStar 項目,其中包含示例源代碼和示例工具鏈模板。AWS CodeStar 規定AWS基礎設施和 IAM 資源AWS CloudFormation工具鏈範本。專案會管理您的工具鏈資源來建置並部署您的原始程式碼。

AWS CodeStar 使用AWS CloudFormation來建置並部署您的範本程式碼。此範本程式碼會建立託管於AWS Lambda,並且可以通過 Amazon API Gateway 進行訪問。

先決條件:

  • 完成「設定 AWS CodeStar」中的步驟。

  • 您必須先建立 Amazon S3 儲存貯體。在此教學課程中,您會將範例原始程式碼和工具鏈範本上傳至此位置。

注意

您的AWS帳户可能需要支付與此教學課程相關的成本,包括AWSAWS CodeStar 使用的服務。如需詳細資訊,請參閱「」AWS CodeStar 定價

步驟 1:下載並檢範例原始程式碼

此教學課程提供一個 zip 檔案可供下載。其中包含 Lambda 運算平台上的 Node.js 範例應用程式的範例原始程式碼。原始程式碼進入您的儲存庫時,將出現其資料夾和檔案,如下所示:

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

您的範例原始程式碼將呈現下列專案元素:

  • tests/:針對此專案 CodeBuild 專案的 CodeBuild 專案所設定的單元測試。此資料夾包含在範本程式碼中,但並非建立專案所必須之元素。

  • app.js:您專案的應用程式原始程式碼。

  • buildspec.yml:CodeBuild 資源建置階段的建置説明。工具鏈範本搭配 CodeBuild 資源必須使用此檔案。

  • package.json:您應用程式原始程式碼的相依性資訊。

  • README.md:AWS CodeStar 專案均具備的專案自述檔案。此檔案包含在範本程式碼中,但並非建立專案所必須之元素。

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

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

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

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

稍後在此教學課程執行 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 為 AWS 提供 IAM 工作人員角色 CodeStar 權限來管理 CodeBuild 組建專案。

  • 所以此AWS::IAM::Role AWS CloudFormation資源會建立 CodePipeline 為 AWS 提供 IAM 工作人員角色 CodeStar 權限來建立管道。

  • 所以此AWS::IAM::Role AWS CloudFormation資源會建立AWS CloudFormation為 AWS 提供 IAM 工作人員角色 CodeStar 權限來創建您的資源堆棧。

  • 所以此AWS::IAM::Role AWS CloudFormation資源會建立AWS CloudFormation為 AWS 提供 IAM 工作人員角色 CodeStar 權限來創建您的資源堆棧。

  • 所以此AWS::IAM::Role AWS CloudFormation資源會建立AWS CloudFormation為 AWS 提供 IAM 工作人員角色 CodeStar 權限來創建您的資源堆棧。

  • 所以此AWS::Events::Rule AWS CloudFormation資源會建立 CloudWatch 監控您儲存庫的事件規則。

  • 所以此AWS::IAM::Role AWS 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 來新增團隊成員或針對專案儲存庫進行設定存取