Skip to content

Latest commit

 

History

History
305 lines (167 loc) · 11.9 KB

File metadata and controls

305 lines (167 loc) · 11.9 KB

Resumo

AWS: Realizei os cursos de Sales Acredditation, que abrange conceitos básicos da nuvem, seu valor comercial e como lidar com objeções de clientes. Também realizei o curso de Cloud Economics, que lista os benefícios econômicos que os cliente tem com o uso da Nuvem. Também realizei as 12 tarefas do AWS Cloud Quest: Cloud Practitioner, que demonstram de forma prática como usar alguns dos diversos serviços da AWS.

AWS S3: Aprendi como armazenar e manipular arquivos em um bucket do S3, e como ele pode ser utilizado com fonte ou destino de vários serviços da AWS.

AWS Athena: Aprendi como criar um banco de dados e tabelas e populá-los com dados salvos no S3. Além de salvar os resultados das queries tambem no S3.

AWS Lambda: Aprendi como criar funções lambda e como utilizar layers para utilizar bibliotecas personalizadas, a partir de um arquivo zip salvo no S3.

boto3: Aprendi como conectar e manipular os serviços AWS com a bibliteca boto3, diretamente de um script Python.

Exercícios

1- Lab AWS S3

O objetivo do exercício é explorar as capacidades do AWS S3, serviço de armazenamento da AWS. O serviço armazenará um site estático, que disponibiliza um arquivo csv para download.

🔗Evidências da execução

2- Lab AWS Athena

O objetivo do exercício é utilizar o serviço para criar um banco de dados, que terá uma tabela para armazenar os dados do csv salvo no bucket do primeiro exercício, e executar uma consulta.

🔗Evidências da execução

3- Lab AWS Lambda

O objetivo do exercício é utilizar o serviço para criar uma função que processa os dados do csv salvo no bucket, utilizando uma layer de uma imagem docker criada localmente e armazenada em um bucket do S3.

🔗Evidências da execução

4- Lab AWS Limpeza

O objetivo do exercício é excluir os dados relacionados aos exercícios anteriores, para não gerar custos desnecessários.

🔗Evidências da execução

Evidências

Lab AWS S3

Etapa 1 - Criar um bucket

No serviço S3, criei um bucket chamado site1.com, na região us-east-1.

Etapa 2 - Habilitar hospedagem de site estático

Acessei o bucket criado, navegando até a opção Static website hosting na aba propriedades e cliquei em editar. Cliquei na opção para ativar o hosting, e defini o nome do documento raiz do site (index.html), e o de erro (error.html).

Após salvar as configurações, copiei o endpoint do site e testei no navegador.

Etapa 3 - Editar as configurações do Bloqueio de acesso público

Acessei o bucket, navegando até a opção Block public access na aba permissões e cliquei em editar. Desativei a opção de bloqueio de acesso público e cliquei em salvar.

Etapa 4 - Adicionar política de bucket que torna o conteúdo do bucket publicamente disponível

Na aba permissões do bucket, naveguei até Bucket Policy e cliquei em editar. Colei o código disponibilizado e modifiquei com o nome do bucket, e cliquei em salvar.

Etapa 5 - Configurar um documento de índice

Baixei os arquivos index.html e nomes.csv disponibilizados, salvando o arquivo csv dentro de uma pasta chamada dados, e fiz o upload de ambos para o bucket.

Etapa 6 - Configurar documento de erros

Criei um arquivo de erros, com o mesmo nome que atribuí na etapa 2 (erros.html), e fiz o upload para o bucket.

Etapa 7 - Testar o endpoint do site

Para testar o site, copiei novamente o endereço do endpoint da etapa 3, desta vez com o site acessível.

Clicando no link para baixar o csv, o arquivo é baixado


Lab AWS Athena

Etapa 1 - Configurar Athena

Primeiramente, chequei se o arquivo csv do exercício 1 está no bucket. Também analisei o arquivo e os seus dados.

Criei uma pasta dentro do bucket chamada queries, para armazenar os resultados das consultas.

Acessei o serviço Athena e cliquei em configurações. Adicionei o caminho para a pasta queries no bucket do S3.

Etapa 2 - Criar banco de dados

