

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

# 範例：Step Functions 中的別名和版本部署
<a name="example-alias-version-deployment"></a>

下列 Canary 部署技術範例示範如何使用 部署新的狀態機器版本 AWS Command Line Interface。在此範例中，您建立的別名會將 20% 的執行流量路由到新版本。然後，它會將剩餘的 80% 路由到較早的版本。若要使用[別名](concepts-state-machine-alias.md)部署新的狀態機器[版本](concepts-state-machine-version.md)和轉移執行流量，請完成下列步驟：

1. 

**從目前的狀態機器修訂版發佈版本。**  
使用 AWS CLI 中的 **publish-state-machine-version**命令，從名為 的狀態機器目前修訂版發佈版本 `myStateMachine:`

   ```
   aws stepfunctions publish-state-machine-version --state-machine-arn arn:aws:states:region:account-id:stateMachine:myStateMachine
   ```

   回應會傳回您發佈`stateMachineVersionArn`的 版本。例如 `arn:aws:states:region:account-id:stateMachine:myStateMachine:1`。

1. 

**建立指向狀態機器版本的別名。**  
使用 **create-state-machine-alias**命令建立名為 的別名`PROD`，指向 第 1 版`myStateMachine`：

   ```
   aws stepfunctions create-state-machine-alias --name PROD --routing-configuration "[{\"stateMachineVersionArn\":\"arn:aws:states:region:account-id:stateMachine:myStateMachine:1\",\"weight\":100}]"
   ```

1. 

**確認別名啟動的執行使用正確的發佈版本。**  
在 **start-execution**命令**PROD**中提供別名的 `myStateMachine` ARN，以啟動 的新執行：

   ```
   aws stepfunctions start-execution 
     --state-machine-arn arn:aws:states:region:account-id:stateMachineAlias:myStateMachine:PROD
     --input "{}"
   ```

   如果您在 [StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html) 請求中提供狀態機器 ARN，它會使用最新的[revision](concepts-cd-aliasing-versioning.md#statemachinerev)狀態機器，而不是別名中指定的版本來啟動執行。

1. 

**更新狀態機器定義並發佈新版本。**  
更新`myStateMachine`並發佈其新版本。若要這樣做，請使用 **update-state-machine**命令的選用`publish`參數：

   ```
   aws stepfunctions update-state-machine
       --state-machine-arn arn:aws:states:region:account-id:stateMachine:myStateMachine
       --definition $UPDATED_STATE_MACHINE_DEFINITION
       --publish
   ```

   回應`stateMachineVersionArn`會傳回新版本的 。例如 `arn:aws:states:region:account-id:stateMachine:myStateMachine:2`。

1. 

**更新別名以指向這兩個版本，並設定別名的[路由組態](concepts-state-machine-alias.md#alias-routing-config)。**  
使用 **update-state-machine-alias**命令來更新別名 的路由組態`PROD`。設定別名，使 80% 的執行流量進入第 1 版，其餘 20% 進入第 2 版：

   ```
   aws stepfunctions update-state-machine-alias --state-machine-alias-arn arn:aws:states:region:account-id:stateMachineAlias:myStateMachine:PROD --routing-configuration "[{\"stateMachineVersionArn\":\"arn:aws:states:region:account-id:stateMachine:myStateMachine:1\",\"weight\":80}, {\"stateMachineVersionArn\":\"arn:aws:states:region:account-id:stateMachine:myStateMachine:2\",\"weight\":20}]"
   ```

1. 

**將第 1 版取代為第 2 版。**  
驗證新的狀態機器版本是否正常運作後，您可以部署新的狀態機器版本。若要這樣做，請再次更新別名，將 100% 的執行流量指派給新版本。

   使用 **update-state-machine-alias**命令將第 2 版別名的路由組態`PROD`設定為 100%：

   ```
   aws stepfunctions update-state-machine-alias --state-machine-alias-arn arn:aws:states:region:account-id:stateMachineAlias:myStateMachine:PROD --routing-configuration "[{\"stateMachineVersionArn\":\"arn:aws:states:region:account-id:stateMachine:myStateMachine:2\",\"weight\":100}]"
   ```

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

```
aws stepfunctions update-state-machine-alias 
  --state-machine-alias-arn arn:aws:states:region:account-id:stateMachineAlias:myStateMachine:PROD 
  --routing-configuration "[{\"stateMachineVersionArn\":\"arn:aws:states:region:account-id:stateMachine:myStateMachine:1\",\"weight\":100}]"
```

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

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