我正在尝试为使用 PROD AMI 的 TEST 环境创建 EC2 实例。一切都在正确创建,但我无法弄清楚如何将标签添加到与它一起创建的 EBS 卷?
这些标签适用于 EC2,但不适用于 EBS 或根卷。我也尝试在这些上添加标签映射,但这是无效的。有任何想法吗?
provider "aws" {
region = "us-east-1"
}
data "aws_ami" "existing_sft_ami" {
most_recent = true
filter {
name = "name"
values = [var.prod_name]
}
owners = [
var.aws_account_id]
}
data "aws_subnet" "subnet" {
id = var.aws_subnet_id
}
resource "aws_instance" "sftp" {
ami = data.aws_ami.existing_sft_ami.id
instance_type = "t2.micro"
availability_zone = var.availability_zone
subnet_id = data.aws_subnet.subnet.id
key_name = var.ssh_key_name
vpc_security_group_ids = [var.aws_security_group_id]
root_block_device {
delete_on_termination = true
}
ebs_block_device {
device_name = "/dev/sdb"
delete_on_termination = true
}
tags = {
Name = var.name
Owner = var.owner
Created = formatdate("DD MMM YYYY hh:mm ZZZ", timestamp())
Environment = "TEST"
}
}
最佳答案
您需要使用额外的 volume_tags
标记卷的参数。另外,为了让你的代码更干一点,你可以用 locals
来做到这一点。堵塞。
locals {
tags = {
Name = var.name
Owner = var.owner
Created = formatdate("DD MMM YYYY hh:mm ZZZ", timestamp())
Environment = var.environment
}
}
resource "aws_instance" "sftp" {
ami = data.aws_ami.existing_sft_ami.id
instance_type = "t2.micro"
availability_zone = var.availability_zone
subnet_id = data.aws_subnet.subnet.id
key_name = var.ssh_key_name
vpc_security_group_ids = [var.aws_security_group_id]
root_block_device {
delete_on_termination = true
}
ebs_block_device {
device_name = "/dev/sdb"
delete_on_termination = true
}
tags = local.tags
volume_tags = local.tags
}
关于amazon-ec2 - 使用 Terraform 通过 EC2 创建时如何向 AWS EBS 添加标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62470272/