在 Step Function AWS 账户 s 中访问其他资源中的资源 - AWS Step Functions

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

在 Step Function AWS 账户 s 中访问其他资源中的资源

Step Functions 提供对工作流程 AWS 账户 中不同配置的资源的跨账户访问权限。使用 Step Functions 服务集成,您可以调用任何跨账户 AWS 资源,即使该资源 AWS 服务 不支持基于资源的策略或跨账户调用。

例如,假设您拥有两个 AWS 账户名为 “开发和测试” 的同一个项目 AWS 区域。使用跨账户存取,“开发”账户中的工作流可以访问“测试”账户中的资源,如 Amazon S3 存储桶、Amazon DynamoDB 表和 Lambda 函数。

重要

IAM角色和基于资源的策略仅在单个分区内为账户委派访问权限。例如,假定您在标准 aws 分区的美国西部(加利福尼亚北部)中有一个账户。您在 aws-cn 分区的中国(北京)中也有一个账户。您不能使用中国(北京)的账户中 Amazon S3 基于资源的策略,来允许标准 aws 账户中用户的访问权限。

有关跨账户访问的更多信息,请参阅IAM用户指南中的跨账户策略评估逻辑

尽管每个 AWS 账户 步骤都可以完全控制自己的资源,但使用 Step Functions,您无需自定义任何代码即可重新组织、交换、添加或删除工作流程中的步骤。即使流程发生变化或应用程序不断发展,您也可以这样做。

您还可以调用嵌套状态机的执行,这样它们就可以在不同的账户中使用。这样做可以有效分离和隔离您的工作流。当您在工作流中使用 .sync 服务集成模式访问不同账户中的另一个 Step Functions 工作流时,Step Functions 会使用轮询来消耗您分配的配额。有关更多信息,请参阅 运行作业 (.sync)

注意

目前,跨区域 AWS SDK集成和跨区域 AWS 资源访问在 Step Functions 中不可用。

本主题中的关键概念

执行角色

Step Functions 用来运行代码和访问 AWS 资源的IAM角色,例如 AWS Lambda 函数的 “调用” 操作。

服务集成

可以在工作流程的某个Task状态内调用的 AWS SDK集成API操作。

源账户

AWS 账户 拥有状态机并已开始执行的。

目标账户

您可以 AWS 账户 向其拨打跨账户的电话。

目标角色

状态机在目标账户中扮演的IAM角色,用于调用目标账户拥有的资源。

运行作业 (.sync)

一种用于调用服务的服务集成模式,例如 AWS Batch。它还能使 Step Functions 状态机在进入下一状态前等待作业完成。要指示 Step Functions 应该等待,请在 Task 状态定义的 Resource 字段中附加 .sync 后缀。

调用跨账户资源

要在工作流中调用跨账户资源,请执行以下操作:

  1. 在包含资源的目标账户中创建IAM角色。此角色向包含状态机的源账户授予访问目标账户资源的权限。

  2. Task状态的定义中,指定在调用跨账户资源之前由状态机担任的目标IAM角色。

  3. 修改目标IAM角色中的信任策略以允许源账户临时担任此角色。信任策略必须包含源账户中定义的状态机的 Amazon 资源名称 (ARN)。此外,还要在目标IAM角色中定义调用 AWS 资源的相应权限。

  4. 更新源账户的执行角色,使其包含担任目标IAM角色所需的权限。

有关示例,请参阅教程:在 Step Function AWS s 中访问跨账户资源

注意

您可以将状态机配置为IAM扮演访问多个资源的角色 AWS 账户。但是,状态机在给定时间只能IAM扮演一个角色。

访问跨账户资源的概念