有沒有辦法在執行 terraform apply 之前渲染資料資源的輸出?

有沒有辦法在執行 terraform apply 之前渲染資料資源的輸出?

我希望能夠在計劃中查看資料資源(如政策文件)的 JSON。目前,這些類型的資源僅在應用期間「呈現」。

我想知道是否有辦法在運行之前查看它terraform apply

這是我的程式碼:

data "aws_iam_policy_document" "my_policy" {
  statement {
    sid = "S3"
    effect = "Allow"
    actions = ["s3:*"]
    resources = [
      aws_s3_bucket.some-bucket.arn,
      "arn:aws:s3:::another-bucket/*",
      "arn:aws:s3:::another-bucket/"
    ]
  }
  statement {
    sid = "CloudWatch"
    effect = "Allow"
    actions = ["logs:*"]
    resources = [
      aws_cloudwatch_log_group.some_lambda.arn,
      "arn:aws:logs:us-east-1:123456789123:log-group:/some/log/group:*",
      "arn:aws:logs:us-east-1:123456789123:log-group:/some/log/group"
    ]
  }
}

答案1

當且僅在規劃階段已知資料資源的整個配置時,Terraform 才會在規劃階段從資料資源中讀取資料。

在您的情況下,您引用了aws_s3_bucket.some-bucket.arnaws_cloudwatch_log_group.some_lambda.arn,並且我懷疑在規劃期間這兩個值都不知道,因為遠端 API 在創建物件的過程中決定了物件的 ARN。

因此,在規劃期間查看此策略的唯一方法是這兩個物件已經創建,因此它們的 ARN 已從先前的運行中獲知。

實現這一目標的一種方法是最初僅應用部分配置來建立這些物件:

terraform apply -target=aws_s3_bucket.some-bucket -target=aws_cloudwatch_log_group.some_lambda

Terraform 應該建議創建這兩個物件以及它們所依賴的任何其他對象,但尚未讀取資料資源或依賴它的任何其他對象。如果您接受該計劃並允許 Terraform 創建這些對象,那麼您隨後可以terraform apply正常運行,並且 Terraform 應該能夠在第二個規劃步驟中讀取此資料資源,從而向您顯示此策略與兩個 ARN 的最終值已經插入。

相關內容