{"id":599,"date":"2025-05-12T15:07:28","date_gmt":"2025-05-12T18:07:28","guid":{"rendered":"https:\/\/difusao.tech\/blog\/?p=599"},"modified":"2025-05-12T15:47:40","modified_gmt":"2025-05-12T18:47:40","slug":"primeiros-passos-no-terraform","status":"publish","type":"post","link":"https:\/\/difusao.tech\/blog\/primeiros-passos-no-terraform\/","title":{"rendered":"Primeiros passos no Terraform"},"content":{"rendered":"\n<p>&#8220;Hello World&#8221; Terraform + AWS<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"634\" height=\"209\" src=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2025\/05\/image.png\" alt=\"\" class=\"wp-image-600\" style=\"width:563px;height:auto\" srcset=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2025\/05\/image.png 634w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2025\/05\/image-300x99.png 300w\" sizes=\"auto, (max-width: 634px) 100vw, 634px\" \/><\/figure>\n<\/div>\n\n\n<p>O nosso Hello world com Terraforma + AWS vai ser uma infraestrutura b\u00e1sica com um servidor Apache com uma p\u00e1gina simples em html.<\/p>\n\n\n\n<p>Vamos criar uma infraestrutura b\u00e1sica na AWS usando Terraform, incluindo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Uma VPC (Virtual Private Cloud)<\/li>\n\n\n\n<li>Uma subnet p\u00fablica<\/li>\n\n\n\n<li>Um Internet Gateway<\/li>\n\n\n\n<li>Uma tabela de rotas<\/li>\n\n\n\n<li>Um grupo de seguran\u00e7a<\/li>\n\n\n\n<li>Uma inst\u00e2ncia EC2 com servidor web<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Pr\u00e9-requisitos<\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Conta AWS<\/strong>: Voc\u00ea precisa de uma conta AWS com permiss\u00f5es para criar recursos.<\/li>\n\n\n\n<li><strong>AWS CLI instalada e configurada<\/strong>: Execute&nbsp;<code>aws configure<\/code>&nbsp;para configurar suas credenciais.<\/li>\n\n\n\n<li><strong>Terraform instalado<\/strong>: Baixe em&nbsp;<a href=\"https:\/\/www.terraform.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">terraform.io<\/a>.<\/li>\n\n\n\n<li><strong>Editor de c\u00f3digos: <\/strong>No caso estou usando o VS Code.<\/li>\n<\/ol>\n\n\n\n<p>Instale no VS Code a extes\u00e3o Terraform que vai ajudar em alguns momentos com sugest\u00f5es.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"267\" height=\"185\" src=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2025\/05\/image-1.png\" alt=\"\" class=\"wp-image-603\"\/><\/figure>\n\n\n\n<p>Caso queira criar um usu\u00e1rio somente com as permiss\u00f5es necess\u00e1rias para este laborat\u00f3rio crie uma conta com as pol\u00edticas a seguir:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": &#91;\n        {\n            \"Effect\": \"Allow\",\n            \"Action\": &#91;\n                \/\/ A\u00e7\u00f5es gen\u00e9ricas de descri\u00e7\u00e3o (somente leitura)\n                \"ec2:Describe*\",\n\n                \/\/ Gerenciamento completo de VPCs (cria\u00e7\u00e3o, exclus\u00e3o e tagging)\n                \"ec2:CreateVpc\",\n                \"ec2:DeleteVpc\",\n                \"ec2:CreateTags\",\n\n                \/\/ Gerenciamento de subnets (cria\u00e7\u00e3o e exclus\u00e3o)\n                \"ec2:CreateSubnet\",\n                \"ec2:DeleteSubnet\",\n\n                \/\/ Gerenciamento completo de Security Groups (cria\u00e7\u00e3o, exclus\u00e3o e regras)\n                \"ec2:CreateSecurityGroup\",\n                \"ec2:DeleteSecurityGroup\",\n                \"ec2:DescribeSecurityGroups\",\n                \"ec2:AuthorizeSecurityGroupIngress\",\n                \"ec2:AuthorizeSecurityGroupEgress\",\n                \"ec2:RevokeSecurityGroupEgress\",\n\n                \/\/ Gerenciamento de Internet Gateways (ciclo completo)\n                \"ec2:CreateInternetGateway\",\n                \"ec2:DeleteInternetGateway\",\n                \"ec2:AttachInternetGateway\",\n                \"ec2:DetachInternetGateway\",\n\n                \/\/ Gerenciamento de Route Tables e rotas\n                \"ec2:CreateRouteTable\",\n                \"ec2:DeleteRouteTable\",\n                \"ec2:CreateRoute\",\n                \"ec2:AssociateRouteTable\",\n                \"ec2:DisassociateRouteTable\",\n\n                \/\/ Gerenciamento de Elastic IPs (aloca\u00e7\u00e3o e associa\u00e7\u00e3o)\n                \"ec2:AllocateAddress\",\n                \"ec2:AssociateAddress\",\n\n                \/\/ Gerenciamento de inst\u00e2ncias EC2 (inicializa\u00e7\u00e3o e t\u00e9rmino)\n                \"ec2:RunInstances\",\n                \"ec2:TerminateInstances\"\n            ],\n            \"Resource\": \"*\"\n        }\n    ]\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Passo 1: Configura\u00e7\u00e3o Inicial<\/h2>\n\n\n\n<p>Crie um arquivo chamado&nbsp;<code><mark style=\"background-color:#abb8c3\" class=\"has-inline-color\">main.tf<\/mark><\/code>&nbsp;e cole o c\u00f3digo fornecido abaixo. Vamos analisar cada se\u00e7\u00e3o, e todos os c\u00f3digos informados ficaram dentro desse arquivo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Passo 2: Entendendo o C\u00f3digo<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Configura\u00e7\u00e3o do Provider AWS<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>provider \"aws\" {\n  region = \"us-east-1\" # Escolha sua regi\u00e3o preferida\n}<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>provider \"aws\"<\/code>: <\/strong>Define que estamos usando o provedor AWS.<\/li>\n\n\n\n<li><strong><code>region<\/code>:<\/strong> Especifica a regi\u00e3o AWS onde os recursos ser\u00e3o criados.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. Cria\u00e7\u00e3o da VPC<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>resource \"aws_vpc\" \"main\" {<br>  cidr_block = \"10.0.0.0\/16\"<br>  <br>  tags = {<br>    Name = \"Tutorial-VPC\"<br>  }<br>}<br><br><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>aws_vpc<\/code>:<\/strong> Recurso que cria uma VPC.<\/li>\n\n\n\n<li><strong><code>cidr_block<\/code>: <\/strong>Define o bloco IP para a VPC (10.0.0.0\/16 permite 65.536 endere\u00e7os IP).<\/li>\n\n\n\n<li><code><strong>tags<\/strong><\/code>: Metadados para identificar o recurso.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. Cria\u00e7\u00e3o da Subnet P\u00fablica<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>resource \"aws_subnet\" \"public\" {<br>  vpc_id            = aws_vpc.main.id<br>  cidr_block        = \"10.0.1.0\/24\"<br>  availability_zone = \"us-east-1a\"<br>  <br>  tags = {<br>    Name = \"Public-Subnet-Tutorial\"<br>  }<br>}<br><br><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>aws_subnet<\/code>:<\/strong> Cria uma subnet dentro da VPC.<\/li>\n\n\n\n<li><strong><code>vpc_id<\/code>: <\/strong>Referencia a VPC criada anteriormente.<\/li>\n\n\n\n<li><strong><code>cidr_block<\/code>: <\/strong>Define um bloco IP menor (\/24 = 256 endere\u00e7os) dentro da VPC.<\/li>\n\n\n\n<li><strong><code>availability_zone<\/code>:<\/strong> Define em qual zona de disponibilidade a subnet ser\u00e1 criada.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4. Cria\u00e7\u00e3o do Internet Gateway<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>resource \"aws_internet_gateway\" \"gw\" {<br>  vpc_id = aws_vpc.main.id<br>  <br>  tags = {<br>    Name = \"Tutorial-IGW\"   <br>  }<br>}<br><br><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>aws_internet_gateway<\/code>: <\/strong>Cria um gateway para acesso \u00e0 internet.<\/li>\n\n\n\n<li><strong><code>vpc_id<\/code>:<\/strong> Associa o gateway \u00e0 VPC criada.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5. Cria\u00e7\u00e3o da Tabela de Rotas<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>resource \"aws_route_table\" \"public\" {<br>  vpc_id = aws_vpc.main.id<br><br>  route {<br>    cidr_block = \"0.0.0.0\/0\"<br>    gateway_id = aws_internet_gateway.gw.id<br>  }<br>  <br>  tags = {<br>    Name = \"Public-Route-Table\"<br>  }<br>}<br><br><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>aws_route_table<\/code>:<\/strong> Cria uma tabela de rotas.<\/li>\n\n\n\n<li><strong><code>route<\/code>:<\/strong> Define uma rota padr\u00e3o (0.0.0.0\/0) para o Internet Gateway.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6. Associa\u00e7\u00e3o da Tabela de Rotas<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>resource \"aws_route_table_association\" \"public\" {\n  subnet_id      = aws_subnet.public.id\n  route_table_id = aws_route_table.public.id\n}\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>aws_route_table_association<\/code>:<\/strong> Associa a tabela de rotas \u00e0 subnet p\u00fablica.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7. Cria\u00e7\u00e3o do Grupo de Seguran\u00e7a<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>resource \"aws_security_group\" \"web\" {<br>  name        = \"web-sg\"<br>  description = \"Allow HTTP traffic\"<br>  vpc_id      = aws_vpc.main.id<br><br>  ingress {<br>    description = \"HTTP from anywhere\"<br>    from_port   = 80<br>    to_port     = 80<br>    protocol    = \"tcp\"<br>    cidr_blocks = &#91;\"0.0.0.0\/0\"]<br>  }<br><br>  egress {<br>    from_port   = 0<br>    to_port     = 0<br>    protocol    = \"-1\"<br>    cidr_blocks = &#91;\"0.0.0.0\/0\"]<br>  }<br>  <br>  tags = {<br>    Name = \"Web-Security-Group\"<br>  }<br>}<br><br><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>aws_security_group<\/code>:<\/strong> Cria um firewall virtual.<\/li>\n\n\n\n<li><strong><code>ingress<\/code>:<\/strong> Regra de entrada permitindo tr\u00e1fego HTTP (porta 80).<\/li>\n\n\n\n<li><strong><code>egress<\/code>:<\/strong> Regra de sa\u00edda permitindo todo tr\u00e1fego.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8. Cria\u00e7\u00e3o da Inst\u00e2ncia EC2<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>resource \"aws_instance\" \"web_server\" {\n  ami           = \"ami-085386e29e44dacd7\" # Amazon Linux 2 (us-east-1)\n  instance_type = \"t2.micro\"\n  subnet_id     = aws_subnet.public.id\n  vpc_security_group_ids = &#91;aws_security_group.web.id]\n  associate_public_ip_address = true\n  \n  user_data = &lt;&lt;-EOF\n              #!\/bin\/bash\n              yum update -y\n              yum install -y httpd\n              systemctl start httpd\n              systemctl enable httpd\n              echo \"&lt;html&gt;&lt;body&gt;&lt;h1&gt;Hello World from Terraform!&lt;\/h1&gt;&lt;\/body&gt;&lt;\/html&gt;\" &gt; \/var\/www\/html\/index.html\n              EOF\n\n  tags = {\n    Name = \"Web-Server-Tutorial\"\n  }\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>aws_instance<\/code>: <\/strong>Cria uma inst\u00e2ncia EC2.<\/li>\n\n\n\n<li><strong><code>ami<\/code>:<\/strong> ID da imagem da m\u00e1quina (Amazon Linux 2 na us-east-1).<\/li>\n\n\n\n<li><strong><code>instance_type<\/code>: <\/strong>Tipo da inst\u00e2ncia (t2.micro \u00e9 eleg\u00edvel para o free tier).<\/li>\n\n\n\n<li><strong><code>subnet_id<\/code>: <\/strong>Define em qual subnet a inst\u00e2ncia ser\u00e1 criada.<\/li>\n\n\n\n<li><strong><code>vpc_security_group_ids<\/code>:<\/strong> Associa o grupo de seguran\u00e7a criado.<\/li>\n\n\n\n<li><strong><code>associate_public_ip_address<\/code>:<\/strong> Atribui um IP p\u00fablico automaticamente.<\/li>\n\n\n\n<li><strong><code>user_data<\/code>: <\/strong>Script executado no primeiro boot para instalar e configurar o Apache.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9. Sa\u00edda do IP P\u00fablico<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>output \"public_ip\" {\n  value = aws_instance.web_server.public_ip\n}\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>output<\/code>:<\/strong> Exibe o IP p\u00fablico da inst\u00e2ncia ap\u00f3s a implanta\u00e7\u00e3o.<\/li>\n<\/ul>\n\n\n\n<p class=\"has-text-align-left has-medium-font-size\"><strong>10. Verifica\u00e7\u00e3o do configura\u00e7\u00e3o<\/strong><\/p>\n\n\n\n<p><strong>Validar configura\u00e7\u00e3o<\/strong>: <mark style=\"background-color:#abb8c3\" class=\"has-inline-color\">terraform validate<\/mark><br>O comando vai verificar se toda a configura\u00e7\u00e3o feita no arquivo esta ok.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Passo 3: Inicializa\u00e7\u00e3o e Aplica\u00e7\u00e3o<\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Inicialize o Terraform<\/strong>: <mark style=\"background-color:#abb8c3\" class=\"has-inline-color\">terraform init<\/mark><br>Isso baixar\u00e1 o provedor AWS necess\u00e1rio.<\/li>\n\n\n\n<li><strong>Verifique o plano de execu\u00e7\u00e3o<\/strong>: <mark style=\"background-color:#abb8c3\" class=\"has-inline-color\">terraform plan<\/mark><br>Revise quais recursos ser\u00e3o criados.<\/li>\n\n\n\n<li><strong>Aplique a configura\u00e7\u00e3o<\/strong>: <mark style=\"background-color:#abb8c3\" class=\"has-inline-color\">terraform apply<\/mark><br>Digite&nbsp;<code>yes<\/code>&nbsp;quando solicitado para confirmar.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Passo 4: Teste a Implanta\u00e7\u00e3o<\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Ap\u00f3s a conclus\u00e3o, o Terraform exibir\u00e1 o IP p\u00fablico da inst\u00e2ncia.<\/li>\n\n\n\n<li>Abra um navegador e acesse&nbsp;<code>http:\/\/&lt;IP_PUBLICO&gt;<\/code>.<\/li>\n\n\n\n<li>Voc\u00ea deve ver a mensagem &#8220;Hello World from Terraform!&#8221;.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Passo 5: Limpeza dos Recursos<\/h2>\n\n\n\n<p>Para evitar custos desnecess\u00e1rios, destrua os recursos quando n\u00e3o precisar mais deles:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><mark style=\"background-color:#abb8c3\" class=\"has-inline-color\">terraform destroy<\/mark><\/pre>\n\n\n\n<p>Digite&nbsp;<code>yes<\/code>&nbsp;quando solicitado para confirmar.<\/p>\n\n\n\n<p>Abaixo o nosso c\u00f3digo completo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>provider \"aws\" {\n  region = \"us-east-1\" # Escolha sua regi\u00e3o preferida\n}\n\n#Cria\u00e7\u00e3o de um VPC\nresource \"aws_vpc\" \"main\" {\n  cidr_block = \"10.0.0.0\/16\"\n  \n  tags = {\n    Name = \"Tutorial-VPC\"\n  }\n}\n\n\n#Cria\u00e7\u00e3o de uma Subnet p\u00fablica\n#A subnet p\u00fablica \u00e9 uma sub-rede que pode se comunicar com a Internet\nresource \"aws_subnet\" \"public\" {\n  vpc_id            = aws_vpc.main.id\n  cidr_block        = \"10.0.1.0\/24\"\n  availability_zone = \"us-east-1a\" # Altere conforme sua regi\u00e3o\n  \n  tags = {\n    Name = \"Public-Subnet-Tutorial\"\n  }\n}\n\n#Cria\u00e7\u00e3o de uma Internet Gateway\n#A Internet Gateway \u00e9 um ponto de acesso \u00e0 Internet para a VPC\nresource \"aws_internet_gateway\" \"gw\" {\n  vpc_id = aws_vpc.main.id\n  \n  tags = {\n    Name = \"Tutorial-IGW\"   \n  }\n}\n\n#Cria\u00e7\u00e3o de uma Route Table\n#A tabela de rotas \u00e9 usada para direcionar o tr\u00e1fego da subnet p\u00fablica para a Internet Gateway\nresource \"aws_route_table\" \"public\" {\n  vpc_id = aws_vpc.main.id\n\n  route {\n    cidr_block = \"0.0.0.0\/0\"\n    gateway_id = aws_internet_gateway.gw.id\n  }\n  \n  tags = {\n    Name = \"Public-Route-Table\"\n  }\n}\n\n#Associa a tabela de rotas \u00e0 subnet p\u00fablica\nresource \"aws_route_table_association\" \"public\" {\n  subnet_id      = aws_subnet.public.id\n  route_table_id = aws_route_table.public.id\n}\n\n\n#Cria\u00e7\u00e3o de um Security Group\n#O Security Group \u00e9 um firewall virtual que controla o tr\u00e1fego de entrada e sa\u00edda da inst\u00e2ncia EC2\nresource \"aws_security_group\" \"web\" {\n  name        = \"web-sg\"\n  description = \"Allow HTTP traffic\"\n  vpc_id      = aws_vpc.main.id\n\n  ingress {\n    description = \"HTTP from anywhere\"\n    from_port   = 80\n    to_port     = 80\n    protocol    = \"tcp\"\n    cidr_blocks = &#91;\"0.0.0.0\/0\"]\n  }\n\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = &#91;\"0.0.0.0\/0\"]\n  }\n  \n  tags = {\n    Name = \"Web-Security-Group\"\n  }\n}\n\n\n#Cria\u00e7\u00e3o de uma inst\u00e2ncia EC2\n#A inst\u00e2ncia EC2 \u00e9 uma m\u00e1quina virtual na nuvem da AWS\nresource \"aws_instance\" \"web_server\" {\n  ami           = \"ami-085386e29e44dacd7\" # Amazon Linux 2 (us-east-1)\n  instance_type = \"t2.micro\"\n  subnet_id     = aws_subnet.public.id\n  vpc_security_group_ids = &#91;aws_security_group.web.id]\n  associate_public_ip_address = true\n  \n  user_data = &lt;&lt;-EOF\n              #!\/bin\/bash\n              yum update -y\n              yum install -y httpd\n              systemctl start httpd\n              systemctl enable httpd\n              echo \"&lt;html&gt;&lt;body&gt;&lt;h1&gt;Hello World from Terraform!&lt;\/h1&gt;&lt;\/body&gt;&lt;\/html&gt;\" &gt; \/var\/www\/html\/index.html\n              EOF\n\n  tags = {\n    Name = \"Web-Server-Tutorial\"\n  }\n}\n\n#Sa\u00edda do IP p\u00fablico da inst\u00e2ncia EC2\noutput \"public_ip\" {\n  value = aws_instance.web_server.public_ip\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Conclus\u00e3o<\/h2>\n\n\n\n<p>Neste tutorial, voc\u00ea aprendeu a:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Criar uma VPC e subnets<\/li>\n\n\n\n<li>Configurar um Internet Gateway e tabelas de rotas<\/li>\n\n\n\n<li>Definir grupos de seguran\u00e7a<\/li>\n\n\n\n<li>Implantar uma inst\u00e2ncia EC2 com configura\u00e7\u00e3o autom\u00e1tica<\/li>\n\n\n\n<li>Gerenciar o ciclo de vida da infraestrutura com Terraform<\/li>\n<\/ul>\n\n\n\n<p>Este \u00e9 um exemplo b\u00e1sico que pode ser expandido com mais recursos.<br>A nossa p\u00e1gina em html \u00e9 bem simples, voc\u00ea pode alterar a parte do User Data para baixar uma p\u00e1gina mais elaborada direto do github ou qualquer outro local.<\/p>\n\n\n\n<p>Vale tamb\u00e9m lembrar que o nosso c\u00f3digo esta todo dentro do arquivo main.tf, o ideal seria usar modulos, mas isso ser\u00e1 um assunto para outro tutorial.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;Hello World&#8221; Terraform + AWS O nosso Hello world com Terraforma + AWS vai ser uma infraestrutura b\u00e1sica<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[230,216],"tags":[209,232,280,279],"class_list":["post-599","post","type-post","status-publish","format-standard","hentry","category-aws","category-cloud","tag-aws","tag-cloud","tag-iac","tag-terraform"],"_links":{"self":[{"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/posts\/599","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/comments?post=599"}],"version-history":[{"count":3,"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/posts\/599\/revisions"}],"predecessor-version":[{"id":606,"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/posts\/599\/revisions\/606"}],"wp:attachment":[{"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/media?parent=599"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/categories?post=599"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/tags?post=599"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}