Pular para o conteúdo principal

16 publicações com a etiqueta "AWS Fundamentals"

Ver todas as etiquetas

Alternativas ao LocalStack que você deveria conhecer

· 5 min para ler
Ludmila Silva
Cloud & DevOps Engineer

A partir do dia 31 de março de 2026, o LocalStack deixou de disponibilizar a versão Community, movendo diversos serviços core para planos pagos. Na prática, isso impacta diretamente aqueles que utilizavam a ferramenta para testes sem custo.

Mas se tem algo interessante na comunidade open source é que se uma porta fecha, outras várias são abertas. Por isso, resolvi reunir algumas opções open source para quem quer continuar desenvolvendo e testando localmente, com foco em AWS, mas sem estourar o orçamento no fim do mês.

Ah, além de falar brevemente dessas soluções, vamos fazer alguns testes rápidos. Por isso, certifique-se de ter o Docker e AWS CLI instalados.

Bora lá?

Floci

Eu encontrei o Floci em um post no LinkedIn escrito pelo Fabiano Moura, e achei a proposta muito válida: ser acessível e open source desde o início.

Atualmente, o Floci emula 22 serviços da AWS, desde o S3 ao CloudFormation. Ainda há serviços core da AWS não disponíveis, mas ele consegue cobrir diversos casos de estudo e testes.

Rodando em Docker com uma imagem bem leve, o Floci usa a mesma porta (a 4566) e mesmo protocolos e chamadas AWS SDK que o LocalStack, o que facilita a curva de aprendizado.

Instalando e testando o Floci

Para instalar o Floci, vamos usar o padrão com um container Docker. Para isso, execute o comando abaixo:

# Rodar o container em segundo plano
docker run --rm -d -p 4566:4566 hectorvent/floci:latest

Depois, vamos configurar a AWS CLI com o export das credenciais fake:

export AWS_ENDPOINT=http://localhost:4566
export AWS_DEFAULT_REGION=us-east-1
export AWS_ACCESS_KEY_ID=test
export AWS_SECRET_ACCESS_KEY=test

Por fim, fazer alguns testes criando um Bucket S3, subindo um arquivo .txt e listando os objetos do bucket:

# Criando um bucket S3
aws s3 mb s3://my-bucket --endpoint-url $AWS_ENDPOINT

# Subindo um arquivo .txt
echo "hello floci" | aws s3 cp - s3://my-bucket/hello.txt --endpoint-url $AWS_ENDPOINT

# Listando os objetos do bucket criado
aws s3 ls s3://my-bucket --endpoint-url $AWS_ENDPOINT

Resultado:

Imagem: Saída do terminal (CLI) exibindo o comando aws s3 ls mostrando o arquivo hello.txt dentro do bucket my-bucket, confirmando que o upload foi realizado com sucesso no Floci.

Ministack

O Ministack apareceu para mim após uma postagem do Thiago Augusto Ozores no LinkedIn, e já virou um dos meus favoritos.

Ele permite emular 33 serviços da AWS, e se diferencia por executar contêineres reais para serviços críticos, tais como RDS, ElastiCache, Docker via ECS e consultas SQL com DuckDB (Athena), em vez de apenas simular as chamadas de API.

O Ministack é leve e rápido, com uma imagem de cerca de 150MB. Assim como o Floci e o LocalStack, ele também usa a porta 4566, e isso facilita o uso porque basta apenas mudar o endpoint dos laboratórios e ambientes.

Instalando e testando o Ministack

Assim como fizemos com o Floci, vamos subir um container do Ministack com o comando:

# Rodar o container em segundo plano
docker run -d -p 4566:4566 nahuelnucera/ministack

Vamos criar um Bucket S3 de teste com o comando:

# Criando um bucket S3 no ministack
aws s3 mb s3://my-local-bucket \
--endpoint-url http://localhost:4566 \
--region us-east-1

Resultado:

Imagem: Saída do terminal (CLI) exibindo o comando aws s3 mb indicando “make_bucket: my-local-bucket”, confirmando que o bucket foi criado com sucesso no ambiente do Ministack.

kumo

Por último, mais não menos importante, temos o kumo, que conheci por uma postagem do Everton Marques (também no LinkedIn!).

Escrito em Go, ele suporta 71 serviços da AWS! O kumo oferece um conjunto enxuto de funcionalidades, incluindo: execução sem autenticação, suporte a Docker, baixo consumo de recursos e inicialização rápida.

Assim como os outros colegas, o kumo também utiliza a porta 4566. Então, basta apenas mudar o endpoint para utilizar nos seus projetos.

Sem mais delongas, vamos fazer um teste rápido do kumo também!

Instalando e testando o kumo

# Rodar o container em segundo plano
docker run -d -p 4566:4566 ghcr.io/sivchari/kumo:latest

E lá vamos nós para mais um teste de bucket S3 rsrs:

# Criando um bucket S3 no kumo
aws s3 mb s3://my-kumo-bucket \
--endpoint-url http://localhost:4566 \
--region us-east-1

Resultado:

Imagem: Saída do comando aws s3 mb, com o my-kumo-bucket criado

Imagem: Saída do terminal (CLI) exibindo o comando aws s3 mb indicando “make_bucket: my-kumo-bucket”, confirmando que o bucket foi criado com sucesso no Kumo.

Considerações finais

O fim da versão gratuita do LocalStack pode parecer um problema à primeira vista, mas hoje aprendemos que ele abriu espaço para novas ferramentas. Isso nos permite testar alternativas e repensar o fluxo de desenvolvimento local focado em AWS.

Mas me conta aí, você já testou alguma dessas opções? Usa outra alternativa? Ou ainda segue utilizando o LocalStack firme e forte?

Até mais e bons estudos!

Referências

Como configurar o Route 53 como serviço de DNS de um domínio

· 6 min para ler
Ludmila Silva
Cloud & DevOps Engineer

Esse é um tutorial complementar ao de como registrar um domínio no Amazon Route 53.

