集成服务的 IAM 策略 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

集成服务的 IAM 策略

当您在 Amazon Step Functions 控制台中创建状态机时,Step Functions 会根据状态机定义中使用的资源生成一个 Amazon Identity and Access Management (IAM) 策略,如下所示:

  • 如果您的状态机使用其中一个优化集成,它将为您的状态机创建一个包含必要权限和角色的策略。

  • 如果您的状态机使用其中一个 Amazon SDK 集成,则将创建一个具有部分权限的 IAM 角色。之后,您可以使用 IAM 控制台添加任何缺失的角色策略。

以下示例显示 Step Functions 如何根据您的状态机定义生成 IAM 策略。示例代码中的项目(例如 [[resourceName]])将替换为状态机定义中列出的静态资源。如果您有多个静态资源,则在 IAM 角色中每个资源都将有一个条目。

动态资源与静态资源

静态资源直接在状态机的任务状态中定义。在任务状态中包含要直接调用的资源信息时,Step Functions 只为这些资源创建 IAM 角色。

动态资源是传递到您的状态输入并使用路径访问的资源(请参阅路径)。如果要将动态资源传递给任务,Step Functions 将创建一个具有更高特权的策略,该策略指定 "Resource": "*"

使用“运行作业”模式执的任务附加权限

对于使用运行作业模式(以 .sync 结尾的模式),需要额外的权限来监视和接收来自所连接服务的 API 操作的响应。与使用“请求响应”或“等待回调”模式的任务相比,相关策略包含的权限更多。有关同步任务的信息,请参阅 服务集成模式

您需要为以下支持“运行作业”模式的服务集成提供额外权限:

当作业在连接的服务上运行时,Step Functions 使用两种方法来监控作业的状态,即轮询和事件。

轮询需要 DescribeGet API 操作的权限,例如 ecs:DescribeTasksglue:GetJobRun。如果您的角色中缺少这些权限,则 Step Functions 可能无法确定您的作业状态。这是因为某些 Run a Job (.sync) 服务集成不支持 EventBridge事件,而有些服务只会尽力发送事件。

从 Amazon 服务发送到亚马逊 EventBridge 的事件使用托管规则定向到 Step Functions,并且需要events:PutTargetsevents:PutRule、和的权限events:DescribeRule。如果您的角色中缺少这些权限,则在 Step Functions 得知您的任务已完成之前,可能会有一段延迟。有关 EventBridge 事件的更多信息,请参阅来自 Amazon 服务的事件

注意

对于同时支持轮询和事件的运行作业 (.sync) 任务,您的任务仍可使用事件正常完成。即使您的角色缺少轮询所需的权限,也可能发生这种情况。在这种情况下,您可能不会立即注意到轮询权限不正确或缺失。在极少数实例下,事件无法传送到 Step Functions 或由 Step Functions 处理,您的执行可能会卡住。要验证您的轮询权限配置是否正确,您可以通过以下方式在没有 EventBridge 事件的环境中运行执行:

  • 从中删除托管规则 EventBridge,该规则负责将事件转发到 Step Functions。该托管规则由账户中的所有状态机共享,因此应仅在测试或开发账户中执行此操作,避免对其他状态机造成任何意外影响。通过检查目标服务策略模板中用于 events:PutRuleResource 字段,可以确定要删除的特定托管规则。下次创建或更新使用该服务集成的状态机时,将重新创建托管规则。有关删除 EventBridge 规则的更多信息,请参阅禁用或删除规则

  • 使用 Step Functions Local 进行测试,它不支持使用事件来完成运行作业 (.sync) 任务。要使用 Step Functions Local,请假设状态机使用的 IAM 角色。您可能需要编辑信任关系。将 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN 环境变量设置为假定角色的值,然后使用 java -jar StepFunctionsLocal.jar 启动 Step Functions Local。最后,使用 Amazon CLI 带--endpoint-url参数的状态机创建状态机、开始执行并获取执行历史记录。有关更多信息,请参阅在本地测试状态机

如果使用运行作业 (.sync) 模式的任务停止,Step Functions 会尽力尝试取消该任务。这需要 CancelStopTerminateDelete API 操作的权限,例如 batch:TerminateJobeks:DeleteCluster。如果您的角色中缺少这些权限,Step Functions 将无法取消您的任务,而且当任务继续运行时,可能会产生额外的费用。有关停止任务的更多信息,请参阅运行作业

用于创建 IAM 角色的策略模板

以下主题包括您使用 Step Functions 为您创建新角色时所用的策略模板。

注意

查看这些模板,了解 Step Functions 是如何创建您的 IAM 策略的,并举例说明在使用其他 Amazon 服务时如何为 Step Functions 手动创建 IAM 策略。有关 Step Functions 服务集成的更多信息,请参阅与其他服务 Amazon Step Functions 一起使用