

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

# AWS Infrastructure Composer 搭配 使用 AWS Step Functions
<a name="using-composer-services-sf"></a>

AWS Infrastructure Composer 具有與 整合的功能[AWS Step Functions Workflow Studio](https://docs.aws.amazon.com/step-functions/latest/dg/workflow-studio.html)。使用 Infrastructure Composer 執行下列動作：
+ Workflow Studio 直接在 Infrastructure Composer 中啟動 Step Functions。
+ 建立和管理新的工作流程，或將現有的工作流程匯入 Infrastructure Composer。
+ 使用 Infrastructure Composer 畫布將您的工作流程與其他 AWS 資源整合。

下圖是 Step Functions 狀態機器卡

![\[Step Functions 狀態機器卡。\]](http://docs.aws.amazon.com/zh_tw/infrastructure-composer/latest/dg/images/aac_use_sf_01.png)


使用 Infrastructure Composer Workflow Studio中的 Step Functions，您可以在單一位置使用兩個強大的視覺化設計工具的優點。當您設計工作流程和應用程式時， Infrastructure Composer 會建立基礎設施做為程式碼 (IaC)，以引導您進行部署。

**Topics**
+ [IAM 政策](#using-composer-services-sf-use-iam)
+ [Infrastructure Composer Workflow Studio中的 Step Functions 入門](#using-composer-services-sf-gs)
+ [在 Infrastructure Composer Workflow Studio中使用 Step Functions](#using-composer-services-sf-use)
+ [進一步了解](#using-composer-services-sf-learn)

## IAM 政策
<a name="using-composer-services-sf-use-iam"></a>

當您將任務從工作流程連線至 資源時， Infrastructure Composer 會自動建立所需的 AWS Identity and Access Management (IAM) 政策，以授權資源之間的互動。以下是範例：

```
Transform: AWS::Serverless-2016-10-31
Resources:
  StockTradingStateMachine:
    Type: AWS::Serverless::StateMachine
    Properties:
      ...
      Policies:
        - LambdaInvokePolicy:
            FunctionName: !Ref CheckStockValue
      ...
  CheckStockValue:
    Type: AWS::Serverless::Function
    ...
```

如有必要，您可以將更多 IAM 政策新增至範本。

## Infrastructure Composer Workflow Studio中的 Step Functions 入門
<a name="using-composer-services-sf-gs"></a>

若要開始使用，您可以建立新的工作流程或匯入現有的工作流程。

### 建立新的工作流程
<a name="using-composer-services-sf-gs-create"></a>

1. 從**資源**面板中，將 **Step Functions State Machine** 增強型元件卡拖曳到畫布上。  
![\[Step Functions 狀態機器卡。\]](http://docs.aws.amazon.com/zh_tw/infrastructure-composer/latest/dg/images/aac_use_sf_02.png)

   當您將 **Step Functions State 機器**卡拖曳至畫布時， Infrastructure Composer 會建立下列項目：
   + 定義狀態機器`[ AWS::Serverless::StateMachine](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-statemachine.html)`的資源。根據預設， Infrastructure Composer 會建立標準工作流程。若要建立快速工作流程，請將範本中的`Type`值從 變更為 `STANDARD` `EXPRESS`。
   + 為您的狀態機器定義 Amazon CloudWatch 日誌群組`[AWS::Logs::LogGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html)`的資源。

1. 開啟卡片**的資源屬性**面板，然後選取 **Workflow Studio 中的編輯**，以在 Infrastructure Composer Workflow Studio中開啟。

   Step Functions 會在**設計**模式中Workflow Studio開啟。若要進一步了解，請參閱《 *AWS Step Functions 開發人員指南*》中的[設計模式](https://docs.aws.amazon.com/step-functions/latest/dg/workflow-studio-components.html#wfs-interface-design-mode)。
**注意**  
您可以修改 Infrastructure Composer，將狀態機器定義儲存在外部檔案中。如需詳細資訊，請參閱 [使用外部檔案](#using-composer-services-sf-use-external)。

1. 建立您的工作流程，然後選擇**儲存**。若要結束 Workflow Studio，請選擇**返回基礎設施編寫器**。

   Infrastructure Composer 會使用 `AWS::Serverless::StateMachine` 資源的 `Defintion` 屬性來定義您的工作流程。

1. 您可以執行下列任何動作來修改工作流程：
   + Workflow Studio 再次開啟 並修改您的工作流程。
   + 對於從主控台的 Infrastructure Composer，您可以開啟應用程式的**範本**檢視，並修改您的範本。如果使用**本機同步**，您可以在本機 IDE 中修改工作流程。Infrastructure Composer 會偵測您的變更，並在 Infrastructure Composer 中更新您的工作流程。
   + 對於 Toolkit for VS Code 中的 Infrastructure Composer，您可以直接修改範本。Infrastructure Composer 會偵測您的變更，並在 Infrastructure Composer 中更新您的工作流程。

### 匯入現有的工作流程
<a name="using-composer-services-sf-gs-import"></a>

您可以從使用 AWS Serverless Application Model (AWS SAM) 範本定義的應用程式匯入工作流程。使用任何以 `AWS::Serverless::StateMachine` 資源類型定義的狀態機器，它將視覺化為 **Step Functions 狀態機器**增強型元件卡，您可以用來啟動 Workflow Studio。

`AWS::Serverless::StateMachine` 資源可以使用下列任一屬性定義工作流程：
+ `[ Definition](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-statemachine.html#sam-statemachine-definition)` – 工作流程在 AWS SAM 範本中定義為 物件。
+ `[ DefinitionUri](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-statemachine.html#sam-statemachine-definitionuri)` – 使用 [Amazon States Language](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html) 在外部檔案上定義工作流程。然後使用此屬性指定檔案的本機路徑。

#### 定義屬性
<a name="using-composer-services-sf-gs-import-definition"></a>

**主控台中的 Infrastructure Composer**  
對於使用 `Definition` 屬性定義的工作流程，您可以匯入單一範本或整個專案。  
+ **範本** – 如需匯入範本的指示，請參閱 [在 Infrastructure Composer 主控台中匯入現有的專案範本](using-composer-project-import-template.md)。若要儲存您在 Infrastructure Composer 中所做的變更，您必須匯出範本。
+ **專案** – 當您匯入專案時，您必須啟用**本機同步**。您所做的變更會自動儲存至本機電腦。如需匯入專案的指示，請參閱 [在 Infrastructure Composer 主控台中匯入現有的專案資料夾](using-composer-project-import-folder.md)。

**來自 Toolkit for VS Code 的 Infrastructure Composer**  
對於使用 `Definition` 屬性定義的工作流程，您可以從範本開啟 Infrastructure Composer。如需說明，請參閱[從 存取 Infrastructure Composer AWS Toolkit for Visual Studio Code](setting-up-composer-access-ide.md)。

#### DefinitionUri 屬性
<a name="using-composer-services-sf-gs-import-definitionuri"></a>

**主控台中的 Infrastructure Composer**  
對於使用 `DefinitionUri` 屬性定義的工作流程，您必須匯入專案並啟用**本機同步**。如需匯入專案的指示，請參閱 [在 Infrastructure Composer 主控台中匯入現有的專案資料夾](using-composer-project-import-folder.md)。

**來自 Toolkit for VS Code 的 Infrastructure Composer**  
對於使用 `DefinitionUri` 屬性定義的工作流程，您可以從範本開啟 Infrastructure Composer。如需說明，請參閱[從 存取 Infrastructure Composer AWS Toolkit for Visual Studio Code](setting-up-composer-access-ide.md)。

## 在 Infrastructure Composer Workflow Studio中使用 Step Functions
<a name="using-composer-services-sf-use"></a>

### 建置工作流程
<a name="using-composer-services-sf-use-build"></a>

Infrastructure Composer 使用定義替換，將工作流程任務映射到應用程式中的資源。若要進一步了解定義替換，請參閱《 *AWS Serverless Application Model 開發人員指南*`[ DefinitionSubstitutions](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-statemachine.html#sam-statemachine-definitionsubstitutions)`》中的 。

當您在 中建立任務時Workflow Studio，請為每個任務指定定義替換。然後，您可以將任務連接到 Infrastructure Composer 畫布上的資源。

**在 中指定定義替換 Workflow Studio**

1. 開啟任務的**組態**索引標籤，並找到 **API 參數**欄位。  
![\[中任務的組態索引標籤Workflow Studio。\]](http://docs.aws.amazon.com/zh_tw/infrastructure-composer/latest/dg/images/aac_use_sf_05.png)

1. 如果 **API 參數**欄位有下拉式選項，請選擇**輸入 CloudFormation 替代**。然後，提供唯一的名稱。

   對於連接到相同資源的任務，請為每個任務指定相同的定義替換。若要使用現有的定義替換，請選擇**選取 CloudFormation 替換**，然後選取要使用的替換。

1. 如果 **API 參數**欄位包含 JSON 物件，請修改指定資源名稱的項目，以使用定義替換。在下列範例中，我們將 `"MyDynamoDBTable"`變更為 `"${RecordTransaction}"`。  
![\[中任務的組態索引標籤Workflow Studio。\]](http://docs.aws.amazon.com/zh_tw/infrastructure-composer/latest/dg/images/aac_use_sf_06.png)

1. 選取**儲存**並**返回基礎設施編寫器**。

工作流程中的任務會在 **Step Functions 狀態機器**卡上視覺化。

![\[Step Functions 狀態機器卡，可將任務視覺化。\]](http://docs.aws.amazon.com/zh_tw/infrastructure-composer/latest/dg/images/aac_use_sf_03.png)


### 將資源連接至工作流程任務
<a name="using-composer-services-sf-use-connect"></a>

您可以在 Infrastructure Composer 中，在支援的工作流程任務和支援的 Infrastructure Composer 卡之間建立連線。
+ **支援的工作流程任務** – AWS 服務 針對 Step Functions 最佳化的 任務。若要進一步了解，請參閱《 *AWS Step Functions 開發人員指南*》中的 [ Step Functions 的最佳化整合](https://docs.aws.amazon.com/step-functions/latest/dg/connect-supported-services.html)。
+ **支援的 Infrastructure Composer 卡** – 支援增強型元件卡。若要進一步了解 Infrastructure Composer 中的卡片，請參閱 [在 Infrastructure Composer 中設定和修改卡片](using-composer-cards.md)。

建立連線時，任務和卡片 AWS 服務 的 必須相符。例如，您可以將叫用 Lambda 函數的工作流程任務連接到 **Lambda 函數**增強型元件卡。

若要建立連線，請按一下任務的連接埠，並將其拖曳至增強型元件卡的左側連接埠。

![\[Step Functions 狀態機器卡，具有連接至 Lambda 函數資源卡的任務。\]](http://docs.aws.amazon.com/zh_tw/infrastructure-composer/latest/dg/images/aac_use_sf_04.png)


Infrastructure Composer 會自動更新您的`DefinitionSubstitution`值，以定義您的連線。以下是範例：

```
Transform: AWS::Serverless-2016-10-31
Resources:
  StateMachine:
    Type: AWS::Serverless::StateMachine
    Properties:
      Definition:
        StartAt: Check Stock Value
        States:
          Check Stock Value:
            Type: Task
            Resource: arn:aws:states:::lambda:invoke
            Parameters:
              Payload.$: $
              FunctionName: ${CheckStockValue}
            Next: Choice
          ...
      DefinitionSubstitutions:
        CheckStockValue: !GetAtt CheckStockValue.Arn
        ...
  CheckStockValue:
    Type: AWS::Serverless::Function
    Properties:
      ...
```

### 使用外部檔案
<a name="using-composer-services-sf-use-external"></a>

當您從 **Step Functions 狀態機器**卡建立工作流程時， Infrastructure Composer 會使用 `Definition` 屬性將狀態機器定義儲存在範本中。您可以設定 Infrastructure Composer，將狀態機器定義儲存至外部檔案。

**注意**  
若要從 搭配 Infrastructure Composer 使用此功能 AWS 管理主控台，您必須啟用**本機同步**。如需詳細資訊，請參閱[在 Infrastructure Composer 主控台中本機同步和儲存您的專案](using-composer-project-local-sync.md)。

**在外部檔案上儲存您的狀態機器定義**

1. 開啟 **Step Functions 狀態機器**卡**的資源屬性**面板。

1. 選取**使用外部檔案做為狀態機器定義**選項。

1. 為您的狀態機器定義檔案提供相對路徑和名稱。

1. 選擇**儲存**。

Infrastructure Composer 將執行下列動作：

1. 將您的狀態機器定義從 `Definition` 欄位移至外部檔案。

1. 使用 Amazon States Language 將狀態機器定義儲存在外部檔案中。

1. 使用 `DefinitionUri` 欄位修改您的範本以參考外部檔案。

## 進一步了解
<a name="using-composer-services-sf-learn"></a>

若要進一步了解 Infrastructure Composer 中的 Step Functions，請參閱以下內容：
+ 《 *AWS Step Functions 開發人員指南*》[Workflow Studio中的在 Infrastructure Composer](https://docs.aws.amazon.com/step-functions/latest/dg/use-wfs-in-app-composer.html) 中使用 。
+ 《 *AWS Step Functions 開發人員指南*[》中的 AWS SAM 範本中的 DefinitionSubstitutions](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-sam-sfn.html#sam-definition-substitution-eg)。