Aqui vamos pensar em casos em que você já possui um domínio registrado ou quer registrá-lo em outro local, mas pretende usar o Route 53 como zona DNS do seu domínio para centralizar o gerenciamento.

Então, bora para o hands-on!

1) Registrando um domínio (opcional)

Primeiro, precisamos de um domínio registrado. Se você já tem um domínio, pode pular para a etapa 2 deste tutorial.

Caso não tenha, então vamos fazer o passo a passo do registro de um domínio. Eu particularmente gosto bastante de usar o Namecheap para registrar domínios para fins de testes.

Geralmente, há domínios bem baratos e em preços promocionais - o que fica caro mesmo é o valor da renovação dos domínios. Como eu não renovo esses domínios de testes, o registro por um ano atende bem. A única ressalva é que você vai precisar de um cartão de crédito para fazer o registro.

  • Acesse o Namecheap
  • Na aba de pesquisa, digite o nome de domínio desejado. Eu irei registrar o cloudtutorials
  • Uma lista de extensões vai aparecer (.com, .net, entre outros). Vamos selecionar a extensão .site. O domínio selecionado possui o valor de registro de 1,78 dólares, é o que aparece em retail e que vai ser cobrado. Então, se atente a isso.
  • Aqui é importante ressaltar também que o valor de renovação do domínio, isto é, o valor quando expirar, é de $ 23.48 doletas.

  • Selecione o domínio e clique em Checkout

  • Na página seguinte, está a especificação dos valores. Isso inclui a taxa da ICANN, que é a entidade que gerencia a distribuição de endereços IP e o Sistema de nomes de domínio (DNS).

  • Revise os valores - o registro será por somente um ano e a opção Auto-renew deve estar desativada. Cuidado para não contratar nenhum outro serviço extra. Clique em Confirm Order
  • Você será direcionado para uma página de login ou então criar uma nova conta. Caso você não tenha uma conta, crie-a com os dados de usuário, senha, nome e e-mail. Um e-mail de confirmação chegará na sua caixa de entrada.
  • Após fazer o login, seremos direcionados para a página de pagamento. Há as opções de pagamento (aceitam cartões Visa, MasterCard, Discover, American Express e também pagamento via Paypal). Vou selecionar a opção Secure Card Payment para cartão de crédito e preencher os dados

  • Após preencher os dados do cartão, basta clicar em Continue

  • Para finalizar o pedido, há uma página de revisão. Fique de olho para não contratar nada que não seja o registro do domínio (há também o serviço de privacidade dos dados no Whois, que é gratuito).

  • Clique em Pay Now... E pronto! Em poucos minutos o domínio estará registrado. Você receberá uma mensagem de confirmação na sua caixa de entrada de e-mail.

💡

Caso você seja estudante, você pode registrar um domínio gratuito pelo GitHub usando o GitHub Student Developer Pack - dá uma olhada lá!

2) Criando a Zona hospedada na AWS

Acesse a console AWS -> busque pelo Route 53 -> e entre na opção Zonas hospedadas. Clique em Criar zona hospedada

Insira o domínio no campo Nome do domínio e deixe a opção Zona hospedada pública marcada. Clique em Criar zona hospedada

A zona será criada com dois registros DNS. Pegue os valores dos registros do tipo NS, copie e salve em um bloco de notas para facilitar o processo:

3) Configurando o DNS

Logue na sua conta do Namecheap. Na aba lateral esquerda, clique em Domain List

Clique no botão Manage na opção do domínio desejado

Em Domain, vá até a opção Nameservers e selecione Custom DNS

Nos campos em branco, cole os 4 nameservers copiados da Zona hospedada do Route 53:

Após inserir, clique no sinal de "checked" (o "v" verde"). Teremos uma mensagem dizendo que a propagação do DNS pode levar até 48 horas:

4) Testando com uma instância EC2 (opcional)

Essa parte funciona corretamente após a propagação completa de DNS. No entanto, pode acontecer de funcionar bem antes.

Como o AWS cobra pela zona hospedada, essa etapa será apenas para ilustrar o acesso de uma instância EC2 pelo domínio.

Antes de começar este tutorial, eu deixei uma instância EC2 rodando. Esta parte é opcional, mas você pode criar uma instância - e caso tenha dúvidas em como criar uma instância EC2, você pode seguir este tutorial.

Assim que tiver criado sua instância, copie o IP público.

  • Acesse a Zona hospedada do domínio no Route 53

  • Clique no botão Criar registro

Insira os seguintes valores:

  • Nome do registro: deixe em branco
  • Valor: IP público da sua EC2
  • TTL: 300
  • Política de roteamento: Roteamento simples

5) Limpe o ambiente

  • Encerre a instância EC2 - caso você tenha criado uma

  • No Route 53, selecione o registro A e clique em Excluir registro. Em seguida, delete a Zona hospedada

  • Volte os Nameservers do seu domínio para o padrão do seu provedor. No caso do Namecheap, deixe em Namecheap BasicDNS

Documentação

Registrando um domínio no Route 53

· 7 min para ler
Ludmila Silva
Cloud & DevOps Engineer

Hoje vamos abordar o Amazon Route 53, um serviço da AWS que atua como DNS e que encaminha a solicitações dos usuários par aplicativos na web.

Porém, primeiro precisamos esclarecer alguns conceitos:

  • O que é como funciona o DNS
  • O que é um Domínio (ou nome de domínio)
  • E que é o Route 53 da AWS

O que é e como funciona o DNS

A comunicação em redes ocorre, principalmente, por meio de endereços IPs. O IP é um número binário de 32 bits (IPv4) ou 128 bits (IPv6), que deve ser único na comunicação. De forma bem geral, podemos dizer que desde as nossas máquinas pessoais até os servidores que hospedam serviços e sites que acessamos na internet, todos possuem endereços IPs que permitem seu acesso, gerenciamento e comunicação.

