

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

# 在 Step Functions 中使用工作流程工作室设置执行角色
<a name="manage-state-machine-permissions"></a>

可以使用工作流程工作室设置工作流程的执行角色。每台 Step Functions 状态机都需要一个 Amazon Identity and Access Management（IAM）角色，来向状态机授予对 Amazon Web Services 服务和资源执行操作或调用 HTTPS API 的权限。此角色称为*执行角色*。

对于每个操作，此执行角色都必须包含 IAM 策略，例如，可让状态机调用 Amazon Lambda 函数、运行 Amazon Batch 任务或调用 Stripe API 的策略。在以下情况下，Step Functions 要求您提供执行角色：
+ 您在控制台、Amazon SDK 或 Amazon CLI 中使用 [CreateStateMachine](https://docs.amazonaws.cn/step-functions/latest/apireference/API_CreateStateMachine.html) API 创建状态机。
+ 您在控制台、Amazon SDK 或 Amazon CLI 中使用 [TestState](https://docs.amazonaws.cn/step-functions/latest/apireference/API_TestState.html) API [测试](test-state-isolation.md)状态。

**Topics**
+ [关于自动生成的角色](#wfs-auto-gen-roles)
+ [自动生成角色](#auto-generating-roles)
+ [解决角色生成问题](#resolve-role-gen-problem)
+ [在 Workflow Studio 中测试 HTTP 任务的角色](#test-state-role-http)
+ [在 Workflow Studio 中测试优化的服务集成的角色](#test-state-role-optimized)
+ [在 Workflow Studio 中测试 Amazon SDK 服务集成的角色](#test-state-role-aws-sdk)
+ [在 Workflow Studio 中测试流状态的角色](#test-state-role-flow)

## 关于自动生成的角色
<a name="wfs-auto-gen-roles"></a>

当您在 Step Functions 控制台中创建状态机时，[Workflow Studio](workflow-studio.md) 可以自动为您创建一个包含必需 IAM 策略的执行角色。Workflow Studio 会分析您的状态机定义，并生成具有执行工作流所需的最低权限的策略。

Workflow Studio 可以为以下各项生成 IAM 策略：
+ 调用 HTTPS API 的 [HTTP 任务](call-https-apis.md)。
+ 使用[优化的集成](integrate-optimized.md)（例如 [Lambda Invoke](connect-lambda.md)、[DynamoDB GetItem](connect-batch.md) 或 [Amazon Glue StartJobRun](connect-glue.md)）调用其他 Amazon Web Services 服务的 Task 状态。
+ 运行[嵌套工作流](connect-stepfunctions.md)的 Task 状态。
+ [分布式 Map 状态](state-map-distributed.md)，包括用于启动子工作流执行、列出 Amazon S3 桶以及读取或写入 S3 对象的[策略](iam-policies-eg-dist-map.md)。
+ [X-Ray](concepts-xray-tracing.md) 跟踪。在 Workflow Studio 中自动生成的每个角色都包含一个[策略](concepts-xray-tracing.md#xray-iam)，该策略向状态机授予向 X-Ray 发送跟踪的权限。
+ [在 Step Functions 中使用 CloudWatch 日志记录执行历史记录](cw-logs.md)（当在状态机上启用日志记录时）。

Workflow Studio 无法为使用 [Amazon SDK 集成](supported-services-awssdk.md)调用其他 Amazon Web Services 服务的 Task 状态生成 IAM 策略。

## 自动生成角色
<a name="auto-generating-roles"></a>

1. 打开 [Step Functions 控制台](https://console.amazonaws.cn/states/home)，从菜单中选择**状态机**，然后选择**创建状态机**。

   您也可以更新现有状态机。如果您要更新状态机，请参阅步骤 4。

1. 选择**从空白创建**。

1. 为状态机命名，然后选择**继续**，在 Workflow Studio 中编辑状态机。

1. 选择**配置**选项卡。

1. 向下滚动到**权限**部分，然后执行以下操作：

   1. 对于**执行角色**，请确保保留默认选择**创建新角色**。

      Workflow Studio 会自动为状态机定义中的每个有效状态生成所有必需的 IAM 策略。它会显示一条横幅，指明**将创建具有完全权限的执行角色**。  
![\[“配置”选项卡的说明性屏幕截图，其中包含自动生成的权限的预览。\]](http://docs.amazonaws.cn/step-functions/latest/dg/images/wfs-full-permissions-role.png)
**提示**  
要查看 Workflow Studio 为状态机自动生成的权限，请选择**查看自动生成的权限**。
**注意**  
如果您删除了 Step Functions 创建的 IAM 角色，Step Functions 在以后无法重新创建该角色。同样，如果您修改了该角色（例如，通过在 IAM 策略中从主体中删除 Step Functions），Step Functions 在以后也无法还原其原始设置。

      如果 Workflow Studio 无法生成所有必需的 IAM 策略，则会显示一条横幅，指明**无法为某些操作自动生成权限。将创建仅具有部分权限的 IAM 角色**。有关如何添加缺失权限的信息，请参阅[解决角色生成问题](#resolve-role-gen-problem)。

   1. 如果要创建状态机，请选择**创建**。否则，请选择**保存**。

   1. 在出现的对话框中，选择**确认**。

      Workflow Studio 会保存您的状态机并创建新的执行角色。

## 解决角色生成问题
<a name="resolve-role-gen-problem"></a>

在以下情况下，Workflow Studio 无法自动生成具有所有必需权限的执行角色：
+ 状态机中出现错误。请务必在 Workflow Studio 中解决所有验证错误。另外，请务必解决在保存过程中遇到的任何服务器端错误。
+ 您的状态机包含使用 Amazon SDK 集成的任务。在这种情况下，Workflow Studio 无法[自动生成](#auto-generating-roles) IAM 策略。Workflow Studio 会显示一条横幅，指明**无法为某些操作自动生成权限。将创建仅具有部分权限的 IAM 角色**。在**查看自动生成的权限**表中，选择**状态**中的内容，以了解有关您的执行角色缺少的策略的更多信息。Workflow Studio 仍然可以生成执行角色，但该角色不会包含所有操作的 IAM 策略。请参阅**文档链接**下的链接，编写您自己的策略，并在角色生成后将其添加到角色中。即使在保存状态机之后，这些链接也仍然可用。

## 在 Workflow Studio 中测试 HTTP 任务的角色
<a name="test-state-role-http"></a>

需要一个执行角色来[测试](call-https-apis.md#http-task-test) HTTP Task 状态。如果您没有具有足够权限的角色，请使用以下选项之一创建角色：
+ **通过 Workflow Studio 自动生成一个角色（推荐）**- 这是安全的选项。关闭**测试状态**对话框并按照[自动生成角色](#auto-generating-roles)中的说明操作。这需要您先创建或更新状态机，然后返回 Workflow Studio 测试状态。
+ **使用具有管理员权限的角色**：如果您有权创建对 Amazon 中的所有服务和资源具有完全访问权限的角色，可以使用该角色来测试工作流中的任何状态类型。为此，您可以创建一个 Step Functions 服务角色，并在 IAM 控制台 [https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/) 中向其添加 [AdministratorAccess 策略](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_job-functions.html#jf_administrator)。

## 在 Workflow Studio 中测试优化的服务集成的角色
<a name="test-state-role-optimized"></a>

调用[经优化的服务集成](integrate-optimized.md)的 Task 状态需要执行角色。如果您没有具有足够权限的角色，请使用以下选项之一创建角色：
+ **通过 Workflow Studio 自动生成一个角色（推荐）**- 这是安全的选项。关闭**测试状态**对话框并按照[自动生成角色](#auto-generating-roles)中的说明操作。这需要您先创建或更新状态机，然后返回 Workflow Studio 测试状态。
+ **使用具有管理员权限的角色**：如果您有权创建对 Amazon 中的所有服务和资源具有完全访问权限的角色，可以使用该角色来测试工作流中的任何状态类型。为此，您可以创建一个 Step Functions 服务角色，并在 IAM 控制台 [https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/) 中向其添加 [AdministratorAccess 策略](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_job-functions.html#jf_administrator)。

## 在 Workflow Studio 中测试 Amazon SDK 服务集成的角色
<a name="test-state-role-aws-sdk"></a>

调用 [Amazon SDK 集成](supported-services-awssdk.md)的 Task 状态执行角色。如果您没有具有足够权限的角色，请使用以下选项之一创建角色：
+ **通过 Workflow Studio 自动生成一个角色（推荐）**- 这是安全的选项。关闭**测试状态**对话框并按照[自动生成角色](#auto-generating-roles)中的说明操作。这需要您先创建或更新状态机，然后返回 Workflow Studio 测试状态。执行以下操作：

  1. 关闭**测试状态**对话框

  1. 选择**配置**选项卡以查看配置模式。

  1. 向下滚动到**权限**部分。

  1. Workflow Studio 会显示一条横幅，指明**无法为某些操作自动生成权限。将创建仅具有部分权限的 IAM 角色**。选择**查看自动生成的权限**。

  1. **查看自动生成的权限**表会显示一行，列出与您要测试的 Task 状态相对应的操作。请参阅**文档链接**下的链接，将您自己的 IAM 策略编写到自定义角色中。
+ **使用具有管理员权限的角色**：如果您有权创建对 Amazon 中的所有服务和资源具有完全访问权限的角色，可以使用该角色来测试工作流中的任何状态类型。为此，您可以创建一个 Step Functions 服务角色，并在 IAM 控制台 [https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/) 中向其添加 [AdministratorAccess 策略](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_job-functions.html#jf_administrator)。

## 在 Workflow Studio 中测试流状态的角色
<a name="test-state-role-flow"></a>

您需要一个执行角色，以在 Workflow Studio 中测试流状态。流状态是指定向执行流的状态，例如 [Choice 工作流程状态](state-choice.md)、[Parallel 工作流程状态](state-parallel.md)、[Map 状态工作流程。](state-map.md)、[Pass 工作流程状态](state-pass.md)、[Wait 工作流程状态](state-wait.md)、[Succeed 工作流程状态](state-succeed.md) 或 [Fail 工作流程状态](state-fail.md)。[TestState](https://docs.amazonaws.cn/step-functions/latest/apireference/API_TestState.html) API 不适用于 Map 或 Parallel 状态。您可以使用以下选项之一创建用于测试流状态的角色：
+ **使用 Amazon Web Services 账户中的任何角色（推荐）**：流状态不需要任何特定的 IAM 策略，因为它们不调用 Amazon 操作或资源。因此，您可以使用 Amazon Web Services 账户中的任何 IAM 角色。

  1. 在**测试状态**对话框中，从**执行角色**下拉列表中选择任意角色。

  1. 如果下拉列表中没有显示任何角色，请执行以下操作：

     1. 在 IAM 控制台 [https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/) 中，选择**角色**。

     1. 从列表中选择一个角色，然后从角色详细信息页面复制其 ARN。您需要在**测试状态**对话框中提供此 ARN。

     1. 在**测试状态**对话框中，从**执行角色**下拉列表中选择**输入角色 ARN**。

     1. 将 ARN 粘贴到**角色 ARN** 中。
+ **使用具有管理员权限的角色**：如果您有权创建对 Amazon 中的所有服务和资源具有完全访问权限的角色，可以使用该角色来测试工作流中的任何状态类型。为此，您可以创建一个 Step Functions 服务角色，并在 IAM 控制台 [https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/) 中向其添加 [AdministratorAccess 策略](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_job-functions.html#jf_administrator)。