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

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

针对集成服务的 IAM 策略

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

  • 如果状态机使用其中一个优化集成,它将创建一个具有状态机所需权限和角色的策略。

  • 如果你的状态机使用AmazonSDK 集成,将创建具有部分权限的 IAM 角色。随后,您可以使用 IAM 控制台添加任何缺少的角色策略。

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

动态资源与静态资源

静态资源直接在状态机的任务状态中定义。当您在任务状态中包含有关您直接调用的 API 操作的信息时,Step Functions 仅为这些资源创建 IAM 角色。

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

使用 “运行 Job 业” 模式执行任务的其他权限

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

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

轮询需要许可Describe要么GetAPI 操作,例如ecs:DescribeTasks要么glue:GetJobRun. 如果您的角色中缺少这些权限,则 Step Functions 可能无法确定作业的状态。这是因为一些运行 Job (.sync) 服务集成不支持 EventBridge 事件,而且有些服务仅在尽力的基础上发送事件。

发送的活动来源AmazonAmazon EventBridge 的服务将使用托管规则定向到 “Step Functions”,并且需要以下权限:events:PutTargetsevents:PutRule, 和events:DescribeRule. 如果您的角色中缺少这些权限,则在 Step Functions 意识到您的作业完成之前可能会有延迟。有关 EventBridge 事件的更多信息,请参阅。来自 的事件Amazon服务.

注意

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

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

  • 使用 Step Functions 本地进行测试,它不支持使用事件完成运行 Job (.sync) 任务。要使用 Step Functions Local,请承担状态机使用的 IAM 角色。你可能需要编辑信任关系。设置AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY, 和AWS_SESSION_TOKEN代入角色的值的环境变量,然后使用启动 Step Functions Localjava -jar StepFunctionsLocal.jar. 最后,使用Amazon CLI使用--endpoint-url参数以创建状态机、启动执行和获取执行历史记录。有关更多信息,请参阅 在本地测试 Step Functions 状态机

如果使用运行 Job (.sync) 模式的任务停止,Step Functions 将尽最大努力取消该任务。这需要许可才能CancelStopTerminate,或者DeleteAPI 操作,例如batch:TerminateJob要么eks:DeleteCluster. 如果您的角色中缺少这些权限,Step Functions 将无法取消您的任务,并且您可能会在任务继续运行期间产生额外费用。有关停止任务的更多信息,请参阅。运行作业.

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

以下主题包含在选择让 Step Functions 为您创建新角色时使用的策略模板。

注意

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