集成服务的 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) 策略,将根据您的状态机定义中使用的资源。

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

动态资源与静态资源

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

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

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

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

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

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

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

注意

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

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

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

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

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

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

注意

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