本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學課程:建立管道,將無伺服器應用程式發佈至 AWS Serverless Application Repository
您可以使用 AWS CodePipeline 持續將無 AWS SAM 伺服器應用程式交付至 AWS Serverless Application Repository。
重要
作為建立管道的一部分,客戶提供的 S3 成品儲存貯體將由 CodePipeline 用於成品。(這與用於 S3 來源動作的儲存貯體不同。) 如果 S3 成品儲存貯體位於與管道帳戶不同的帳戶中,請確保 S3 成品儲存貯體由 AWS 帳戶 安全且可靠的 擁有。
本教學課程示範如何建立和設定管道,以建置託管在 中的無伺服器應用程式, GitHub 並將其 AWS Serverless Application Repository 自動發佈至 。管道會使用 GitHub 作為來源提供者,以及 CodeBuild 作為建置提供者。若要將無伺服器應用程式發佈至 AWS Serverless Application Repository,您可以部署應用程式
重要
您在此程序中新增至管道的許多動作都涉及在建立管道之前需要建立 AWS 的資源。來源動作 AWS 的資源一律必須在您建立管道的相同 AWS 區域中建立。例如,如果您在美國東部 (俄亥俄) 區域建立管道,您的 CodeCommit 儲存庫必須位於美國東部 (俄亥俄) 區域。
您可以在建立管道時新增跨區域動作。跨區域動作 AWS 的資源必須位於您計劃執行動作的相同 AWS 區域中。如需詳細資訊,請參閱在中新增跨區域動作 CodePipeline。
開始之前
在此教學課程中,我們假設以下情況。
-
您熟悉 AWS Serverless Application Model (AWS SAM) 和 AWS Serverless Application Repository。
-
您在 中託管了使用 GitHub 發佈到 AWS Serverless Application Repository 的無伺服器應用程式 AWS SAM CLI。若要將範例應用程式發佈至 AWS Serverless Application Repository,請參閱 AWS Serverless Application Repository 開發人員指南 中的快速入門:發佈應用程式。若要將您自己的應用程式發佈至 AWS Serverless Application Repository,請參閱 AWS Serverless Application Model 開發人員指南 中的使用 發佈應用程式 AWS SAM CLI。
步驟 1:建立 buildspec.yml 檔案
建立具有下列內容buildspec.yml
的檔案,並將其新增至無伺服器應用程式的 GitHub 儲存庫。Replace (取代) template.yml
使用應用程式的 AWS SAM 範本和 bucketname
儲存封裝應用程式的 S3 儲存貯體。
version: 0.2 phases: install: runtime-versions: python: 3.8 build: commands: - sam package --template-file
template.yml
--s3-bucketbucketname
--output-template-file packaged-template.yml artifacts: files: - packaged-template.yml
步驟 2:建立並設定管道
請依照下列步驟,在 AWS 區域 您要發佈無伺服器應用程式的 中建立管道。
登入 AWS Management Console 並在 開啟 CodePipeline 主控台https://console.aws.amazon.com/codepipeline/
。 -
如有必要,請切換至 AWS 區域 您要發佈無伺服器應用程式的 。
-
選擇 Create pipeline (建立管道)。在 Choose pipeline settings (選擇管道設定) 頁面的 Pipeline name (管道名稱) 中輸入管道的名稱。
-
在管道類型 中,選擇 V2。如需詳細資訊,請參閱管道類型。選擇 Next (下一步)。
-
在服務角色 中,選擇要允許 CodePipeline 在 中建立服務角色的新服務角色IAM。
-
將 Advanced settings (進階設定) 下的設定保留為預設值,然後選擇 Next (下一步)。
-
在新增來源階段頁面上的來源提供者 中,選擇 GitHub。
-
在連線 下,選擇現有的連線或建立新的連線。若要建立或管理 GitHub 來源動作的連線,請參閱 GitHub 連線。
-
在儲存庫 中,選擇您的 GitHub 來源儲存庫。
-
在分支 中,選擇您的 GitHub 分支。
-
保留來源動作的其餘預設值。選擇 Next (下一步)。
-
在 Add build stage (新增建置階段) 頁面,新增建置階段:
-
在 Build provider (建置供應商) 中,選擇 AWS CodeBuild。對於 Region (區域),請使用管道區域。
-
選擇建立專案。
-
在 Project name (專案名稱) 中,輸入此建置專案的名稱。
-
在 Environment image (環境映像) 中,選擇 Managed image (受管映像)。針對 Operating system (作業系統),選擇 Ubuntu。
-
對於 Runtime (執行時間) 和 Runtime version (執行時間版本),選擇無伺服器應用程式所需的執行時間和版本。
-
對於 Service role (服務角色),選擇 New service role (新服務角色)。
-
對於 Build specifications (建置規格),選擇 Use a buildspec file (使用 buildspec 檔案)。
-
選擇繼續至 CodePipeline。這會開啟 CodePipeline 主控台,並建立使用儲存庫
buildspec.yml
中 進行組態的 CodeBuild 專案。建置專案使用服務角色來管理 AWS 服務 許可。此步驟可能需要數分鐘。 -
選擇 Next (下一步)。
-
-
在 Add deploy stage (新增部署階段) 頁面上,選擇 Skip deploy stage (跳過部署階段),然後再次選擇 Skip (跳過) 來接受警告訊息。選擇 Next (下一步)。
-
選擇 Create pipeline (建立管道)。您應該會看到圖表,顯示該來源及建置階段。
-
授予 CodeBuild 服務角色許可,以存取存放封裝應用程式的 S3 儲存貯體。
-
在新管道的建置階段,選擇 CodeBuild。
-
選擇 Build details (建置詳細資訊) 標籤。
-
在環境 中,選擇要開啟IAM主控台 CodeBuild 的服務角色。
-
展開
CodeBuildBasePolicy
的選項,然後選擇 Edit policy (編輯政策)。 -
選擇 JSON。
-
新增政策陳述式與下列內容。陳述式允許將物件 CodeBuild 放入存放封裝應用程式的 S3 儲存貯體。Replace (取代)
bucketname
您的 S3 儲存貯體名稱。{ "Effect": "Allow", "Resource": [ "arn:aws:s3:::
bucketname
/*" ], "Action": [ "s3:PutObject" ] } -
選擇檢閱政策。
-
選擇 Save changes (儲存變更)。
-
步驟 3:部署發佈應用程式
請依照下列步驟,部署包含執行發佈至 之 Lambda 函數的應用程式 AWS Serverless Application Repository。此應用程式為 aws-serverless-codepipeline-serverlessrepo-發佈 。
注意
您必須將應用程式部署到與管道 AWS 區域 相同的 。
-
移至應用程式
頁面,並選擇 Deploy (部署)。 -
選取 我確認此應用程式會建立自訂IAM角色 。
-
選擇部署。
-
選擇檢視 AWS CloudFormation 堆疊以開啟 AWS CloudFormation 主控台。
-
展開 Resources (資源) 區段。您可以看到 ServerlessRepoPublish,其類型為 AWS::Lambda::Function 。請記下這個資源的實體 ID,以用於下一個步驟。當您在 中建立新的發佈動作時,請使用此實體 ID CodePipeline。
步驟 4:建立發佈動作
依照以下步驟在管道中建立發佈動作。
-
在 開啟 CodePipeline 主控台https://console.aws.amazon.com/codepipeline/
。 -
在左側導覽區段中,選擇您欲編輯的管道。
-
選擇編輯。
-
在目前管道的最後階段之後,選擇 + Add stage (新增階段)。在 Stage name (階段名稱) 中輸入名稱,例如
Publish
,然後選擇 Add stage (新增階段)。 -
在新階段中,選擇 + Add action group (+ 新增動作群組)。
-
輸入動作名稱。從 Action provider (動作供應商) 的 Invoke (呼叫) 中,選擇 AWS Lambda。
-
從輸入成品 中,選擇 BuildArtifact。
-
從函數名稱 中,選擇您在上一個步驟中記下的 Lambda 函數的實體 ID。
-
為動作選擇 Save (儲存)。
-
為階段選擇 Done (完成)。
-
在右上角,選擇 Save (儲存)。
-
若要驗證管道,請在 中變更您的應用程式 GitHub。例如,在 AWS SAM 範本檔案的
Metadata
區段中變更應用程式的描述。認可變更並將其推送至您的 GitHub 分支。這會觸發您的管道執行。當管道完成時,在 AWS Serverless Application Repository中檢查您的應用程式是否已就您的變更進行更新。