You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform能否跨AWS账户获取其他账号内的资源数据?

Terraform 跨AWS账号查询data资源实现方案

完全可以实现该需求,核心思路是为目标账号单独配置专属的AWS Provider实例,绑定到需要跨账号查询的data资源上即可,具体操作步骤如下:

1. 声明目标账号的AWS Provider

你可以通过跨账号Assume Role的方式完成目标账号的身份认证(同组织下账号不需要单独配置访问密钥),声明带别名的Provider和当前环境的默认Provider做区分:

provider "aws" {
  alias  = "target_sns_account"
  region = "cn-north-1" # 替换为SNS Topic实际所在的区域

  # 配置跨账号角色 Assume 逻辑
  assume_role {
    # 替换为目标账号下提前创建的、允许当前部署账号访问的角色ARN
    role_arn = "arn:aws-cn:iam::目标账号ID:role/terraform-cross-account-read-role"
  }
}

注意:目标账号的上述角色需要提前完成两个配置:1. 信任策略中允许你当前运行Terraform的身份(用户/角色)执行AssumeRole操作;2. 角色权限策略中包含SNS Topic的查询权限,例如sns:GetTopicAttributes。

2. 修改data资源绑定目标账号Provider

在你原有的data资源配置中新增provider参数,绑定上一步声明的带别名的目标账号Provider即可:

data "aws_sns_topic" "topic_alarms_data" {
  provider = aws.target_sns_account
  name     = "topic_alarms"
}

后续使用说明

配置完成后,该data资源的查询请求会直接发往目标AWS账号,你可以正常通过data.aws_sns_topic.topic_alarms_data.arn等属性引用查询到的资源信息,和同账号下的data资源使用逻辑完全一致。

内容的提问来源于stack exchange,提问作者Thanatos-Delta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:48:01