Session 4 - 21 Modules #132
-
Olá boa noite, tudo bem? Estou com um problema para poder reproduzir o conteúdo da aula de Módulos. Ao tentar buscar na documentação vi que a forma de provisionar um bucket de site estático mudou um pouco, tentei entender o raciocínio da aula e aplicar de acordo com a documentação e travei na parte de utilização do bloco dinâmico. Na aula os valores de index.html e error.html são passados no resource "aws_s3_bucket", porém na documentação para transformar um bucket comum em bucket de site estático orienta utilizar o resource "aws_s3_bucket_website_configuration" e nesse resource passamos o indez.html e o error.html. Porém ao tentar utilizar um dynamic block nesse resource tentando seguir a logica da aula eu tenho o seguinte erro. │ Error: Unsupported block type
│
│ on s3_module\main.tf line 11, in resource "aws_s3_bucket_website_configuration" "this":
│ 11: dynamic "website" {
│
│ Blocks of type "website" are not expected here. ao que me pareceesse resource não aceita dynamic block certo? Se eu tento fazer conforme na aula passando o index e o erros no resource "aws_s3_bucket" ao invés de passar no "aws_s3_bucket_website_configuration" recebo o seguinte erro falando que preciso passar esses valores no resource │ Error: Invalid combination of arguments
│
│ with module.website.aws_s3_bucket.this,
│ on s3_module\main.tf line 1, in resource "aws_s3_bucket" "this":
│ 1: resource "aws_s3_bucket" "this" {
│
│ "website.0.index_document": one of `website.0.index_document,website.0.redirect_all_requests_to` must be specified
│ Error: Invalid combination of arguments
│
│ with module.website.aws_s3_bucket.this,
│ on s3_module\main.tf line 1, in resource "aws_s3_bucket" "this":
│ 1: resource "aws_s3_bucket" "this" {
│
│ "website.0.redirect_all_requests_to": one of `website.0.index_document,website.0.redirect_all_requests_to` must be specified Vou enviar abaixo os arquivos para ver se tem algo errado. ./s3_mudele/main.tf resource "aws_s3_bucket" "this" {
bucket = var.name
policy = var.policy
dynamic "website" {
for_each = length(keys(var.website)) == 0 ? [] : [var.website]
content {
index_document = lookup(website.value, "index.html", null)
error_document = lookup(website.value, "error.html", null)
redirect_all_requests_to = lookup(website.value, "redirect_all_requests_to", null)
routing_rules = lookup(website.value, "routing_rules", null)
}
}
}
resource "aws_s3_bucket_website_configuration" "this" {
bucket = aws_s3_bucket.this.bucket
}
resource "aws_s3_bucket_acl" "this" {
bucket = aws_s3_bucket.this.id
acl = "private"
} ./main.tf terraform {
required_version = "1.3.5"
required_providers {
aws = {
source = "hashicorp/aws"
version = "4.41.0"
}
}
}
provider "aws" {
region = var.region
profile = var.profile
}
resource "random_pet" "this" {
length = 2
}
module "bucket" {
source = "./s3_module"
name = random_pet.this.id
}
resource "random_pet" "website" {
length = 2
}
module "website" {
source = "./s3_module"
name = "${random_pet.website.id}-site"
website = {
index_document = "index.html"
error_document = "error.html"
}
policy = <<EOT
{
"Id": "Policy1671487841465",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1671487837160",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::${random_pet.website.id}-site/*",
"Principal": "*"
}
]
}
EOT
} Desde já muito obrigado. |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 1 reply
-
@everton17 as propriedades tem outro nome quando vc utiliza o novo resource "aws_s3_bucket_website_configuration" "website" {
bucket = aws_s3_bucket.website.bucket
dynamic "index_document" {
for_each = length(keys(var.website)) == 0 ? [] : [var.website]
content {
suffix = "index.html"
}
}
error_document {
key = "error.html"
}
} Recentemente eu gravei um vídeo de como utilizar a nova forma para criar um bucket com o terraform, dá uma olhada lá. |
Beta Was this translation helpful? Give feedback.
-
@chgasparoto você pretende atualizar o curso, para poder acompanhar com a atualização dos modulos novos da aws ? |
Beta Was this translation helpful? Give feedback.
@everton17 as propriedades tem outro nome quando vc utiliza o novo
aws_s3_bucket_website_configuration
. Vc precisa setar odynamic
nas novas propriedades, por exemplo:Recentemente eu gravei um vídeo de como utilizar a nova forma para criar um bucket com o terraform, dá uma olhada lá.
https://youtu.be/iSIuCOVje_k
https://github.com/chgasparoto/youtube-cleber-gasparoto/blob/main/0008-terraform-new-…