本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
集成服务的 IAM 政策
当您在Amazon Step Functions控制台中创建状态机时,Step Functions 会根据状态机定义中使用的资源生成Amazon Identity and Access Management (IAM) 策略,如下所示:
-
如果您的状态机使用其中一个优化的集成,它将为您的状态机创建一个具有必要权限和角色的策略。
-
如果您的状态机使用其中一个Amazon SDK 集成,则将创建具有部分权限的 IAM 角色。随后,您可以使用 IAM 控制台添加任何缺少的角色策略。
以下示例显示了 Step Functions 如何根据您的状态机定义生成 IAM 策略。示例代码中的项目(例如
)将替换为状态机定义中列出的静态资源。如果您有多个静态资源,则 IAM 角色中每个资源都有一个条目。[[resourceName]]
动态资源与静态资源
静态资源直接在状态机的任务状态中定义。当您在任务状态中包含有关直接调用的 API 操作的信息时,Step Functions 仅为这些资源创建 IAM 角色。
动态资源是传递到您的状态输入并使用路径访问的资源(请参阅路径)。如果您要将动态资源传递给任务,Step Functions 将创建一个更具权限的策略来指定:"Resource": "*"
。
使用 “运行Job” 模式执行任务的其他权限
对于使用 Run a Job 模式的任务(结尾为.sync
),需要额外的权限来监控和接收来自连接服务的 API 操作的响应。与使用 “请求响应” 或 “等待回调” 模式的任务相比,相关策略包含的权限还多。服务集成模式有关同步任务的信息,请参见。
Step Functions 使用两种方法来监视作业在连接的服务上运行时的状态,即轮询和事件。
轮询需要对Get
API 操作的Describe
权限,例如ecs:DescribeTasks
或glue:GetJobRun
。如果您的角色缺少这些权限,则 Step Functions 可能无法确定您的任务状态。这是因为某些 Run a Job (.sync) 服务集成不支持 EventBridge事件,有些服务仅在尽最大努力的基础上发送事件。
从Amazon服务发送到亚马逊 EventBridge 的事件使用托管规则定向到 Step Functions,并且需要events:PutTargets
events:PutRule
、和的权限events:DescribeRule
。如果您的角色缺少这些权限,则在 Step Functions 得知您的任务已完成之前,可能会有一段延迟。有关 EventBridge 事件的更多信息,请参阅Amazon服务中的事件。
对于同时支持轮询和事件的运行Job (.sync) 任务,使用事件仍可正常完成任务。即使您的角色缺少投票所需的权限,也可能发生这种情况。在这种情况下,你可能不会立即注意到轮询权限不正确或缺失。在极少数情况下,事件无法传送到 Step Functions 或无法由 Step Functions 处理,您的执行可能会停滞。要验证您的轮询权限配置是否正确,您可以通过以下方式在没有 EventBridge 事件的环境中运行执行:
-
从 EventBridge中删除负责将事件转发到 Step Functions 的托管规则。此托管规则由您账户中的所有状态机共享,因此您应仅在测试或开发账户中执行此操作,以避免对其他状态机造成任何意外影响。您可以通过检查目标服务的策略模板
events:PutRule
中使用的Resource
字段来确定要删除的特定托管规则。下次创建或更新使用该服务集成的状态机时,将重新创建托管规则。有关删除 EventBridge 规则的更多信息,请参阅禁用或删除规则。 -
使用 Step Functions Local 进行测试,它不支持使用事件来完成 “运行Job” (.sync) 任务。要使用 Step Functions Local,请假设您的状态机使用了 IAM 角色。您可能需要编辑信任关系。将
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
、和AWS_SESSION_TOKEN
环境变量设置为假定角色的值,然后使用启动 Step Functions Localjava -jar StepFunctionsLocal.jar。最后,使用Amazon CLI带--endpoint-url参数的来创建状态机、开始执行并获取执行历史记录。有关更多信息,请参阅在本地测试Step Functions 状态机:
如果使用 “运行Job (.sync)” 模式的任务停止,Step Functions 将尽最大努力取消该任务。这需要对Cancel
、Stop
Terminate
、或Delete
API 操作的权限,例如batch:TerminateJob
或eks:DeleteCluster
。如果您的角色缺少这些权限,Step Functions 将无法取消您的任务,并且您可能会在任务继续运行期间产生额外费用。有关停止任务的更多信息,请参阅运行Job。
用于创建 IAM 角色的策略模板
以下主题包括选择让 Step Functions 为您创建新角色时使用的策略模板。
查看这些模板以了解 Step Functions 如何创建您的 IAM 策略,并举例说明在使用其他Amazon服务时如何为 Step Functions 手动创建 IAM 策略。有关 Steep Functions 服务集成的更多信息,请参阅将 Amazon Step Functions 与其他服务一起使用。
主题