Luk*_*ski 6 amazon-web-services terraform terraform-provider-aws
通过terraform 教程,我偶然发现了这个错误。
Error: Error launching source instance: InvalidAMIID.NotFound: The image id '[ami-830c94e3]' does not exist
status code: 400, request id: 4c3e0252-c3a5-471e-8b57-3f6e349628af
Run Code Online (Sandbox Code Playgroud)
这是我的代码。我所做的唯一变化是区域从us-west-2到eu-central-1
provider "aws" {
profile = "default"
region = "eu-central-1"
}
resource "aws_instance" "example" {
ami = "ami-830c94e3"
instance_type = "t2.micro"
}
Run Code Online (Sandbox Code Playgroud)
您应该考虑使用aws_ami数据源,而不是硬编码 AMI ID 。
这使您可以更轻松地指定所需的 AMI 类型并让 Terraform 自动使用该 AMI,包括在有与您的条件匹配的新 AMI 可用时让它自动更新正在使用的 AMI 的选项。它还可以更轻松地在不同区域使用相同的 AMI 进行管理,因为 AMI ID 对于复制到的每个区域都是不同的。
该aws_instance资源的文档具有使用最新的Ubuntu 20.04 AMI由Canonical在该地区发布的一个很好的例子:
data "aws_ami" "ubuntu" {
most_recent = true
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
owners = ["099720109477"] # Canonical
}
resource "aws_instance" "web" {
ami = data.aws_ami.ubuntu.id
instance_type = "t3.micro"
tags = {
Name = "HelloWorld"
}
}
Run Code Online (Sandbox Code Playgroud)
如果您在不同区域运行以下命令,它将自动为该区域使用正确的 Ubuntu 20.04 AMI。当 Canonical 发布更新的 Ubuntu 20.04 AMI 时,它还将使用最新的 AMI 重新创建实例。
这很简单。显然,AMI每个地区的亚马逊图片都是不同的。我不得不复制AMI我所在地区的图像。例如AMI-07dfba995513840b5是用于ID红帽企业Linux 8(HVM),SSD卷类型在EU-中央-1区。转到 AWS 控制台,从所有服务列表中单击 EC2,然后单击启动实例并找到AMI您感兴趣的图像。
| 归档时间: |
|
| 查看次数: |
3529 次 |
| 最近记录: |