Agora imagine que para acessar o Google, tivéssemos que digitar sempre o IP 142.251.128.238 no navegador? Saber um é fácil, mas decorar os IPs de todos os sites que acessamos no dia a dia seria um imenso trabalho. Uma forma de facilitar a comunicação na web se dá pelo DNS.

O Domain Name System (Sistema de nome de domínio), ou simplesmente DNS, é um sistema que traduz "nomes" para endereços IP. Ele funciona quase como uma agenda telefônica do celular, por exemplo, em que temos vários nomes atrelados a uma sequência de números. Isso possibilita acessar os recursos na web sem a necessidade de ficar memorizando IPs.

Não vamos adentrar aqui na estrutura do DNS, mas essa introdução é importante para pensarmos sobre seu funcionamento básico: traduzir nomes de domínio.

O que é um domínio

Um domínio (domain name) é um nome que identifica um site na internet. Esse nome é composto de uma ou mais extensões, tais como o .com, .br, .org, entre outros. Esse final do domínio é conhecido como top level domain (TDL), ou domínio de primeiro nível.

No caso do domínio deste site - lu.dev.br - o "lu" seria o nome, o ".dev" é uma categoria, também chamada de second level domain (STL) e o ".br" é o TDL.

Os domínios são registrados e organizados em hierarquias. Para que você tenha um domínio, é necessário registrá-lo. Geralmente, o período de vigência de um domínio é 1 ano, depois desse prazo você deverá renová-lo (mas geralmente, os registros e renovações são feitos com durações maiores que um ano). Isso ocorre porque caso uma pessoa ou organização esqueçam de renovar o domínio a tempo, ele voltará ao mercado para ser registrado novamente.

Agora que já sabemos o que é um domínio, podemos entender de modo simples como funciona o fluxo do DNS: você digita o domínio no seu navegador → é realizada uma requisição para o servidor DNS que responde com o IP para o navegador. Voilá, página acessada e carregada.

O que é o Route 53

E finalmente chegamos nele: o Amazon Route 53!

O Route 53 é um serviço de DNS altamente disponível e escalável, que oferece registro de domínios, resolução de DNS e roteamento de tráfego.

Ele permite:

  • Registrar domínios, criar e gerenciar registros DNS;
  • Distribuir o tráfego de forma otimizada, baseado em várias políticas de roteamento;
  • Integrar-se a outros serviços da AWS;
  • Configurar verificações de integridade dos recursos, tais como instâncias EC2 ou Load Balancers. Dessa forma, o Route 53 "desvia" o tráfego de recursos não saudáveis.

Bora para o hands-on!

⚠️

ATENÇÃO: neste tutorial há custos envolvidos💸 Existem taxas para registro e renovação de domínios - seja na AWS ou qualquer outro registrador de domínios - além de outras cobranças de serviços. Portanto, use este tutorial como um guia em relação ao serviço do Route 53.

Passo a passo

1) Registrando um domínio no Route 53

Acesse a console AWS e busque pelo Route 53

Na aba lateral esquerda, clique em Domínios registrados

Em seguida, clique no botão Registrar domínios

Para este tutorial, vamos registrar o domínio cloudtutorialscom o TDL .click. Isso porque é o mais barato rsrs... 3,00 dólares ao ano. É só pesquisar pelo domínio no campo Pesquisar domínio

Em seguida, clique em Selecionar e no botão Prosseguir para check-out

Na página seguinte, temos opções de preço, tempo de registro e renovação automática. Você pode aumentar a duração do registro por mais anos se desejar, o que não é nosso caso.

Nós vamos manter por um ano e desativar a opção de renovação automática. Clique em Próximo

Na próxima página, devemos preencher as informações de contato:

  • Tipo de contato (se é pessoa, empresa, etc),
  • nome,
  • telefone,
  • e-mail,
  • Entre outros dados.

Esses dados ficam visíveis no WHOIS, que é um protocolo que armazena e fornece informações sobre um domínio e seus proprietários.

Por padrão, a proteção de privacidade dos contatos para o domínio já vem ativa (e sem nenhum custo extra, ao contrário do que ocorre com outros registradores de domínio).

Inclusive, se você abrir o terminal e digitar whois cloudtutorials.click, vai ver que está tudo privado:

Continuando: clique em Próximo

Na página Analisar e enviar estará um resumo e o valor total do registro do domínio.

Um detalhe importante é que há uma informação sobre a Taxa de gerenciamento de DNS, na qual falaremos dela mais adiante.

Mais ao final da página, estarão os _Termos e condições. Selecione a caixa para aceitar os termos e clique em _Enviar

A partir disso, a solicitação de registro de domínio estará em análise / andamento.

Em alguns minutos, o domínio é registrado:

2) Verificando a zona hospedada

No painel do Route 53, clique em Zonas hospedadas

Você vai ver que foi criada a Zona hospedada para o domínio que acabamos de registrar. Podemos dizer que a Zona hospedada (ou Zona DNS) permite centralizar o controle de um domínio, inserindo registros de recursos DNS - que especificam a função e o tipo de roteamento.

Quando registramos um domínio na AWS, o Route 53 automaticamente cria a zona hospedada, e com ela você pode especificar para onde deseja que o tráfego do domínio seja roteado, entre outras configurações.

Como a zona hospedada possui uma taxa cobrada por mês, nós iremos excluí-la a fim de evitar essa cobrança.

Lembrando que para fins de testes, uma zona hospedada que for excluída no Route 53 em até 12 horas após sua criação não é cobrada.

Por hoje é só, pessoal!

Bons estudos!

Documentação

Criando um bucket S3 com o CloudFormation

· 4 min para ler
Ludmila Silva
Cloud & DevOps Engineer

O desenvolvimento e a manutenção de aplicações modernas exigem rapidez no provisionamento, gerenciamento e entrega da infraestrutura necessária para atender às demandas. Nesse contexto, a infraestrutura tradicional, com processos manuais e demorados para criar ambientes de desenvolvimento, testes e produção, não atende mais aos requisitos dessas aplicações. Assim, a Infraestrutura como Código (IaC - Infrastructure as Code) surge como uma solução para responder ao dinamismo, complexidade e velocidade dos negócios atuais.

