Terraform EC2资源的地形动态标记因“类型块”而失败;标签";在这里是不可能的` ➜ 地形-v 地形v0.12.24 +provider.aws v2.60.0

Terraform EC2资源的地形动态标记因“类型块”而失败;标签";在这里是不可能的` ➜ 地形-v 地形v0.12.24 +provider.aws v2.60.0,terraform,terraform-provider-aws,terraform0.12+,Terraform,Terraform Provider Aws,Terraform0.12+,我的地形示例。tf: 本地人{ 标准标签={ 团队=变量团队 project=var.project 组件=变量组件 环境=var.environment } } 提供商“aws”{ profile=“profile” 区域=变量区域 } 资源“aws密钥对”“安全密钥”{ key\u name=“安全密钥” public_key=文件(“.ssh/key.pub”) } #我们的应用程序将使用的S3存储桶的新资源。 资源“aws\U s3\U bucket”“项目\U bucket”{ #注意

我的地形示例。tf

本地人{
标准标签={
团队=变量团队
project=var.project
组件=变量组件
环境=var.environment
}
}
提供商“aws”{
profile=“profile”
区域=变量区域
}
资源“aws密钥对”“安全密钥”{
key\u name=“安全密钥”
public_key=文件(“.ssh/key.pub”)
}
#我们的应用程序将使用的S3存储桶的新资源。
资源“aws\U s3\U bucket”“项目\U bucket”{
#注意:S3 bucket名称在所有AWS帐户中必须是唯一的,因此
#在应用此示例之前,必须更改此名称以避免命名
#冲突。
bucket=“项目bucket”
acl=“私有”
}
资源“aws\u安全组”“ssh\u允许”{
name=“允许所有ssh”
入口{
cidr_块=[
"0.0.0.0/0"
]
从_端口=22
至_端口=22
协议=“tcp”
}
出口{
从_端口=0
至_端口=0
协议=“-1”
cidr_块=[“0.0.0.0/0”]
}
}
资源“aws\u安全组”“http\u允许”{
name=“允许所有http”
入口{
cidr_块=[
"0.0.0.0/0"
]
从_端口=80
至_端口=80
协议=“tcp”
}
出口{
从_端口=0
至_端口=0
协议=“-1”
cidr_块=[“0.0.0.0/0”]
}
}
资源“aws_实例”“示例”{
ami=“ami-08ee2516c7709ea48”
实例_type=“t2.micro”
安全组=[aws\u security\u group.ssh\u allow.name,aws\u security\u group.http\u allow.name]
key\u name=aws\u key\u pair.security\u key.key\u name
联系{
type=“ssh”
user=“centos”
私钥=文件(“.ssh/key”)
主机=self.public\u ip
}
供应人“本地执行官”{
command=“echo${aws\u instance.example.public\u ip}>ip\u address.txt”
}
供应器“远程执行”{
内联=[
“sudo yum-y安装nginx”,
“sudo systemctl启动nginx”
]
}
取决于=[aws\U s3\U bucket.project\U bucket,aws\U key\u pair.security\u key]
动态“标签”{
for_each=本地标准_标签
内容{
key=tag.key
value=tag.value
在_启动时传播_=真
}
}
}
当我运行
TerraformPlan
我得到了以下错误:

➜ 地形图
错误:不支持的块类型
在example.tf第94行的资源“aws_instance”“example”中:
94:动态“标签”{
此处不需要“tag”类型的块。

aws\u实例
资源类型的架构中没有定义名为
tag
的块类型。有一个名为
tags
的参数,我认为这是获得您在此处查找的结果的方法:

  tags = local.standard_tags

我希望您考虑的是中的
标记
块,它与AWS提供程序资源中的
标记
参数的常规设计不同,因为对于这种资源类型,每个标记都有一个附加属性
在启动时传播
。该属性仅适用于自动缩放组,因为它决定了何时进行从自动缩放组启动的er实例将从组本身继承特定标记。

不幸的是,由于aws_实例资源的标记属性是一个映射,在HCL构造atm中,它不能像动态嵌套块部分中看到的aws_自动缩放组示例中的标记属性那样作为可重复块存在关于:


但是从您的评论来看,您似乎试图使用键/值对的映射来设置tags属性?在这种情况下,这当然是可行的错误消息解释道:
标记
是此资源的参数,而不是块。您需要在资源范围内迭代以在此处动态标记。正在处理此修复