2 min read | by Jordi Prats
Hard coding values is never a good idea, using the aws_ami datasource we can query AWS to fetch the latest AMI available, or any AMI really, as long as we properly set the filters so than just one AMI is selected.
To do so we just need to filter the images we want to retrieve using it's name, architecture... (or any other properly), it's owner and finally instruct terraform to get the most recent using the most_recent option, for example:
data "aws_ami" "amazon2" {
most_recent = true
filter {
name = "name"
values = ["amzn2-ami-*-hvm-*-arm64-gp2"]
}
filter {
name = "architecture"
values = ["arm64"]
}
owners = ["amazon"]
}
Using this code we are retrieving the most recent AMI that it's name matches amzn2-ami-*-hvm-*-arm64-gp2 using arm64 architecture that's owned by amazon
To get the full reference of available filters we can check the AWS CLI documentation about describe-images.
Posted on 06/04/2022