Na IaC, a configuração, provisionamento e administração da infraestrutura estão codificados em arquivos de texto, que podem ser versionados em sistemas de controle de versão, como o Git. Em vez de realizar essas atividades manualmente, a IaC permite um processo automatizado e controlado.

Na AWS, o serviço que possibilita criar e replicar uma infraestrutura a partir de um código é o Amazon CloudFormation. Ele permite que a infraestrutura seja replicada várias vezes, oferecendo um serviço gratuito, em que o pagamento ocorre apenas pelos recursos provisionados.

Dois conceitos importantes do CloudFormation são:

  • Template: No AWS CloudFormation, um template é um arquivo em formato JSON ou YAML que descreve a infraestrutura desejada, incluindo recursos como instâncias EC2, redes e permissões, de forma declarativa e reutilizável.
  • Stack: A partir do template, uma stack é criada, representando a implementação prática dos recursos definidos. Em outras palavras, a stack é o conjunto dos recursos ativos gerenciados em conjunto.

Podemos dizer, de forma resumida, que o CloudFormation possibilita a criação, atualização e exclusão de infraestrutura de forma automatizada, garantindo consistência e controle na nuvem.

Depois dessa breve introdução, vamos colocar a mão na massa!

Hands-on

1) Criando o template

Abra um editor de texto (VsCode, Notepad, Sublime Text, ou outro de sua preferência) e copie o trecho abaixo. Salve em formato .yaml

Resources:
TesteBucketS3:
Type: AWS::S3::Bucket
Properties:
AccessControl: Private
BucketName: `<nome_do_bucket>`

Se preferir, você pode baixar o arquivo também:

Download

Nesse template, temos as seguintes partes:

  • Resources - indica que serão especificados os recursos da infraestrutura na AWS;
  • TesteBucketS3 - é o indicador lógico do recurso, um nome único para referenciar esse recurso dentro do template caso fosse necessário - poderia ser qualquer outro nome;
  • Type - define o tipo do recurso que será criado;
  • AWS::S3::Bucket - é o nome do recurso, no caso é o Bucket S3;
  • Properties - define as configurações específicas (propriedades) do Bucket S3;
  • AccessControl - é uma das propriedades do bucket, que define o acesso somente por usuários autenticados e com permissão para tal;
  • BucketName - é o nome do bucket que será criado.

Ah, em BucketName lembre-se de trocar o <nome_do_bucket> para um nome de sua preferência. E também lembre que o nome para um Bucket S3 deve ser único e global na AWS.

Continuando...

2) Criar uma stack

Acesse a console AWS e procure por CloudFormation

Clique em Criar pilha

Para criar a pilha (stack), vamos selecionar a opção Escolher de um modelo existente, e especificar esse modelo marcando a opção Fazer upload de um arquivo de modelo

Em seguida, vamos escolher o arquivo .yaml e fazer upload. Veja que será criado outro Bucket S3 para armazenar o modelo do CloudFormation:

Clique em Próximo. Em seguida, dê um nome para a pilha e clique em Próximo novamente.

Clique em Próximo até chegar na página Revisar e Criar

Desça até ao final da página e clique em Enviar. Não tem muito segredo, o CloudFormation vai apresentar os eventos da criação da Stack e fazer o rollbak (reverter) caso ocorra algum problema.

Se tudo der certo, vai aparecer o status CREATE_COMPLETE

Para conferir se o Bucket foi criado, você pode acessar a Pilha -> Recursos

3) Limpando o ambiente

Para limpar o ambiente, você precisa selecionar e exluir a pilha

Confirme a exclusão. Em seguida, acesse o S3 e exclua o bucket criado para armazenar o modelo. Antes de excluir, você vai receber um alerta para esvaziar o bucket. Confirme e exclua tudo.

Prontinho, ambiente limpo 🧹

Bons estudos!

Documentação

Banco de dados NoSQL com o DynamoDB

· 3 min para ler
Ludmila Silva
Cloud & DevOps Engineer

Os bancos de dados não relacionais são bancos que armazenam os dados em um formato diferente das tabelas relacionais. A construção desse tipo de banco de dados permite criar aplicações modernas com mais flexibilidade e liberdade, realizando consultas e pesquisas mais rápidas.

Entre os tipos de NoSQL mais comuns estão os bancos de documentos como o MongoDB; de colunas, como o Cassandra; de grafos, como Neo4j; e de chave-valor como o Redis.

Exemplo de estrutura de dados em JSON, comumente usado no MongoDB, Firebase, entre outros

Nesse tutorial, vamos conhecer um pouco do Amazon DynamoDB, um serviço de banco de dados não relacional (NoSQL) rápido, com escalabilidade e baixa latência.

O DynamoDB é serveless, o que significa que você não precisa gerenciar a infraestrutura subjacente a ele. É gerenciado pela AWS, ou seja, a AWS cuida dos aspectos operacionais e da infraestrutura, e você somente precisa se ocupar dos seus dados e o desenvolvimento da sua aplicação.

No DynamoDB, os dados são armazenados no modelo de chave-valor, em que é necessário indicar uma _chave primária, utilizada para identificar um item na tabela. Você também pode especificar uma chave secundária_, fornecendo flexibilidade na consulta dos dados.

Passo a passo

1) Criando uma tabela

Acesse a console AWS e busque por DynamoDB. Clique em Criar tabela

Nas configurações da tabela, insira:

  • Nome da tabela: Clientes
  • Chave primária (Chave de partição): id_cliente (formato String)

Vá até ao final da página e clique em Criar tabela

2) Inserindo dados na tabela

Assim que a tabela for criada, clique em cima dela para acessá-la:

Em seguida, clique em Explorar itens da tabela

Mais abaixo, clique em Criar item

Clique em Adicionar novo atributo e escolha o formato String

Insira o valor 1 para o atributo id_cliente. E crie os seguintes itens, todos no formato String, com os valores que você preferir:

  • nome
  • sobrenome
  • cidade
  • estado

