如何在 Terraform 外部数据源中使用 AWS cli 命令
How to use an AWS cli command in a Terraform external data source
如果我 运行 单独执行以下命令,我会得到预期的结果 -
这个:
aws cloudfront list-cloud-front-origin-access-identities | jq -r ' .CloudFrontOriginAccessIdentityList.Items[] | select(.Comment == "Created for Nackle Shared CF in pprd").Id'
Returns这个:
E1P6ZIBDB6I6FZ
如何使用 Terraform 外部数据源获得相同的结果?
我试过了:
data "external" "json" {
program = ["sh", "-c", "aws cloudfront list-cloud-front-origin-access-identities | jq -r ' .CloudFrontOriginAccessIdentityList.Items[] | select(.Comment == "Created for Nackle Shared CF in pprd").Id'"]
}
output "map" {
value = ["${values(data.external.json.result)}"]
}
但是当我 运行 Terraform 应用时 returns 这个错误 -
Expected a comma to mark the beginning of the next item.
我假设正确写入后“值”将是 E1P6ZIBDB6I6FZ?
如何在 terraform 的另一部分使用该值作为变量?
是否有不同的方法来解决这个问题?
我是 Terraform 的新手,从未使用过外部数据源。
外部数据源的json解析能力非常有限。它应该是 (escape quote and return new json):
data "external" "json" {
program = ["sh", "-c", "aws cloudfront list-cloud-front-origin-access-identities | jq -r ' .CloudFrontOriginAccessIdentityList.Items[] | select(.Comment == \"Created for Nackle Shared CF in pprd\") | {id: .Id}'"]
}
那么你访问的Id为:
data.external.json.result["id"]
如果我 运行 单独执行以下命令,我会得到预期的结果 -
这个:
aws cloudfront list-cloud-front-origin-access-identities | jq -r ' .CloudFrontOriginAccessIdentityList.Items[] | select(.Comment == "Created for Nackle Shared CF in pprd").Id'
Returns这个:
E1P6ZIBDB6I6FZ
如何使用 Terraform 外部数据源获得相同的结果?
我试过了:
data "external" "json" {
program = ["sh", "-c", "aws cloudfront list-cloud-front-origin-access-identities | jq -r ' .CloudFrontOriginAccessIdentityList.Items[] | select(.Comment == "Created for Nackle Shared CF in pprd").Id'"]
}
output "map" {
value = ["${values(data.external.json.result)}"]
}
但是当我 运行 Terraform 应用时 returns 这个错误 -
Expected a comma to mark the beginning of the next item.
我假设正确写入后“值”将是 E1P6ZIBDB6I6FZ?
如何在 terraform 的另一部分使用该值作为变量?
是否有不同的方法来解决这个问题?
我是 Terraform 的新手,从未使用过外部数据源。
外部数据源的json解析能力非常有限。它应该是 (escape quote and return new json):
data "external" "json" {
program = ["sh", "-c", "aws cloudfront list-cloud-front-origin-access-identities | jq -r ' .CloudFrontOriginAccessIdentityList.Items[] | select(.Comment == \"Created for Nackle Shared CF in pprd\") | {id: .Id}'"]
}
那么你访问的Id为:
data.external.json.result["id"]