

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AWS 基础设施编辑器 与一起使用 AWS Step Functions
<a name="using-composer-services-sf"></a>

AWS 基础设施编辑器 具有与集成的功能[AWS Step FunctionsWorkflow Studio](https://docs.aws.amazon.com/step-functions/latest/dg/workflow-studio.html)。使用基础设施编排器执行以下操作：
+ Workflow Studio直接在基础设施编排器中启动 Step Functions。
+ 创建和管理新工作流程或将现有工作流导入基础架构编排器。
+ 使用基础设施编排器画布将您的工作流程与其他 AWS 资源集成。

下图是 Step Functions 状态机卡

![Step Functions 状态机卡。](http://docs.aws.amazon.com/zh_cn/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)
+ [基础架构 Composer Workflow Studio 中的 Step Functions 入门](#using-composer-services-sf-gs)
+ [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 策略。

## 基础架构 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 状态机**增强型组件卡片拖到画布上。  
![Step Functions 状态机卡。](http://docs.aws.amazon.com/zh_cn/infrastructure-composer/latest/dg/images/aac_use_sf_02.png)

   当你将 **Step Functions 状态机**卡拖到画布上时，Infrastructure Composer 会创建以下内容：
   + 定义状态机的`[ AWS::Serverless::StateMachine](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-statemachine.html)`资源。默认情况下，基础架构编排器创建标准工作流程。要创建快速工作流程，请将模板中的`Type`值从更改`STANDARD`为`EXPRESS`。
   + 一种为状态机定义 Amazon CloudWatch 日志组的`[AWS::Logs::LogGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html)`资源。

1. 打开卡片的**资源属性**面板，然后选择在 Workfl **ow Studio 中编辑**，在基础架构编辑器Workflow Studio中打开。

   Step Fun Workflow Studio ctions 将在**设计**模式下打开。要了解更多信息，请参阅《*AWS Step Functions 开发者指南*》中的[设计模式](https://docs.aws.amazon.com/step-functions/latest/dg/workflow-studio-components.html#wfs-interface-design-mode)。
**注意**  
您可以修改基础架构编排器以将状态机定义保存在外部文件中。要了解更多信息，请参阅[处理外部文件](#using-composer-services-sf-use-external)。

1. 创建您的工作流程并选择 “**保存**”。要退出Workflow Studio，请选择**返回到基础架构编排器**。

   基础架构编排器使用`AWS::Serverless::StateMachine`资源的`Defintion`属性定义您的工作流程。

1. 您可以通过执行以下任一操作来修改工作流程：
   + Workflow Studio再次打开并修改您的工作流程。
   + 对于控制台中的 Infrastructure Composer，您可以打开应用程序的**模板**视图并修改您的模板。如果使用**本地同步**，则可以在本地 IDE 中修改工作流程。基础设施编排器将在基础设施编排器中检测您的更改并更新您的工作流程。
   + 对于 VS Code Toolkit for VS Code 中的基础设施编排器，您可以直接修改您的模板。基础设施编排器将在基础设施编排器中检测您的更改并更新您的工作流程。

### 导入现有工作流程
<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)`— 该工作流程是使用[亚马逊州语言](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html)在外部文件上定义的。然后使用此属性指定文件的本地路径。

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

**控制台中的基础架构编译器**  
对于使用该`Definition`属性定义的工作流程，您可以导入单个模板或整个项目。  
+ **模板**-有关导入模板的说明，请参阅[在基础设施编排控制台中导入现有项目模板](using-composer-project-import-template.md)。要保存您在基础设施编排器中所做的更改，必须导出您的模板。
+ **项目**-导入项目时，必须激活**本地同步**。您所做的更改会自动保存到本地计算机中。有关导入项目的说明，请参阅[在基础设施编排控制台中导入现有项目文件夹](using-composer-project-import-folder.md)。

**来自 VS Code 的 Toolkit 中的基础设施编译器**  
对于使用该`Definition`属性定义的工作流，您可以从模板中打开 “基础设施编排”。有关说明，请参阅[从访问基础架构编排器 AWS Toolkit for Visual Studio Code](setting-up-composer-access-ide.md)。

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

**控制台中的基础架构编译器**  
对于使用该`DefinitionUri`属性定义的工作流程，必须导入项目并激活**本地同步**。有关导入项目的说明，请参阅[在基础设施编排控制台中导入现有项目文件夹](using-composer-project-import-folder.md)。

**来自 VS Code 的 Toolkit 中的基础设施编译器**  
对于使用该`DefinitionUri`属性定义的工作流，您可以从模板中打开 “基础设施编排”。有关说明，请参阅[从访问基础架构编排器 AWS Toolkit for Visual Studio Code](setting-up-composer-access-ide.md)。

## 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，请为每个任务指定一个定义替换。然后，您可以将任务连接到基础设施编排器画布上的资源。

**要在中指定定义替换 Workflow Studio**

1. 打开任务的 “**配置**” 选项卡，找到 “**API 参数**” 字段。  
![中任务的 “配置” 选项卡Workflow Studio。](http://docs.aws.amazon.com/zh_cn/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_cn/infrastructure-composer/latest/dg/images/aac_use_sf_06.png)

1. 选择**保存**并**返回到基础架构编排器**。

工作流程中的任务将在 Ste **p Functions 状态机**卡上可视化。

![一张 Step Functions 状态机卡，任务可视化。](http://docs.aws.amazon.com/zh_cn/infrastructure-composer/latest/dg/images/aac_use_sf_03.png)


### Connect 将资源连接到工作流程任务
<a name="using-composer-services-sf-use-connect"></a>

你可以在基础架构编排器中创建支持的工作流任务和支持的基础设施编排卡片之间的连接。
+ **支持的工作流任务**-针对 Step F AWS 服务 unctions 进行了优化的任务。要了解更多信息，请参阅《*AWS Step Functions 开发者指南》*中的 [Step Functions 优化集成](https://docs.aws.amazon.com/step-functions/latest/dg/connect-supported-services.html)。
+ **支持的基础设施合成器卡**-支持增强型组件卡。要了解有关基础设施编排器中卡片的更多信息，请参阅[在基础设施编排器中配置和修改卡片](using-composer-cards.md)。

创建连接时，任务和卡片 AWS 服务 的必须匹配。**例如，您可以将调用 Lambda 函数的工作流程任务连接到 Lambda 函数增强型组件卡。**

要创建连接，请单击任务的端口并将其拖动到增强组件卡的左侧端口。

![Step Functions 状态机卡，其任务连接到 Lambda 函数资源卡。](http://docs.aws.amazon.com/zh_cn/infrastructure-composer/latest/dg/images/aac_use_sf_04.png)


基础架构 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 配合使用 AWS 管理控制台，必须激活**本地同步**。有关更多信息，请参阅 [在基础设施编排控制台中本地同步并保存您的项目](using-composer-project-local-sync.md)。

**将状态机定义保存在外部文件上**

1. 打开 Ste **p Functions 状态机**卡的**资源属性**面板。

1. 选择 “**使用外部文件定义状态机**” 选项。

1. 为您的状态机定义文件提供相对路径和名称。

1. 选择**保存**。

基础架构编排器将执行以下操作：

1. 将状态机定义从`Definition`字段移至外部文件。

1. 使用 Amazon States 语言将状态机定义保存在外部文件中。

1. 使用`DefinitionUri`字段修改模板以引用外部文件。

## 了解详情
<a name="using-composer-services-sf-learn"></a>

要了解有关基础架构编排器中的 Step Functions 的更多信息，请参阅以下内容：
+ [Workflow Studio在《*AWS Step Functions 开发人员指南》*的《基础设施编排器》中使用](https://docs.aws.amazon.com/step-functions/latest/dg/use-wfs-in-app-composer.html)。
+ [DefinitionSubstitutions 在《*AWS Step Functions 开发人员指南》*的 AWS SAM 模板](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-sam-sfn.html#sam-definition-substitution-eg)中。