Assim que tiver completado os itens, clique no botão Criar item.

Veja que o item foi criado com sucesso:

Agora, crie mais outro item com os mesmos campos e id_cliente com valor 2, como na imagem:

Veja agora que temos dois itens criados:

3) Lendo os dados da tabela

Na mesma página da tabela, em Verificar ou consultar itens, selecione o campo Consulta, insira o valor 2 em id_cliente (Chave de partição), e clique em Executar

Veja que somente o item 2, da cliente Maria, foi retornado:

O legal é que você pode realizar diversas operações com o banco de dados e as tabelas do DynamoDB via CLI ou SKD.

4) Limpe o ambiente

Para limpar seu ambiente, basta selecionar a tabela e clicar em Excluir. Confirme a exclusão e pronto, tudo limpo!

Bons estudos!

Documentação

Criando uma instância RDS MySQL

· 5 min para ler
Ludmila Silva
Cloud & DevOps Engineer

Um banco de dados relacional é um sistema que gerencia dados organizados em tabelas, facilitando a relação entre essas informações. As tabelas são compostas por linhas e colunas, onde as linhas representam registros únicos e as colunas representam atributos dos dados.

Fonte: https://logap.com.br/blog/banco-de-dados-relacional/

Bancos de dados relacionais utilizam a linguagem SQL (Structured Query Language) para manipulação e consulta de dados. Além disso, existem sistemas de gerenciamento de banco de dados (SGBDs) que permitem acessar e manipular dados por meio de uma interface ou software. Os SGBDs mais populares são:

  • MySQL
  • SQLServer
  • PostgreSQL
  • Microsoft SQL Server
  • Oracle Database

Na AWS, temos o Amazon RDS (Relational Database Service), que é um serviço de banco de dados relacional com recursos de escalabilidade, automatização de patches, provisionamento de hardware e backup na Nuvem AWS. O Amazon RDS utiliza instâncias gerenciadas pela AWS e permite criar bancos de dados com os seguintes mecanismos:

  • PostgreSQL
  • MySQL
  • MariaDB
  • Oracle
  • SQL Server
  • Aurora (AWS)

Outro ponto interessante é que o Amazon RDS permite a criação de "Read Replicas" — cópias de leitura do banco de dados com replicação assíncrona. Esse recurso é útil, por exemplo, para aplicações com alta carga de leitura de dados, pois permite reduzir a carga do banco de dados principal, transferindo essas consultas para a réplica de leitura. Essa é uma estratégia muito eficaz de Alta Disponibilidade (High Availability).

Sem mais delongas, vamos para o nosso hands-on!

Passo a Passo

1) Criando a instância RDS

Acesse a console AWS e busque pelo RDS

Clique no botão Criar banco de dados

Na página seguinte, deixe marcado o método de Criação padrão e em Opções do mecanismo, selecione MySQL

Mais abaixo, em Modelos, selecione o Nível gratuito - afinal, não queremos nenhuma cobrança indesejada.

Em Configurações, especifique:

  • Identificador da instância de banco de dados: é o nome da sua instância. Deixei como database-1
  • Nome do usuário principal: admin
  • Gerenciamento de credenciais: marque autogerenciada
  • Senha principal: crie uma senha (da qual você possa se lembrar) com no mínimo 8 caracteres

Desça até a aba Conectividade, e em Acesso público marque Sim

(P.S.: Essa não é a configuração ideal para acessarmos um banco de dados externamente, mas para fins didáticos ela vai nos atender no momento)

Um pouco mais abaixo, ainda em Conectividade, marque Criar novo para criar um novo Grupo de Segurança e dê um nome a esse grupo.

Desça até ao final da página e clique em Criar banco de dados.

2) Verificando a instância

Pode levar alguns minutos até que a instância RDS esteja disponível. Assim que estiver, clique na instância.

Assim como ocorre no EC2, você vai se deparar com uma série de informações sobre a instância. O que nos interessa aqui é o Endpoint, que é o ponto de conectividade da nossa instância.

Em Segurança e conexão, copie o Endpoint

3) Testando a conexão no MySQL Workbench

Agora, vamos usar o MySQL Workbench apenas para testar a conexão externa com a instância. Eu escolhi o Workbench, mas você pode usar outro software como o DBeaver, por exemplo.

Caso não tenha o Workbench instalado, você pode baixá-lo aqui.

Abra o Workbench e clique no + para criar uma nova conexão:

Na janela que abrir, insira as informações:

  • Connection Name: dê um nome para sua conexão
  • Connection Method: deixe marcado como Standard (TCP/IP)
  • Hostname: cole o endpoint da sua instância
  • Username: admin (ou outro, caso você tenha alterado ao criar a instância RDS)
  • Password: clique em Store in Vault e insira a senha do banco de dados

Depois que preencher os campos, clique em Test Connection

Se tudo der certo, você vai receber uma mensagem de que a conexão foi realizada com sucesso. Clique em "OK".

Você pode abrir a conexão com o RDS e se divertir criando tabelas, inserido dados, fazendo consultas, etc. O céu é o limite (na verdade, o Free Tier é o limite).

Ah, lembre-se de limpar o seu ambiente, ou seja, de excluir sua instância RDS.

Bons estudos!

Documentação

Distribuição de conteúdo com o Amazon CloudFront

· 4 min para ler
Ludmila Silva
Cloud & DevOps Engineer

As Redes de Distribuição de Conteúdo (Content delivery network - CDN) são compostas por servidores espalhados geograficamente que geralmente armazenam conteúdo da web em cache e distribuem esse conteúdo para os usuários. As CDNs permitem que o usuário acesse o conteúdo a partir do servidor mais próximo a ele, tornando a experiência mais aprazível, por assim dizer - já que haverá baixa latência e maior velocidade de carregamento dos dados.

