本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在工作流程中访问其他资源 Amazon Web Services 账户 中的资源
Step Functions 提供对工作流程 Amazon Web Services 账户 中不同配置的资源的跨账户访问权限。使用 Step Functions 服务集成,您可以调用任何跨账户 Amazon 资源,即使该资源 Amazon Web Service 不支持基于资源的策略或跨账户调用。
例如,假设您拥有两个 Amazon Web Services 账户名为 “开发和测试” 的同一个项目 Amazon Web Services 区域。使用跨账户存取,“开发”账户中的工作流可以访问“测试”账户中的资源,如 Amazon S3 存储桶、Amazon DynamoDB 表和 Lambda 函数。
重要
IAM 角色和基于资源的策略仅在单个分区内跨账户委派访问权限。例如,假定您在标准 aws
分区的美国西部(加利福尼亚北部)中有一个账户。您在 aws-cn
分区的中国(北京)中也有一个账户。您不能使用中国(北京)的账户中 Amazon S3 基于资源的策略,来允许标准 aws
账户中用户的访问权限。
有关跨账户存取的更多信息,请参阅《IAM 用户指南》中的跨账户策略评估逻辑。
尽管每个 Amazon Web Services 账户 步骤都可以完全控制自己的资源,但使用 Step Functions,您无需自定义任何代码即可重新组织、交换、添加或删除工作流程中的步骤。即使流程发生变化或应用程序不断发展,您也可以这样做。
您还可以调用嵌套状态机的执行,这样它们就可以在不同的账户中使用。这样做可以有效分离和隔离您的工作流。当您在工作流中使用 .sync 服务集成模式访问不同账户中的另一个 Step Functions 工作流时,Step Functions 会使用轮询来消耗您分配的配额。有关更多信息,请参阅 运行作业 (.sync)。
注意
目前,跨区域 Amazon SDK 集成和跨区域 Amazon 资源访问在 Step Functions 中不可用。
本主题中的关键概念
- 执行角色
-
Step Functions 用来运行代码和访问 Amazon 资源(例如 Amazon Lambda 函数的 “调用” 操作)的 IAM 角色。
- 服务集成
-
可以在工作流程的某个
Task
状态内调用的 Amazon SDK 集成 API 操作。 - 源账户
Amazon Web Services 账户 拥有状态机并已开始执行的。
- 目标账户
您可以 Amazon Web Services 账户 向其拨打跨账户的电话。
- 目标角色
目标账户中的 IAM 角色,状态机在调用目标账户所拥有的资源时会假定该角色。
- 运行作业 (.sync)
一种用于调用服务的服务集成模式,例如 Amazon Batch。它还能使 Step Functions 状态机在进入下一状态前等待作业完成。要指示 Step Functions 应该等待,请在
Task
状态定义的Resource
字段中附加.sync
后缀。
调用跨账户资源
要在工作流中调用跨账户资源,请执行以下操作:
在包含资源的目标账户中创建 IAM 角色。此角色向包含状态机的源账户授予访问目标账户资源的权限。
在
Task
状态的定义中,指定在调用跨账户资源之前由状态机担任的目标 IAM 角色。修改目标 IAM 角色中的信任策略来允许源账户临时担任此角色。信任策略必须包含源账户中定义的状态机的 Amazon 资源名称(ARN)。此外,还要在目标 IAM 角色中定义调用 Amazon 资源的相应权限。
更新源账户的执行角色,使其包含担任目标 IAM 角色所需的权限。
有关示例,请参阅教程:访问跨账户资源 Amazon。
注意
您可以配置状态机承担一个 IAM 角色,以便从多个 Amazon Web Services 账户访问资源。但是,状态机在给定时间只能承担一个 IAM 角色。
![访问跨账户资源的概念](images/cross-account-support-concept.png)