【问题标题】:Terraform: how to ignore "Error: Your query returned no results" for data source "aws_instances"Terraform:如何忽略数据源“aws_instances”的“错误:您的查询未返回结果”
【发布时间】:2022-01-02 12:49:08
【问题描述】:

我正在使用 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" {

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

我如何做到这一点?

【问题讨论】:

  • 您的所有帐户都必须有这样的实例。数据源不返回空结果。如果他们找不到匹配项,他们就会出错。你不能忽视这一点。
  • 嗯,我害怕这个答案。我想出了一个解决方法,使用数据源中的count 条件,查询一些有助于我识别帐户的变量。不是最好的解决方案,因为我将来可能会在该特定帐户中启动实例。不过,我必须更新脚本。

标签: terraform terraform-provider-aws


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    相关资源
    最近更新 更多