Gostaria de poder ver o JSON de um recurso de dados (como um documento de política) no plano. Atualmente esses tipos de recursos apenas "renderizam" durante a aplicação.
Eu quero saber se existe uma maneira de vê-lo antes de executar o arquivo 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"
]
}
}
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 ambos
aws_s3_bucket.some-bucket.arn
eaws_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 esses dois objetos já terem sido criados e, portanto, seus ARNs já serem conhecidos de uma execução anterior.
Uma maneira de conseguir isso seria aplicar inicialmente apenas parte de sua configuração apenas para obter esses objetos criados:
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, poderá subsequentemente executar
terraform apply
normalmente e o Terraform poderá ler esse recurso de dados durante a segunda etapa de planejamento e, assim, mostrar o valor final dessa política com os dois ARNs já inserido.