什么是terraform远程状态文件;“私人”;属性用于?

什么是terraform远程状态文件;“私人”;属性用于?,terraform,Terraform,我最近将一些现有的AWS资源导入到terraform中,它工作得很好(谢谢) 其中一些资源是敏感的,例如KMS密钥和Cloudtrail审计跟踪 当查看存储在S3中的远程状态文件时,我看到这些对象上有一个base64编码的private属性,例如在我看到的一条轨迹上 "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjAifQ==" bease64解码这表明它是 "private": {"schema_version":"0"} 所以我不太担心,但我想知道这个“pri

我最近将一些现有的AWS资源导入到terraform中,它工作得很好(谢谢)

其中一些资源是敏感的,例如KMS密钥和Cloudtrail审计跟踪

当查看存储在S3中的远程状态文件时,我看到这些对象上有一个base64编码的
private
属性,例如在我看到的一条轨迹上

"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjAifQ=="
bease64解码这表明它是

"private": {"schema_version":"0"}
所以我不太担心,但我想知道这个
“private”
属性是用来确保东西不会泄漏到这里的

谢谢

卡尔

这里“私有”的意思是,从Terraform的角度来看,这是由提供者决定的一个不透明的二进制数据块。因此,一般来说,不可能回答该字段可能用于什么——原则上,特定的资源类型可以将其用于任何事情——但通过重点关注
aws\u kms\u key
,我们可以讨论它今天是如何使用的:

AWS提供程序是用官方Terraform Go SDK构建的,因此在我写这篇文章时,
private
数据实际上是由SDK逻辑而不是特定于提供程序的逻辑使用的。如果您解压缩共享的Base64值,您将在其中找到一些JSON:

{"schema_version":"0"}
SDK正在使用它来跟踪此对象当前使用的架构版本。从Terraform 0.12开始,模式版本实际上现在是状态格式的显式部分,因此这是多余的,但SDK继续在这里记录它,因为今天的提供程序仍然与Terraform 0.10和0.11兼容,因此将其设置为“私有”也会导致在这些较旧版本的运行之间保留它


原则上,提供者可以在这里存储任何内容,但目的是提供者使用它来跟踪这种使资源生命周期正常工作所需的“无聊”元数据,而不是任何实际的资源数据。。。数据本身属于主要对象属性。

谢谢Martin。我将继续检查这些字段中的内容,以防提供者将来做一些疯狂的事情;-/但是谢谢你的回答