參考部署

AWS 上的藍/綠部署

使用 AWS CodePipeline 部署到 AWS Elastic Beanstalk 環境

本快速入門會使用 AWS CodePipeline 自動在 AWS 部署藍/綠架構。持續整合/持續部署 (CI/CD) 管道的建立時間需時約 15 分鐘。

當應用程式開發並部署至 AWS Elastic Beanstalk 時,具有兩個分開但相同的環境:藍色和綠色,可提高可用性和降低風險。在快速入門架構中,藍色環境是一般處理即時流量的生產環境。CI/CD 管道架構會建立作用中 Elastic Beanstalk 環境 (藍色) 的複製品 (綠色)。然後這個管道會在這兩個環境之間調換網址。

當 CodePipeline 部署應用程式的程式碼至原始環境 (測試和維護發生) 時,臨時複製環境會處理即時流量。成功部署到藍色環境,且程式碼審查和程式碼測試完成時,管道會再次在綠色和藍色環境之間對調網址。藍色環境再次服務即時流量,而管道會終止綠色環境。

 

 

本快速入門由
AWS 解決方案架構師所開發。

 

  •  您將建置的項目
  • 使用本快速入門,為 AWS 上的藍/綠部署和設定以下環境:

    • 管道:用於上傳 Amazon S3 儲存貯體時觸發,以將新的應用程式套件版本部署到 AWS Elastic Beanstalk 環境。
    • AWS Lambda 函數:用於將藍色環境複製為綠色環境、對調網址,以及在完成藍色環境部署時終止綠色環境。
    • AWS CodeBuild 專案:用於執行藍色與綠色環境之間初始網址對調,以及測試藍色環境部署。
    • 如果未提供現有 Elastic Beanstalk 環境和存在快速入門的應用程式,本快速入門將會建立範例環境。
    • Lambda 函數、CodeBuild 專案、CodePipeline 的AWS IAM 角色,以及 Elastic Beanstalk 範例應用程式的服務角色。
    • 將存放 CodePipeline Artifact Store、Lambda Function 資產和 CodeBuild 資產的 Amazon S3 儲存貯體分開。您可以使用選用的 S3 儲存貯體,來存放 zip 套件,這個套件包含用於部署 Elastic Beanstalk 的應用程式程式碼。
  •  部署方式
  • 要在 AWS 上建立藍/綠架構,請依照部署指南中的說明操作。部署過程大約需要 15 分鐘,包括以下步驟:

    1. 請查看先決條件。
    2. 如果您還沒有 AWS 帳戶,請在 https://aws.amazon.com 註冊。
    3. (選用) 記錄現有的 Elastic Beanstalk 環境和應用程式。如果要啟動範例環境和應用程式,則可略過這個步驟。
    4. 啟動快速入門以及自訂您的設定。
    5. (選用) 如果啟用 Git 至 S3 整合,請設定 Git 存放庫。
    6. 測試部署。

    Amazon 可能會與 AWS 合作夥伴 (與 AWS 在此解決方案上協作的合作夥伴) 分享使用者部署資訊。  

  •  成本和授權
  • 您必須自行負擔執行此快速入門參考部署時,所使用 AWS 服務的費用。使用本快速入門無須另外付費。

    本快速入門會啟動一個管道,這個管道會與 Lambda 函數、AWS CodeBuild、Amazon Simple Notification Service (SNS) 和 Elastic Beanstalk 互動,以達成符合成本效益的部署。或者,您也可以透過本快速入門,啟用 Git Webhooks 搭配 AWS 服務快速入門,將 Git 存放庫連結到 Amazon S3。Git 至 Amazon S3 提供 Amazon API Gateway 端點和數個 Lambda 函數,可處理程式碼的下載、壓縮以及將程式碼部署至 Amazon S3。

    AWS CodePipeline 會針對每個作用中管道收取費用,請參閱 AWS CodePipeline 定價。AWS CodeBuild 和 Amazon SNS 使用按用量付費的方式,詳情請參閱 AWS CodeBuildAmazon SNS。根據組態的不同,Git Webhooks 搭配 AWS 服務快速入門可能會部署 AWS Key Management Service (AWS KMS) 金鑰;如需了解定價,請參閱 AWS Key Management Service 定價。API 閘道、Amazon S3 和 Lambda 會根據您遞交程式碼至儲存庫的頻率收費。每次遞交時都會觸發 API 閘道的 Lambda 執行請求;請參閱 API 閘道Amazon S3Lambda 的定價頁面。