範例:Step Functions 中的別名和版本部署 - AWS Step Functions

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

範例:Step Functions 中的別名和版本部署

以下 Canary 部署技術範例顯示如何部署新的狀態機版本 AWS Command Line Interface。 在此範例中,您建立的別名會將 20% 的執行流量路由至新版本。然後,它將剩餘的 80% 路由到早期版本。若要部署新的狀態機器版本並使用別名轉移執行流量,請完成以下步驟:

  1. 從目前的狀態機器修訂發佈版本。

    使用中的publish-state-machine-version指令 AWS CLI 從名為的狀態機的當前版本中發布一個版本 myStateMachine:

    aws stepfunctions publish-state-machine-version --state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine

    回應會stateMachineVersionArn傳回您發佈的版本。例如:arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:1

  2. 建立指向狀態機版本的別名。

    使用指create-state-machine-alias令建立指向以下版本 1 PROD 的名稱的別名myStateMachine

    aws stepfunctions create-state-machine-alias --name PROD --routing-configuration "[{\"stateMachineVersionArn\":\"arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:1\",\"weight\":100}]"
  3. 驗證別名啟動的執行使用正確的發佈版本。

    透過PRODstart-execution命令中myStateMachine提供別名來啟動ARN的新執行:

    aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachineAlias:myStateMachine:PROD --input "{}"

    如果您在StartExecution請求ARN中提供狀態機器,它會使用最新revision的狀態機器,而不是別名中指定的版本來開始執行。

  4. 更新狀態機定義並發佈新版本。

    更新myStateMachine並發布其新版本。要做到這一點,使用update-state-machine命令的可選publish參數:

    aws stepfunctions update-state-machine --state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine --definition $UPDATED_STATE_MACHINE_DEFINITION --publish

    回應會stateMachineVersionArn傳回新版本的。例如:arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:2

  5. 更新別名以指向兩個版本,並設置別名的路由配置。

    使用update-state-machine-alias指令更新別名的路由組態PROD。設定別名,讓 80% 的執行流量進入第 1 版,剩餘的 20% 會移至第 2 版:

    aws stepfunctions update-state-machine-alias --state-machine-alias-arn arn:aws:states:us-east-1:123456789012:stateMachineAlias:myStateMachine:PROD --routing-configuration "[{\"stateMachineVersionArn\":\"arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:1\",\"weight\":80}, {\"stateMachineVersionArn\":\"arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:2\",\"weight\":20}]"
  6. 將版本 1 取代為版本 2。

    確認新的狀態機器版本正常運作之後,您可以部署新的狀態機器版本。若要這麼做,請再次更新別名,將 100% 的執行流量指派給新版本。

    使用update-state-machine-alias指令將第 2 版別名PROD的路由配置設定為 100%:

    aws stepfunctions update-state-machine-alias --state-machine-alias-arn arn:aws:states:us-east-1:123456789012:stateMachineAlias:myStateMachine:PROD --routing-configuration "[{\"stateMachineVersionArn\":\"arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:2\",\"weight\":100}]"
提示

若要復原第 2 版的部署,請編輯別名的路由組態,將 100% 的流量轉移到新部署的版本。

aws stepfunctions update-state-machine-alias --state-machine-alias-arn arn:aws:states:us-east-1:123456789012:stateMachineAlias:myStateMachine:PROD --routing-configuration "[{\"stateMachineVersionArn\":\"arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:1\",\"weight\":100}]"

您可以使用版本和別名來執行其他類型的部署。例如,您可以執行新版本的狀態機器的滾動部署。若要這麼做,請逐漸增加指向新版本之別名路由組態中的加權百分比。

您也可以使用版本和別名來執行藍/綠部署。為此,請創建一個名為的別名,green該別名運行狀態機的當前版本 1。然後,建立另一個名blue為執行新版本的別名,例如2。若要測試新版本,請將執行流量傳送至blue別名。當您確定新版本正常運作時,請更新green別名以指向新版本。