A AWS também possui um serviço de CDN, chamado de Amazon CloudFront, utilizado inclusive pela Netflix. Esse serviço permite distribuir conteúdos estáticos e dinâmicos na web (websites, imagens, vídeos, dados, entre outros). Para isso, o CloudFront faz uso das Edge Locations (Pontos de Presença), que atuam como servidores de cache espalhados pelo mundo, acelerando a entrega dos conteúdos e melhorando a experiência dos usuários.

No CloudFront, a entrega do conteúdo se baseia na localização geográfica do usuário, na origem da página e também na localização do servidor de entrega do conteúdo.

Além disso, o CloudFront:

  • Trabalha em conjunto com outros serviços - S3, WAF, Shield, Route 53 e Certificate Manager;
  • Emite um certificado SSL/TLS público;
  • Mantém o acesso seguro e criptografado;
  • Redireciona o tráfego HTTP para HTTPS;
  • Pode restringir o acesso do conteúdo por meio de vários recursos;
  • Entre outras funções.

Sem mais delongas, vamos para o hands-on! Ah, esse tutorial é uma continuação do post "Subindo um website estático no Amazon S3" - caso você não tenha um bucket S3 configurado para servir um site estático, dá uma olhadinha no post.

Passo a Passo

1) Criando a distribuição do CloudFront

  • Acesse a console AWS e busque pelo CloudFront. Clique em Criar distribuição (Create distribution)

  • Em Origin domain, você vai escolher o Bucket S3 em que os arquivos do Website - o CloudFront vai sugerir que você indique o endpoint do website, mas para este tutorial queremos que somente o CloudFront tenha acesso ao bucket (e, por consequência, iremos alterar a política de acesso do S3).
  • Em Origin acess, marque a opção Origin access control settings, e depois clique no botão Criar nova OAC

  • Um pop-up vai abrir para configurarmos esse controle de acesso, apenas clique em Criar (create)

Inclusive, vai aparecer um aviso dizendo que temos que atualizar a políca do Bucket... O que faremos depois.

  • Agora, desça a página até a opção Web Application Firewall (WAF). Deixe o WAF desabilitado.

  • Mais abaixo, em Configurações (Settings), especifique a página index.html como objeto raiz para que o CloudFront saiba qual objeto do S3 ele deve responder

  • Desça até ao final da página e clique em Criar distribuição

2) Modificando a política do bucket S3

Após criar a distribuição, uma mensagem irá aparecer na tela, indicando que você deve copiar e alterar a política (policy) do Bucket. Copie a política:

Acesse o bucket do seu site, vá em Permissões -> Política do Bucket -> e clique em Editar

Remova a política que estava anteriormente - na qual configuramos no tutorial de Website estático no S3 - e cole a nova política de acesso. Clique em Salvar alterações

Volte lá no CloudFront, clique na distribuição e copie o nome de domínio (domain name). Cole no navegador e dê enter:

Agora, o site está acessível pelo domínio do CloudFront. Se você tentar acessá-lo com a URL gerada pelo S3, não vai conseguir:

  1. Limpando o ambiente

Para limpar o seu ambiente, você precisa:

  • Desabilitar a Distribuição no CloudFront - desabilite e aguarde alguns minutos. Somente depois que a opção Deletar estará disponível para ele ser excluído

  • Você também pode excluir os arquivos e o bucket S3, caso queira. Mas é opcional.

Bons estudos!

Documentação

Balanceamento de carga com o Elastic Load Balancing

· 4 min para ler
Ludmila Silva
Cloud & DevOps Engineer

Nós já sabemos como criar instâncias no Amazon EC2 e como configurar o Auto Scaling Group para termos escalabilidade em uma aplicação. Agora, é hora de aprofundarmos um pouco mais do recurso de balanceamento de carga da AWS: o Elastic Load Balancing (ELB).

Um balanceador de carga é uma ferramenta muito importante quando necessitamos de distribuir o tráfego de entrada de uma aplicação. Imagine que você está rodando 3 web servers com a mesma aplicação. No entanto, somente um deles está recebendo o tráfego dos seus clientes e, como resultado, o servidor está sobrecarregado. Uma das formas de contornar isso é utilizando um balanceador de carga, que vai distribuir o tráfego da sua aplicação para os web servers.

Além disso, o AWS Elastic Load Balancing monitora a integridade dos destinos e roteia o tráfego apenas para os destinos íntegros, ou seja, se uma instância EC2 está inoperante ou "caiu", ele vai rotear o tráfego para instâncias "saudáveis". Você pode distribuir o tráfego entre diferentes Zonas de Disponibilidade, por exemplo, contribuindo para a alta disponibilidade e tolerância a falhas da sua aplicação.

Para esse tutorial, precisamos ter o Auto Scaling Group (ASG) já criado. Então, se você ainda não criou o seu, volta lá no tutorial do ASG.

Passo a passo

Criando um Target Group

  1. Acesse a console AWS, vá em EC2 -> Balanceamento de carga -> Grupos de destino -> e clique em Criar grupo de destino

A configuração básica do Target group terá as seguintes opções:

  • Tipo de destino: instâncias
  • Nome do grupo: o nome que você preferir
  • Protocolo: HTTP
  • Porta: 80
  • Tipo de endereço: IPv4
  • Versão do protocolo: HTTP 1

Vá até o final da página e clique em Próximo. Em Registrar destinos, selecione as instâncias disponíveis (criadas pelo Auto Scaling)

E clique em Incluir como pendente abaixo:

Em seguida, clique em Criar grupo de destino.

2) Criando o Load Balancer

Agora acesse a opção de Load balancers e clique em Criar load balancer_

Em Tipos de load balancer, vamos selecionar o Application Load Balancer (ALB)

Na Configuração básica do ALB, defina um nome para o load balancer e mantenha as configurações já existentes.

Na opção, Mapeamento de rede, marque todas as Zonas de Disponibilidade:

Em Grupos de segurança, selecione o mesmo grupo criado para o modelo de execução (template) no tutorial do Auto Scaling:

Mais abaixo, em Listeners e roteamento, selecione o Target group criado anteriormente:

Desça até ao final da página e clique em Criar load balancer. Pronto!

