Terraform: how to ignore "Error: Your query returned no results" for data source "aws_instances"

Terraform: how to ignore "Error: Your query returned no results" for data source "aws_instances"

我正在使用 Terraform 0.14.4 来维护不同的 AWS 账户。我有一个 .tf 文件和多个状态文件,每个帐户一个。

我使用数据源查找所有附加了特定标签的 EC2 实例:

data "aws_instances" "all_instances" {
  instance_tags = {
    Monitoring = "MONITOR"
  }

  instance_state_names = ["running", "pending", "stopped", "stopping"]
}

此数据源用于为某些实例生成一些 CloudWatch 指标。

除一个帐户外,我在所有帐户中都有带有该标签的实例。 运行 terraform plan 在该帐户上给我这个错误:

Error: Your query returned no results. Please change your search criteria and try again.
  on main.tf line 6, in data "aws_instances" "all_instances":
   6: data "aws_instances" "all_instances" {

我想忽略数据源在这个特定帐户中找不到任何实例,并继续使用我的脚本中维护的所有其他资源。

如何实现?

除了您在评论中提到的,另一种可能性是使用 External Data Source。因此,您可以实现自己的数据源,而不是使用 aws 提供商 (aws_instances) 提供的数据源。这样您就可以按照您想要的任何逻辑进行编程,包括处理丢失的资源。