轉移 AWS Lambda 專案的流量 - 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 Lambda 專案的流量

AWS CodeDeploy 支援函數版本在 AWS CodeStar 無伺服器專案中部署 AWS Lambda 函數。AWS Lambda 部署可將傳入流量從現有的 Lambda 函數轉移到更新的 Lambda 函數版本。您可能想要測試更新的 Lambda 函數,做法是部署不同的版本,然後將部署轉返回第一個版本。

使用本節中的步驟修改您的AWS CodeStar專案範本,並更新您的 CodeStarWorker 角色 IAM 許可。這個任務啟動 AWS CloudFormation 中的自動回應,其建立設有別名的 AWS Lambda 函數,然後指示 AWS CodeDeploy 轉移流量至更新的環境。

注意

只有在您在 2018 年 12 月 12 日之前建立 AWS CodeStar 專案時,才能完成這些步驟。

AWS CodeDeploy 有三種部署選項,可讓您在應用程式中轉移流量到 AWS Lambda 函數的版本:

  • Canary:流量以兩個增量轉移。您可從預先定義的 canary 選項中選擇,這會指定流量轉移至您於第一次增量時更新的 Lambda 函式版本之百分比,以及在剩餘流量於第二次增量前轉移的間隔 (以分鐘計)。

  • Linear (線性):流量以每個增量之間的相等分鐘數以同等增量轉移。您可從預先指定的線性選項中指定每次增量的流量轉移百分比例,以及在每個增量之間的分鐘數。流量以每個增量之間的相等分鐘數以同等增量轉移。您可從預先指定的線性選項中指定每次增量的流量轉移百分比例,以及在每個增量之間的分鐘數。

  • ll-at-once答:所有流量都會一次從原始 Lambda 函數轉移到更新的 Lambda 函數版本。

部署偏好類型
Canary10Percent30Minutes
Canary10Percent5Minutes
Canary10Percent10Minutes
Canary10Percent15Minutes
線性 10 分鐘 PercentEvery
線性 10 PercentEvery 1 分鐘
線性 10 2 分鐘 PercentEvery
線性 10 3 分鐘 PercentEvery
AllAtOnce

如需有關在AWS Lambda運算平台上AWS CodeDeploy部署的詳細資訊,請參閱 AWSLambda 運算平台上的部署。

如需 AWS SAM 的詳細資訊,請參閱上 GitHub的AWS無伺服器應用程式模型 (AWSSAM)

先決條件:

當您建立無伺服器專案,請選取任何範本與 Lambda 運算平台。您必須以系統管理員身分登入,才能執行步驟 4-6。

