Gostaria de poder ver o JSON de um recurso de dados (como um documento de política) no plano. Atualmente este tipo de recursos apenas “renderiza” durante a aplicação.
Quero saber se existe uma maneira de ver isso antes de executar o terraform apply
.
Aqui está o meu código:
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"
]
}
}
Responder1
O Terraform lerá um recurso de dados durante a fase de planejamento se, e somente se, toda a configuração do recurso de dados for conhecida durante a fase de planejamento.
No seu caso, você tem referências a aws_s3_bucket.some-bucket.arn
and aws_cloudwatch_log_group.some_lambda.arn
e suspeito que nenhum desses valores seja conhecido durante o planejamento porque a API remota decide o ARN de um objeto como parte de sua criação.
Portanto, a única maneira de ver essa política durante o planejamento seria se esses dois objetos já tivessem sido criados e seus ARNs já fossem conhecidos de uma execução anterior.
Uma maneira de conseguir isso seria aplicar inicialmente apenas parte da sua configuração apenas para criar esses objetos:
terraform apply -target=aws_s3_bucket.some-bucket -target=aws_cloudwatch_log_group.some_lambda
O Terraform deve propor a criação desses dois objetos e qualquer outra coisa da qual eles dependam, mas ainda não lerá o recurso de dados ou qualquer outra coisa que dependa dele. Se você aceitar esse plano e permitir que o Terraform crie esses objetos, então você poderá executar terraform apply
normalmente e o Terraform deverá ser capaz de ler esse recurso de dados durante a segunda etapa de planejamento e, assim, mostrar o valor final desta política com os dois ARNs já inserido.