Acessei o editor de consultas do Athena, e executei o código para criar um banco de dados chamado meubanco. Depois, selecionei o banco criado na aba "Database" à esquerda.

Etapa 3 - Criar uma tabela

Para criar uma tabela, utilizei o seguinte comando.

CREATE EXTERNAL TABLE IF NOT EXISTS meubanco.nomes ( 
    nome STRING, 
    sexo STRING, 
    total INT, 
    ano INT
) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
WITH SERDEPROPERTIES ( 
    'serialization.format' = ',', 
    'field.delim' = ',' 
) 
LOCATION 's3://site1.com/dados/'

A tabela possui os mesmos campos do csv salvo no bucket. A cláusula LOCATION busca o arquivo no bucket e preenche a tabela com os dados.

Para testar os dados, utilizei a consulta disponibilizada.

select nome from nomedobanco.nomedatabela where ano = 1999 order by total limit 15;

O resultado da consulta fica salvo como um csv na pasta queries do bucket. Acessando, o resultado é esse:

🔗CSV

A consulta proposta pede para listar os 3 nomes mais usados em cada década desde o 1950 até hoje. O código é o seguinte:

SELECT decada, nome, sexo, "total na decada"
FROM (
    SELECT 
        (ano - ano % 10) AS decada,
        nome,
        sexo,
        SUM(total) AS "total na decada",
        ROW_NUMBER() OVER (PARTITION BY (ano - ano % 10) ORDER BY SUM(total) DESC) AS rank
    FROM meubanco.nomes
    WHERE ano >= 1950
    GROUP BY nome, sexo, (ano - ano % 10)
) ranked
WHERE rank <= 3
ORDER BY decada, rank;

Acessando a pasta queries no bucket, o resultado é esse:

🔗CSV


Lab AWS Lambda

Etapa 1 - Criar a função do Lambda

Acessei o serviço Lambda, e criei uma nova função chamada funcao1, especificando o Python 3.9 em "Runtime".

Etapa 2 - Construir o código

Acessei o editor de funções e alterei o código pelo que foi disponibilizado, para acessar o S3. Depos cliquei em Deploy para atualizar a função.

Criei um teste chamado teste1 para testar a função, obtendo o erro relacionado ao Lambda não possuir a biblioteca Pandas.

Etapa 3 - Criar uma Layer

Para criar uma layer e utilizar a biblioteca Pandas no Lambda, criei uma nova pasta local e um Dockerfile com o código disponibilizado, que utiliza uma imagem do linux específica da Amazon, instala o Python na versão 3.9 e comprime os dados. Executei o comando docker build -t amazonlinuxpython39 . para criar a imagem.

Executei docker run -it amazonlinuxpython39 bash para acessar o shell do container, e executei os comandos disponibilizados para criar a pasta python e a estrutura de diretórios.

Depois, executei pip3 install pandas -t . para baixar as bibliotecas e suas dependências para a pasta python criada anteriormente.

Depois, executei zip -r minha-camada-pandas.zip . para compactar os arquivos. Depois, listei os containers para descobrir o id, e o copiei para a máquina local.

Fiz o upload do arquivo compactado para um bucket no S3.

No serviço Lambda, criei a layer chamada PandasLayer, passando a URL de objeto do arquivo do S3. Especifiquei a arquitetura e a versão 3.9 do Python.

Etapa 4 - Utilizar a Layer

Na função Lambda, adicionei a Layer criada.

Para a função funcionar, precisei aumentar o tamanho da memória e o tempo limite da Lambda nas configurações. Aumentei a memória para 512 MB e o tempo limite para 10 segundos.

Com tudo configurado, testei novamente a função, dessa vez tendo o resultado esperado.


Lab AWS Limpeza

Passo 1

Excluí a função Lambda criada, e o Log Group e a Role dela.

Passo 2

Excluí a tabela e o banco de dados criados no Athena.

Passo 3

Excluí o arquivo zip criado para o exercício Lambda, e também o bucket em que estava armazenado.

Passo 4

Excluí os objetos relacionados ao site estático do Lab AWS S3, e também a pasta queries do Lab AWS Athena. Depois excluí o bucket onde os arquivos estavam armazenados.

Certificados

Certificados dos cursos AWS