主題
    步驟 1:修改 SAM 範本以新增 AWS Lambda 版本部署參數
    1. 請在以下位置開啟AWS CodeStar主控台。 https://console.aws.amazon.com/codestar/

    2. 建立專案或選擇使用 template.yml 檔案的現有專案,然後開啟程式碼頁面。在儲存庫的最高層,留意要修改之名為 template.yml 的 SAM 範本位置。

    3. 在 IDE 或本機儲存庫中開啟 template.yml 檔案。複製以下文字以新增 Globals 部分至檔案。本教學課程的範例文字選擇 Canary10Percent5Minutes 選項。

      Globals: Function: AutoPublishAlias: live DeploymentPreference: Enabled: true Type: Canary10Percent5Minutes

      此範例顯示新增 Globals 部分之後的已修改範本:

      如需詳細資訊,請參閱 SAM 範本的全域區段參考指南。

    步驟 2:編輯 AWS CloudFormation 角色以新增許可
    1. 請登入AWS Management Console並開啟AWS CodeStar主控台,網址為 https://console.aws.amazon.com/codestar/

      注意

      您必須使用與您在中建立或識別的 IAM AWS Management Console 使用者相關聯的登入資料登入設定 AWS CodeStar。此使用者必須已AWSCodeStarFullAccess附加名為的AWS受管理策略。

    2. 選擇您現有的無伺服器專案,然後開啟專案資源頁面。

    3. 在 [資源] 下,選擇為 CodeStarWorker/角色建立的 IAM AWS CloudFormation 角色。在 IAM 主控台開啟該角色。

    4. ​Permissions (許可) 標籤上,在 內嵌政策 的服務角色政策列中,選擇 編輯政策。選擇 JSON 標籤來編輯 JSON 格式的政策。

      注意

      您的服務角色名為 CodeStarWorkerCloudFormationRolePolicy

    5. JSON 欄位中,在 Statement 元素中新增下列政策聲明。將 regionid 預留位置取代為您的區域與帳戶 ID。

      { "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:GetBucketVersioning" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::codepipeline*" ], "Effect": "Allow" }, { "Action": [ "lambda:*" ], "Resource": [ "arn:aws:lambda:region:id:function:*" ], "Effect": "Allow" }, { "Action": [ "apigateway:*" ], "Resource": [ "arn:aws:apigateway:region::*" ], "Effect": "Allow" }, { "Action": [ "iam:GetRole", "iam:CreateRole", "iam:DeleteRole", "iam:PutRolePolicy" ], "Resource": [ "arn:aws:iam::id:role/*" ], "Effect": "Allow" }, { "Action": [ "iam:AttachRolePolicy", "iam:DeleteRolePolicy", "iam:DetachRolePolicy" ], "Resource": [ "arn:aws:iam::id:role/*" ], "Effect": "Allow" }, { "Action": [ "iam:PassRole" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Action": [ "codedeploy:CreateApplication", "codedeploy:DeleteApplication", "codedeploy:RegisterApplicationRevision" ], "Resource": [ "arn:aws:codedeploy:region:id:application:*" ], "Effect": "Allow" }, { "Action": [ "codedeploy:CreateDeploymentGroup", "codedeploy:CreateDeployment", "codedeploy:DeleteDeploymentGroup", "codedeploy:GetDeployment" ], "Resource": [ "arn:aws:codedeploy:region:id:deploymentgroup:*" ], "Effect": "Allow" }, { "Action": [ "codedeploy:GetDeploymentConfig" ], "Resource": [ "arn:aws:codedeploy:region:id:deploymentconfig:*" ], "Effect": "Allow" }
    6. 選擇檢閱政策,確保政策沒有任何錯誤。當政策沒有任何錯誤時,選擇儲存變更

    步驟 3:遞交和推送您的範本變更以啟動 AWS Lambda 版本轉換
    1. 遞交和推送在步驟 1 儲存的 template.yml 檔案中的變更。

      注意

      此會啟動您的管道。如果您在更新 IAM 許可之前遞交變更,您的管道開始執行,AWS CloudFormation 堆疊更新發生錯誤,堆疊更新會還原。如果發生這種情況,請在修正權限後重新啟動您的管道。

    2. 當專案的管道啟動部署階段時,AWS CloudFormation堆疊更新就會開始。當部署啟動時,若要在您的 AWS CodeStar 儀表板查看堆疊更新狀態,請選擇管道中的 AWS CloudFormation 階段。

      在堆疊更新時間,AWS CloudFormation 會自動更新專案資源,如下所示:

      • AWS CloudFormation 透過建立設有別名的 Lambda 函數處理 template.yml 檔案,甚至是關聯和資源。

      • AWS CloudFormation 呼叫 Lambda 函數以建立新的版本。

      • AWS CloudFormation創建一個 AppSpec 文件並調AWS CodeDeploy用轉移流量。

      如需有關在 SAM 中發佈別名 Lambda 函數的詳細資訊,請參閱AWS無伺服器應用程式模型 (SAM) 範本參考。如需AWS CodeDeploy AppSpec 檔案中事件掛接和資源的詳細資訊,請參閱 AWSLambda 部署的 AppSpec 「資源」一節 (僅限 L AWS ambda 部署) 和 AppSpec 「勾點」一節

    3. 成功完成您的管道之後,AWS CloudFormation 堆疊中會建立資源。在專案頁面上的專案資源清單中,查看 AWS CodeDeploy 應用程式、AWS CodeDeploy 部署群組,以及為您的專案建立的 AWS CodeDeploy 服務角色資源。

    4. 若要建立新的版本,可在您的儲存庫中變更 Lambda 函數。新部署根據 SAM 範本中指出的部署類型來啟動及轉移流量。若要查看正轉移到新版本的流量狀態,請在專案頁面的專案資源清單中,選擇到 AWS CodeDeploy 部署的連結。

    5. 若要查看每個修訂版的詳細資訊,請在修訂版下選擇到 AWS CodeDeploy 部署群組的連結。

    6. 在您的本機工作目錄,您可以變更您的 AWS Lambda 函數,並確認專案儲存庫的變更。AWS CloudFormation 支援 AWS CodeDeploy 以相同方式管理下一個修訂版。如需重新部署、停止或回復 Lambda 部署的詳細資訊,請參閱 Lamb AWSda 運算平台上的部署。