无法使用特定 aws 账户中的数据源获取可用区数据

Posted

技术标签:

【中文标题】无法使用特定 aws 账户中的数据源获取可用区数据【英文标题】:Unable to fetch avail zones data using data source in a specific aws account 【发布时间】:2022-01-04 06:05:01 【问题描述】:

当我尝试通过数据源为特定帐户中的任何区域查询可用区时,我收到“应用后已知”错误。但对于其他 aws 帐户也可以正常工作。以前和现在都可以正常工作它不工作

我的 data.tf 文件内容

data "aws_availability_zones" "available_subnet" 
  state = "available"

我的 provider.tf

provider "aws" 
    profile = "profile-dev"
    region = "eu-central-1"

如果我通过 terraform 控制台尝试以下操作,则会出现错误

> data.aws_availability_zones.available_subnet.names
(known after apply)
> 

但如果尝试使用不同的帐户进行相同操作,它会按预期工作,如下所示

> data.aws_availability_zones.available_subnet.names
tolist([
  "us-west-2a",
  "us-west-2b",
  "us-west-2c",
  "us-west-2d",
])

帐户权限或设置是否有任何问题(以前工作正常)。可以通过 aws cli 查询相同的问题

# aws ec2 describe-availability-zones --region=eu-central-1 --profile=profile-dev|grep -i zoneName
            "ZoneName": "eu-central-1a",
            "ZoneName": "eu-central-1b",
            "ZoneName": "eu-central-1c",

是地形问题吗?

【问题讨论】:

(known after apply) 不是错误,这意味着简单的 terraform plan 不会从 API 获取数据,您需要 terraform apply 才能获取这些值。跨度> 【参考方案1】:

我发现它不是 terraform 或 aws 的问题。似乎在运行 terraform apply 并从控制台运行它之后,它会带来输出。这就是我另一个能够获取区域的 aws 帐户上发生的事情。所以terraform 控制台只有在状态文件中才会带来数据源输出。

【讨论】:

以上是关于无法使用特定 aws 账户中的数据源获取可用区数据的主要内容,如果未能解决你的问题,请参考以下文章

无法在 AWS VPC 中不同可用区的子网之间路由

AWS的区域和可用区概念解释

AWS - ELB 可用区 + VPC 最佳实践?

40了解云计算平台的高可用架构,如 AWS 的多可用区GCP 的负载均衡器

AWS EC2多账户的Powershell脚本

如何使用 aws java sdk 在我的亚马逊账户下获取所有带有标签的实例