我正在尝试从 terraform 远程状态获取一些引用,并注意到terraform state
资源/数据和使用terraform_remote_state
数据对象之间的一些差异。
例如,我有一个 terraform 模块,它创建了一个没有输出的 AWS 托管目录。在该模块中,我可以看到状态中的所有资源 - 例如terraform state show aws_directory_service_directory.ad
,给我有关目录的详细信息 - 目录 ID、DNS 服务器地址等。
$ terraform state list
aws_directory_service_directory.ad
$ terraform state show aws_directory_service_directory.ad
# aws_directory_service_directory.ad:
resource "aws_directory_service_directory" "ad" {
access_url = "REDACTED"
alias = "REDACTED"
dns_ip_addresses = []
.... etc ....
}
如果我然后创建一个新模块并添加一个terraform_remote_state
数据对象,我将无法访问目录的任何属性 -data.terraform_remote_state.ad.outputs
为空。在这个新模块中,如果我只有远程状态数据对象,并且应用(没有资源),然后使用terraform console
和显示data.terraform_remote_state.ad
,它看起来像:
$ terraform console
> data.terraform_remote_state.ad
{
"backend" = ".."
"config" = { remote_state config shown here }
"outputs" = {}
}
所以资源处于状态,但不能直接访问。这是预期的行为吗?有什么方法可以访问远程状态下的资源,还是我需要将属性添加到输出中并使用data.terraform_remote_state.ad.outputs.whatever_attributes
?