【问题标题】:Terraform error "Your query returned no results"Terraform 错误“您的查询未返回任何结果”
【发布时间】:2020-02-19 04:31:53
【问题描述】:

我有以下 bom-asg.tf 文件。

data "aws_ami" "bom-ami" {
most_recent = true

  filter {
    name   = "tag:ami_name"
    values = ["${var.environment}-bom-ami"]
  }

  owners = ["****"]
}

resource "aws_security_group" "bom-sg" {
  name_prefix = "${var.environment}-bom-asg-sg"
  vpc_id      = "${var.vpc_id}"
  .....

我无法成功执行刷新和计划命令。我遇到了以下错误。

terraform plan --var-file=environment-parity.tfvars -target=bom-asg.tf --out apply.out
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.


------------------------------------------------------------------------

No changes. Infrastructure is up-to-date.

This means that Terraform did not detect any differences between your
configuration and real physical resources that exist. As a result, no
actions need to be performed.

但是当我运行刷新时。我遇到了错误。

terraform refresh --var-file=environment-parity.tfvars
data.template_file.es_access_policy_search: Refreshing state...
data.aws_ami.nginx-ami: Refreshing state...
data.aws_ami.php-search-ami: Refreshing state...
data.aws_ami.ng-ami: Refreshing state...
data.aws_ami.mysql-ami: Refreshing state...
data.aws_ami.frontend-search-ami: Refreshing state...
data.aws_ami.bom-ami: Refreshing state...
data.aws_ami.lg-ami: Refreshing state...
data.aws_ami.rabbitmq-search-ami: Refreshing state...
data.aws_ami.ngas-ng-drupal-ami: Refreshing state...
data.aws_ami.mongodb-ami: Refreshing state...

Error: Error refreshing state: 1 error(s) occurred:

* data.aws_ami.bom-ami: 1 error(s) occurred:

* data.aws_ami.bom-ami: data.aws_ami.bom-ami: Your query returned no results. Please change your search criteria and try again.

你能帮忙吗?

【问题讨论】:

  • 您能否在您的 TF 脚本中使用相同的过滤器参数运行 aws ec2 describe-images (docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html)?请具体说明 region,因为地区差异可能无法找到 AMI 图像。通常我会得到“无结果”,因为过滤器字符串与特定区域中可用的 AMI 图像不匹配。
  • @mon 图像不可用,因为它尚未创建。我正在运行应用命令但得到同样的错误。我期待应用命令创建 AMI。我的理解错了吗?

标签: amazon-web-services terraform


【解决方案1】:

Terraform 数据源是访问现有资源,而不是创建资源。

data "aws_ami" "bom-ami"

如文档中所述,AMI 需要已经存在。

使用此数据源获取已注册 AMI 的 ID 以用于其他资源。

如果您要从 EC2 实例(例如 Amazon Linux EC2)拍摄的 EBS 快照创建 AMI,则:

请注意dataresource之间的区别。

要创建自定义 AMI 映像,还请考虑 Hashicorp packer

【讨论】:

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