Amazon web services Ubuntu18.04的打包器生成器源代码\u ami\u过滤器?

Amazon web services Ubuntu18.04的打包器生成器源代码\u ami\u过滤器?,amazon-web-services,packer,Amazon Web Services,Packer,我在试封隔器 我能够创建一个ubuntu 16.04的图像 "source_ami_filter": { "filters": { "virtualization-type": "hvm", "name": "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*", "root-device-type": "ebs" }, 但是当它通过将

我在试封隔器

我能够创建一个ubuntu 16.04的图像

"source_ami_filter": {
          "filters": {
            "virtualization-type": "hvm",
            "name": "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*",
            "root-device-type": "ebs"
          },
但是当它通过将16.04修改为18.04来尝试相同的文件管理器时

"source_ami_filter": {
          "filters": {
            "virtualization-type": "hvm",
            "name": "ubuntu/images/*ubuntu-xenial-18.04-amd64-server-*",
            "root-device-type": "ebs"
          },
我得到下面的错误

==> amazon-ebs: Prevalidating any provided VPC information
==> amazon-ebs: Prevalidating AMI Name: packer-example 1592389575
==> amazon-ebs: No AMI was found matching filters: {
==> amazon-ebs:   Filters: [{
==> amazon-ebs:       Name: "virtualization-type",
==> amazon-ebs:       Values: ["hvm"]
==> amazon-ebs:     },{
==> amazon-ebs:       Name: "name",
==> amazon-ebs:       Values: ["ubuntu/images/*ubuntu-xenial-18.04-amd64-server-*"]
==> amazon-ebs:     },{
==> amazon-ebs:       Name: "root-device-type",
==> amazon-ebs:       Values: ["ebs"]
==> amazon-ebs:     }],
==> amazon-ebs:   Owners: ["099720109477"]
==> amazon-ebs: }
Build 'amazon-ebs' errored: No AMI was found matching filters: {
  Filters: [{
      Name: "virtualization-type",
      Values: ["hvm"]
    },{
      Name: "name",
      Values: ["ubuntu/images/*ubuntu-xenial-18.04-amd64-server-*"]
    },{
      Name: "root-device-type",
      Values: ["ebs"]
    }],
  Owners: ["099720109477"]
}

==> Some builds didn't complete successfully and had errors:
--> amazon-ebs: No AMI was found matching filters: {
  Filters: [{
      Name: "virtualization-type",
      Values: ["hvm"]
    },{
      Name: "name",
      Values: ["ubuntu/images/*ubuntu-xenial-18.04-amd64-server-*"]
    },{
      Name: "root-device-type",
      Values: ["ebs"]
    }],
  Owners: ["099720109477"]
}
想要了解筛选器值的工作方式:

  • 18.04

  • 是否要查看其他映像(linux/redhat)


  • 有人能澄清我对此的疑问吗?

    重要提示:您应该像我在这里的示例中所做的那样设置一个所有者属性,否则您将引入与您的模式相匹配的恶意AMI。名称字段由用户控制,未选中

    更新:由于这是关于封隔器而非地形的,因此封隔器解决方案如下:

    "source_ami_filter": {
      "filters": {
        "virtualization-type": "hvm",
        "architecture": "x86_64",
        "name": "ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-*",
        "block-device-mapping.volume-type": "gp2",
        "root-device-type": "ebs"
      },
      "owners": ["099720109477"],
      "most_recent": true
    },
    
    这是我的善意但离题的地形解决方案:

    "source_ami_filter": {
      "filters": {
        "virtualization-type": "hvm",
        "architecture": "x86_64",
        "name": "ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-*",
        "block-device-mapping.volume-type": "gp2",
        "root-device-type": "ebs"
      },
      "owners": ["099720109477"],
      "most_recent": true
    },
    
    或者,如果您想使用自己的KMS CMK对其进行加密:


    在2021年,我引用了我的。

    这里,我们正在使用Packer HCL2语言和Ubuntu20.04,并支持多种体系结构

    variable "arch" {
      type    = string
      default = "${env("ARCH")}"
    }
    
    source "amazon-ebs" "ubuntu" {
    
      source_ami_filter {
        filters = {
          name = "ubuntu/images/*ubuntu-focal-20.04-*-server-*"
          architecture = "${var.arch}"
          root-device-type = "ebs"
          virtualization-type = "hvm"
        }
    
        most_recent = true
        owners = ["099720109477"]
      }
    }
    

    18.04的代码名为
    bionic
    。16.04的代号为
    xenial
    。更新到
    ubuntu/images/*ubuntu-bionic-18.04-amd64-server-*
    应该可以解决这个问题。这是一个地形示例,不是打包机示例?这个问题不应该被标记为Terraform,因为它实际上是一个纯粹的包装问题。它可能也应该关闭,因为这只是Ubuntu发行版命名上的一个小错误。我添加了封隔器并保留了地形块。由于OP接受了答案,我不想删除原始答案。
    variable "arch" {
      type    = string
      default = "${env("ARCH")}"
    }
    
    source "amazon-ebs" "ubuntu" {
    
      source_ami_filter {
        filters = {
          name = "ubuntu/images/*ubuntu-focal-20.04-*-server-*"
          architecture = "${var.arch}"
          root-device-type = "ebs"
          virtualization-type = "hvm"
        }
    
        most_recent = true
        owners = ["099720109477"]
      }
    }