Você verá uma página informando que o ABL foi criado com sucesso. Nessa página, copie o DNS.

Aguarde alguns minutos até que o status do Loab Balancer esteja como... Então, cole o DNS em uma aba do seu navegador:

Se você for atualizando a página, vai perceber que o IP do servidor altera. Ou seja, que o tráfego está sendo balanceado entre as instâncias disponíveis. Legal, não é?

(Lembram do script que usamos lá no tutorial de Auto Scaling? Nos serviu para visualizar esse balanceamento).

Ah, não se esqueça de limpar seu ambiente: excluir o ALB, remover o Target Group, e excluir o Auto Scaling Group.

Bons estudos!

Documentação

Escalabilidade na AWS com o Amazon EC2 Auto Scaling

· 6 min para ler
Ludmila Silva
Cloud & DevOps Engineer

Um dos grandes benefícios da Computação em Nuvem reside na Escalabilidade, que é a capacidade de ajustar seus recursos conforme a demanda, garantindo que você tenha recursos disponíveis para atender às suas necessidades.

Em geral, a escalabilidade pode ser dividida em:

  • Vertical: se refere a expansão dos recursos computacionais (adicionar CPU, RAM, etc), ou seja, aumentar o "tamanho" de uma instância;
  • Horizontal: aumentar o número de instâncias baseada na demanda, ou seja, envolve a adição de mais nodes (mais máquinas).

Podemos pensar em uma aplicação que está rodando em um web server utilizando uma EC2. Em dado momento, as necessidades do negócio e a alta demanda fazem com que somente uma instância não seja mais suficiente devido ao alto número de acessos. Nesse cenário, a escalabilidade cai como uma luva.

Na AWS, existe um serviço voltado para garantir que se tenha o número correto de EC2 instâncias da Amazon disponíveis para lidar com a carga de uma aplicação: é o Amazon EC2 Auto Scaling, ou simplesmente Auto Scaling.

Com o Auto Scaling podemos criar coleções de EC2 instâncias, chamadas de grupos de Auto Scaling (Auto Scaling Groups ou ASG).

Também podemos:

  • especificar o número mínimo de instâncias em cada grupo de Auto Scaling, garantindo que seu grupo nunca fique abaixo desse tamanho;
  • especificar o número máximo de instâncias em cada grupo de Auto Scaling, garantindo que seu grupo nunca ultrapasse esse tamanho;
  • especificar a capacidade desejada, ao criar o grupo ou a qualquer momento posterior, garantindo que seu grupo tenha esse número de instâncias;
  • por fim, especificar políticas de escalabilidade, para que o Amazon EC2 Auto Scaling inicie ou encerre instâncias à medida que a demanda da sua aplicação aumentar ou diminuir - ou seja, pode fazer o scale out (adicionar instâncias) e scale in (remover instâncias ociosas).

Sem mais delongas, vamos para o nosso tutorial!

Passo a passo

  1. Acesse a console da AWS e pesquise por Auto Scaling Groups

  1. Clique no botão Criar grupo do Auto Scaling

  1. Escolha um nome para o grupo e escolha um modelo de execução

Na página seguinte, será necessário escolher um nome para o Grupo de Auto Scaling. Coloquei como Grupo-teste

Além disso, é necessário criar um modelo de execução (launch template). Para isso, basta clicar na opção Criar um modelo de execução._

  1. Configurar o modelo de execução

Será aberta uma nova janela, onde iremos criar um template. Vamos definir as seguintes configurações do template:

  • Nome: coloquei como TemplateTeste

  • Imagem de aplicação de sistema operacional: selecione a Ubuntu Server 24.04 LTS

  • Tipo de instância: t2.micro

  • Par de chaves: caso você tenha feito o tutorial de como criar uma EC2 (e ainda tiver o arquivo .pem gerado), você pode selecionar a mesma chave criada. Se não tiver, crie uma nova.

  • Configurações de rede: marque "Criar grupo de segurança" e inclua as regras de segurança para abrir as portas para SSH, HTTP e HTTPS

  • Armazenamento: não altere nada

Mais abaixo, clique em "Detalhes avançados". Em Dados do usuário insira o seguinte script:

#!/bin/bash
sudo apt update -y
sudo apt install -y apache2
sudo systemctl start apache2
sudo systemctl enable apache2
echo "`<h1>` Ola mundo! Este e o servidor: $(hostname -f)`</h1>`" | sudo tee /var/www/html/index.html > /dev/null

P.S.: Em outros tutoriais, esse script nos será útil.

E clique em Criar modelo de execução.

  1. Criando o grupo de Auto Scaling

Retorne a página do Auto Scaling e selecione o template criado. Clique em  Próximo_****

Em Rede, vamos marcar todas as Zonas de Disponibilidade (AZs). Como eu estou utilizando a região de Ohio (us-east-2), selecionei as três AZs referentes a essa região.

Depois, clique em  Próximo_.

Como não vamos definir nenhum balanceador de carga, clique novamente em  Próximo_****

  1. Defina as configurações de escalabilidade

Esse passo aqui é muito importante, pois vamos definir qual é a quantidade mínima de instâncias necessárias para a nossa aplicação rodar.

  • Capacidade desejada: 3
  • Capacidade mínima desejada: 2
  • Capacidade máxima desejada: 4

Para este tutorial, não vamos definir nenhuma política de manutenção de instâncias. Portanto, desça até ao final da página.

  1. Rever e criar grupo

Em seguida, clique em Pular para a revisão e depois clique em Criar grupo do Auto Scaling

Se deu tudo certo, o grupo foi criado, conforme imagem:

  1. Verificar as instâncias

Ao criar o grupo, automaticamente as instâncias são criadas. Você pode ir até ao painel da EC2 e ver que temos três instâncias em execução (cada uma em uma AZ diferente).

Agora, vamos deletar duas instâncias para ver o que acontece - lembre-se de confirmar a exclusão.

Em seguida, clique no ícone de loading para atualizar a página. Agora temos somente uma instância rodando...

