Я хотел бы иметь возможность увидеть 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.arn
и aws_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.