Como nossa capacidade mínima foi definida para duas instâncias, observe que ao deletarmos duas do nosso grupo, imediatamente outra instância já é iniciada. E em poucos minutos ela já está em execução:

Essa é a mágica do Auto Scaling.

  1. Limpando o ambiente

Agora que já vimos como o Auto Scaling funciona, vamos limpar o ambiente. Se você tentar excluir as instâncias diretamente pelo painel do EC2, elas irão retornar tal qual um morto-vivo em um filme de terror...

Por isso, antes de excluir a instância, precisamos deletar o Grupo de Auto Scaling:

Confirme a exclusão do grupo:

Por padrão, todas as instâncias do grupo também serão deletadas. Você também pode apagar o modelo de execução (template) criado.

Bons estudos!

Documentação

Criando uma instância EC2 na AWS

· 5 min para ler
Ludmila Silva
Cloud & DevOps Engineer

Um dos serviços mais famosos da AWS é o Amazon Elastic Compute Cloud, popularmente conhecido como EC2. Ele disponibiliza uma capacidade computacional escalável sob demanda, reduzindo os cursos de hardware e permitindo implantar e testar soluções em poucos cliques.

Mais do que um simples servidor, o EC2 permite:

  • Criar instâncias
  • Armazenar dados em volumes virtuais (EBS - Elastic Block Store)
  • Distribuir carga de trabalho (ELB - Elastic Load Balance)
  • Escalar o serviço de acordo com a demanda (ASG - Auto scaling group)

Passo a passo

  1. Acesse a console da AWS e pesquise por EC2

  1. Clique no botão "Executar instância"

  1. Escolha um nome para a sua instância

Não tem muito segredo. No exemplo, escolhi o nome genérico de "instancia-teste".

  1. Escolha dentre as Imagens de aplicação e sistema operacional (AMI)

Para o nosso tutorial, vamos escolher o Sistema Ubuntu Server 24.04 LTS. Mas você pode escolher outro sistema operacional que preferir.

Note, no entanto, que a imagem selecionada deve ser qualificada para o nível gratuito da AWS - afinal, não queremos cobranças, certo?

  1. Em Tipo de instância, selecione a t2.micro

  1. Logo abaixo, em Par de Chaves, clique em Criar novo par de chaves

Será aberta uma janela pop-up para que você defina as configurações da chave SSH:

  • Um nome para o par de chaves
  • Tipo: RSA
  • Formato: .pem

Por fim, clique no botão Criar par de chaves. Será feito um download automático do arquivo no formato .pem. Guarde bem esse arquivo.

  1. Em seguida, em Configurações de Rede, clique em "Editar"

Certifique-se de que a opção Criar grupo de segurança esteja marcada.

Criando Grupos de Segurança

Os grupos de segurança (Security groups) atuam como uma espécie de Firewall, controlando o tráfego de entrada e saída de uma instância do Amazon EC2.

Por padrão, um grupo de segurança nega todo o tráfego de entrada e permite todo o tráfego de saída.

Para o nosso laboratório, vamos permitir os seguintes acessos:

  • SSH, pela porta 22
  • HTTP, pela porta 80
  • HTTPS, pela porta 443

Para isso, logo abaixo da opção "Criar grupo de segurança", altere o Nome do grupo de segurança para um nome de sua preferência (eu coloquei Sg-teste mesmo).

Como a regra para o protocolo SSH já aparece, você manter exatamente do jeito que está e clicar no botão Adicionar regra de grupo de segurança:

Em seguida, selecione:

  • Tipo: HTTP
  • Tipo de origem: Qualquer lugar

E depois clique novamente em Adicionar regra de grupo de segurança.

Selecione o tipo HTTPS e a origem qualquer lugar. E pronto, seu Grupo de segurança está criado.

  1. Na mesma página, mais abaixo em "Configurar armazenamento", mantenha o padrão de 1 volume com 8 GiB.

  1. Execute a instância

No seu lado direito, há um resumo das configurações da instância. Verifique se está tudo certo e clique em Executar instância

Voilá, instância criada com sucesso! Você pode ver informações da instância no painel do EC2.

Para validar, vamos fazer um acesso a essa instância e brincar um pouquinho.

Acessando a instância

Nesse momento, podemos usar duas formas para acessar a instância:

  • Pela console, via Instance connect;
  • Ou pelo terminal, usando a chave SSH criada.
  1. Para acessar via Instance connect, clique no botão "Conectar" do lado direito do painel da instância.

Há um aviso dizendo que a porta SSH está aberta, mas ignore (vamos tratar dessas questões de segurança em outros tutoriais).

Desça na página e clique no botão Conectar:

Será aberta uma nova janela no navegador, conforme imagem:

Para testar, digite o comando pwd. Você pode também usar os comandos:

### Atualizar os pacotes
sudo apt update

## Listar o conteúdo do diretório com detalhes
ls -lha

## Instalar o Apache
sudo apt install apache2 -y
  1. Outra forma de acessarmos é pelo terminal, usando a chave SSH criada anteriormente (aquela mesmo que você fez o download)

Primeiro, vamos precisar do IP público da instância. Você irá encontrar o IP no painel da instância, tal qual como no exemplo:

Copie o IP da sua instância.

Em seguida, vá até o local em que sua chave foi baixada no seu computador, abra um terminal e execute o comando:

ssh -i nome_da_chave.pem ubuntu@ip_publico_da_instancia

Vai ficar assim, como na imagem:

Se a mensagem acima apareceu para você, então conseguiu se conectar com sucesso a sua instância EC2. Você pode testar comandos, instalar pacotes e brincar um pouco.

Ao final, lembre-se de limpar o seu ambiente - isso é, excluir sua instância. No painel EC2 na AWS, clique em Estado da instância:

Depois, clique em Encerrar (excluir) instância"._ Uma janela de confirmação será aberta, clique em "_Encerrar (excluir).

Pronto! Sua instância será encerrada.

Bons estudos!

Documentação