Você está na página 1de 33

–––

Amazon Web Services

Antonio Lopes Jr AWS


Sumário
1 Introdução .................................................................................................................2

1.1 Pré-requisitos.......................................................................................................2

2 DynamoDB ................................................................................................................3

3 Identity and Access Management .............................................................................6

3.1 Criando Política de Acesso ..................................................................................6

3.2 Criando Regra de Acesso ..................................................................................10

4 API Gateway ...........................................................................................................13

4.1 Criando API Gateway ........................................................................................13

4.2 Método Post.......................................................................................................15

4.3 Método Get ........................................................................................................19

4.4 Método Get com ID............................................................................................24

4.5 Método Put ........................................................................................................26

4.6 Método Delete ...................................................................................................27

4.7 Publicando a API Gateway ................................................................................28

4.8 Utilizando a API Gateway ..................................................................................29

5 Referências Bibliográficas.......................................................................................32
1 INTRODUÇÃO
Quando mencionamos desenvolvimento de aplicações, seja webservices para
disponibilização de serviços via web, seja aplicativo para dispositivos móveis, ou
qualquer outro tipo de aplicação, quase sempre necessitamos de uma infraestrutura para
hospedar nossos serviços como, por exemplo, nossa aplicação web em Java ou em .Net,
banco de dados, etc.

O Amazon Web Services (AWS) é uma solução bem interessante que


oferece uma série de serviços de infraestrutura. São serviços que vão desde deployment
de sua aplicação web escrita em Java, .Net, Node.js, etc., serviços de armazenagem
(SQL, NoSQL, etc.), até a disposição de acessos aos dados armazenados nos bancos
SQL ou NoSQL através de serviços. São mais de 50 serviços que o AWS fornece.

No entanto, neste artigo iremos focar na utilização de quatro serviços do AWS:


vamos configurar a autenticação utilizando o Amazon Cognito; vamos configurar um
serviço no DynamoDB para armazenar dados em banco de dados; configurar uma regra
de permissão para acessarmos os dados do DynamoDB; e por último, vamos
disponibilizar esses dados em forma de serviços RESTful.

1.1 PRÉ-REQUISITOS
Precisaremos de dois requisitos para esse artigo. O primeiro requisito, e o
requisito mais importante, é criar uma conta no AWS através do site
https://aws.amazon.com. Tarefa simples, mas que requer um cartão de crédito válido.
O segundo é instalar o aplicativo Postman disponível em https://www.getpostman.com.
Esse aplicativo nos auxiliará na configuração das requisições http’s. O Postman também
pode ser instalado como extensão do navegador Chrome, da Google.
2 DYNAMODB
Amazon DynamoDB é um serviço de banco de dados NoSQL que oferece
um desempenho rápido com escalabilidade contínua. Podemos criar tabelas no
DynamoDB, armazenar e recuperar qualquer quantidade de dados que atende a
qualquer nível de tráfego. O DynamoDB espalha instâncias do banco de dados
automaticamente em um número suficiente de servidores para lidar com a capacidade
de solicitações configurada pelo administrador, provendo um desempenho consistente e
rápido.

Embora já tenhamos uma ideia inicial do que o Amazon DynamoDB é, esse


bando de dados NoSQL fornece muitos recursos que não iremos abordar neste artigo.
Já que é artigo hands-on, vamos começar!

1. Acesse o link https://aws.amazon.com e realize o login através do botão


“Sign In to the Console” localizado no canto supeior direito da página;
2. Após realizar o login, na input de localização de serviços com o título “AWS
services”, digite “Dyn”;

Figura 2.1 – Localizando serviço DynamoDB

3. Selecione a opção DynamoDB. Neste ponto, seremos levados ao


Dashboard do DynamoDB conforme apresenta a Figura 2.2 – Dashboard
do DynamoDB;
Figura 2.2 – Dashboard do DynamoDB

4. Na sequência, vamos clicar no botão “Create table”;


5. No formulário apresentado temos que preencher duas inputs. A primeira é
a input “Table name” que vamos preencher com “IESBTask”. A segunda
é a input “Primary key” que vamos preencher com “taskId”. Vamos clicar
no botão “Create” localizado no canto inferior direito;

Figura 2.3 – Formulário de criação de tabela

Pronto! Criamos nosso banco de dados DynamoDB está criado. Vamos


observar a Figura 2.4 – Overview da tabela IESBTask ao concluirmos a criação da tabela
no DynamoDB.
Figura 2.4 – Overview da tabela IESBTask
3 IDENTITY AND ACCESS MANAGEMENT
AWS Identity and Access Management (IAM) é um serviço web para
controlar, de forma segura, o acesso aos serviços AWS. Utilizando o IAM, podemos
gerenciar usuários, credenciais de segurança como access keys, e gerenciar
permissões que controlam quais recursos do AWS podem ser acessados.

No capítulo DynamoDB criamos nossa tabela “IESBTask”. Neste capítulo


iremos criar regras de acesso para gravar, atualizar, excluir e consultar dados na tabela
“IESBTask”.

3.1 CRIANDO POLÍTICA DE ACESSO


Para concedermos permissão ao um usuário, grupo, regra e serviços, criamos
uma política. No nosso caso, para permitir acesso ao banco de dados DynamoDB
precisamos criar uma política para esse acesso. E é isso que vamos fazer na sequência.

1. Acesse o link https://aws.amazon.com e realize o login através do botão


“Sign In to the Console” localizado no canto supeior direito da página.
Caso nosso usuário ainda esteja autenticado, clique no ícone do AWS
localizado no canto superio esquerdo, ao lado da palavra Service;
2. Após realizar o login, na input de localização de serviços com o título “AWS
services”, digite “IAM”;

Figura 3.1 – Localizando serviço IAM

3. Selecione a opção IAM. Neste ponto, seremos levados ao Dashboard do


IAM conforme apresenta a Figura 3.2 – Dashboard do IAM;
Figura 3.2 – Dashboard do IAM

4. Vamos criar uma política de acesso clicando na opção “Policies”


localizada no menu lateral e, posteriormente, clicando no botão “Create
policy”;

Figura 3.3 – Políticas de segurança

5. Após clicarmos no botão “Create policy”, vamos clicar no botão “Chose


a service” e selecionar o serviço DynamoDB;
Figura 3.4 – Criando política de acesso

6. Na seção Actions, vamos expandir as subseções Read e Write e


selecionar as opções GetItem, Query, Scan, DeleteItem, PutItem e
UpdateItem;

Figura 3.5 – Selecionando Actions


7. Na seção Resources vamos selecionar a opção All resources e clicar no
botão Review policy;

Figura 3.6 – Revendo a política

8. No formulário seguinte, vamos preencher o Name e clicar no botão Create


policy. APIPolicy

Figura 3.7 – Finalizando criação da política de acesso

Pronto! Criamos a política de acesso.


3.2 CRIANDO REGRA DE ACESSO
Uma regra no IAM é similar a um usuário, ou seja, uma regra é uma identidade
com política de permissão de acesso. No entanto, em vez de estar associada a um
usuário, uma regra é assumida por qualquer usuário, não possui credencial associada a
ela o que torna o acesso público. No passo-a-passo a seguir, iremos criar uma regra e
utilizar a política criada no subcapítulo Criando Política de Acesso.

1. Vamos acesso nosso AWS Console. Vamos repetir os passos 1 ao 3


descritos no subcapítulo Criando Política de Acesso;
2. Vamos criar uma regra clicando na opção “Role” localizada no menu lateral
e, posteriormente, clicando no botão “Create new role”;

Figura 3.8 – Regras de acesso

3. Após clicarmos no botão “Create new role”, selecione a opção “AWS


Service” e na sequência, vamos localizar a opção “API Gateway” e clicar
no botão “Next: Permissions”;

Figura 3.9 – Criando regra de acesso


4. Na próxima tela, vamos apenas clicar no botão “Next: Review”;
5. No formulário seguinte vamos preencher somente a input “Role name”
com “APIRole” e clicar no botão “Create role”;

Figura 3.10 – Criando regra de acesso

6. Na listagem das regras, vamos localizar a regra “APIRole” e clicar na


regra;

Figura 3.11 – Selecionado regra de acesso

7. Vamos clicar no botão “Attach Policy”;


Figura 3.12 – Adicionando política de acesso

8. Precisamos localizar a política “APIPolicy”. No input “Filter”, vamos


preencher com “APIPol”. Vamos selecionar a política “APIPolicy” e clicar
no botão “Attach Policy”;

Figura 3.13 – Selecionando política de acesso

Pronto! Nossas políticas e regras estão criadas. Vamos agora configurar os


serviços.
4 API GATEWAY
Amazon API Gateway é um serviço AWS que permite a nós,
desenvolvedores, a criar, publicar e monitorar uma API. Em termos prático, API Gateway
nos permite criar, configurar e hospedar API RESTful para permitir que aplicações
acessem serviços. Podemos criar APIs que acessam serviços do AWS como, por
exemplo, DynamoDB, assim como outro serviço web de terceiros.

Vamos praticar esse conceito e neste capítulo iremos criar uma API Gateway para
disponibilizar o acesso ao DynamoDB criado no capítulo DynamoDB.
. Vamos dividir esse capítulo em sete subcapítulos: criar API Gateway; criar
o método Post; criar os métodos Get; criar o método Put; criar o método Delete; publicar
a API Gateway; e por último, utilizar a API Gateway.

4.1 CRIANDO API GATEWAY


Vamos ao passo-a-passo para criar nossa API Gateway.

1. Acesse o link https://aws.amazon.com e realize o login através do botão


“Sign In to the Console” localizado no canto supeior direito da página.
Caso nosso usuário ainda esteja autenticado, clique no ícone do AWS
localizado no canto superio esquerdo, ao lado da palavra Service;
2. Após realizar o login, na input de localização de serviços com o título “AWS
services”, digite “API”;

Figura 4.1 – Localizando serviço IAM


3. Selecione a opção API Gateway. Neste ponto, seremos levados ao
Dashboard da API Gateway conforme apresenta a Figura 4.2 – Dashboard
da API Gateway;

Figura 4.2 – Dashboard da API Gateway

4. Vamos criar uma API Gateway clicando no botão “Create API”;


5. Seremos levados ao formulário apresentado na Figura 4.3 – Criando API
Gateway. Vamos selecionar a opção “New API”, preencher a input “API
Name” com “IESBApi” e clicar no botão “Create API”;

Figura 4.3 – Criando API Gateway

Pronto! Se tudo que fizemos estiver correto, iremos ver uma tela semelhante
a apresentada Figura 4.4 – API Gateway criada.
Figura 4.4 – API Gateway criada

4.2 MÉTODO POST


Vamos começar a disponibilizar nosso serviço configurando o método POST.

1. Dando continuidade ao capítulo anterior, localize o botão “Actions” e


vamos selecionar a opção “Create Resource”;

Figura 4.5 – Criando o método Post

2. Agora, vamos criar o método POST clicando no botão “Actions”, mas


dessa vez, vamos selecionar a opção “Create Method”;
3. Quando clicarmos na opção “Create Method”, um input será apresentado.
Vamos clicar neste input e selecionar a opção POST e, na sequência,
clicar no botão de check ao lado do input. Vamos observar a Figura 4.6 –
Adicionando o método POST;
Figura 4.6 – Adicionando o método POST

4. No formulário apresentado na sequência, vamos preencher da seguinte


forma:
a. No input “Integration Type” vamos selecionar a opção “AWS
Service”;
b. No input “AWS Region” vamos selecionar a mesma região utilizada
no DynamoDB. No nosso caso “as-east-1”;
c. No input “AWS Service” vamos selecionar o serviço “DynamoDB”;
d. No input “HTTP Method” vamos selecionar a opção “POST”;
e. No input “Action” vamos preencher com “PutItem”;
f. No input “Execution role” vamos preencher com o ARN da regra
APIRole que criamos no capítulo Criando Regra de Acesso;
g. Por último, vamos clicar no botão “Save”.

Figura 4.7 – Configurando o método POST

Neste ponto, se tudo estiver correto iremos ver uma tela semelhante a Figura
4.8 – Método POST criado.
Figura 4.8 – Método POST criado

5. Com nosso método POST criado, vamos clicar na opção “Integration


Request”;
6. Vamos rolar a tela a seguir até encontrarmos a opção “Body Mapping
Templates” e na sequência, expandir a opção. Vamos preencher da
seguinte maneira:
a. No input “Request body passthrough” vamos selecionar a opção
“When there are no templates defined (recommented)”;
b. Vamos clicar na opção “Add mapping template” e preencher a
input “Content-Type” com “application/json”.
Figura 4.9 – POST Mapping Tempate

7. Na sequência, vamos clicar no “Content-Type” que acabamos de


preencher. A Figura 4.10 – Mapeando Template POST será apresentada;

Figura 4.10 – Mapeando Template POST


8. Agora, vamos preencher a input “Generate template” com o json
disponível na Tabela 4.1 – Json POST Template Mapping e clicar no botão
“Save”.

JavaScript
{
"TableName": "IESBTask",
"Item": {
"taskId": { "S": "$input.path('$.taskId')" },
"resume": { "S": "$input.path('$.resume')" },
"title": { "S": "$input.path('$.title')" },
"isDone": { "BOOL": "$input.path('$.isDone')" }
}
}
Tabela 4.1 – Json POST Template Mapping

Nosso método POST para inserir dados está pronto. Agora vamos para os
métodos GETS.

4.3 MÉTODO GET


Agora, vamos preparar a consulta em nossa tabela IESBTask no DynamoDB.

1. Vamos criar o método GET clicando no botão “Actions” e vamos


selecionar a opção “Create Method”;
2. Quando clicarmos na opção “Create Method”, um input será apresentado.
Vamos clicar neste input e selecionar a opção “GET” e, na sequência,
clicar no botão de “check” ao lado do input. Vamos observar a Figura 4.11
– Adicionando o método GET;

Figura 4.11 – Adicionando o método GET

3. No formulário apresentado na sequência, vamos preencher da seguinte


forma:
a. No input “Integration Type” vamos selecionar a opção “AWS
Service”;
b. No input “AWS Region” vamos selecionar a mesma região utilizada
no DynamoDB. No nosso caso “as-east-1”;
c. No input “AWS Service” vamos selecionar o serviço “DynamoDB”;
d. No input “HTTP Method” vamos selecionar a opção “POST”;
e. No input “Action” vamos preencher com “Scan”;
f. No input “Execution role” vamos preencher com o ARN da regra
APIRole que criamos no capítulo Criando Regra de Acesso;
g. Por último, vamos clicar no botão “Save”.

Figura 4.12 [Configurando o método GET]

Neste ponto, se tudo estiver correto iremos ver uma tela semelhante a Figura
4.13 – Método GET criado.
Figura 4.13 – Método GET criado

4. Com nosso método GET criado, vamos clicar na opção “Integration


Request”;
5. Vamos rolar a tela a seguir até encontrarmos a opção “Body Mapping
Templates” e na sequência, expandir a opção. Vamos preencher da
seguinte maneira:
a. Na input “Request body passthrough” vamos selecionar a opção
“When there are no templates defined (recommented)”;
b. Vamos clicar na opção “Add mapping template” e preencher a
input “Content-Type” com “application/json”.
Figura 4.14 – GET Mapping Tempate

6. Na sequência, vamos clicar no “Content-Type” que acabamos de


preencher. A será apresentada Figura 4.15 – Mapeando Template GET;

Figura 4.15 – Mapeando Template GET


7. Agora, vamos preencher a input “Generate template” com o json
disponível na Tabela 4.2 – JavaScript GET Template Mapping e clicar no
botão “Save”.

JavaScript
{
"TableName": "IESBTask",
"ReturnConsumedCapacity": "TOTAL"
}
Tabela 4.2 – JavaScript GET Template Mapping

8. Na sequência, vamos rolar a tela para cima até encontrarmos a opção


“Method Execution”. Ao encontrar essa opção, vamos clicar nela;

Figura 4.16 – Retornando o Method Execition Dashboard

9. Vamos clicar na opção “Integration Response”;


10. Vamos expandir o “Method response status” igual a 200 e expandir a
opção “Body Mapping Templates”;
11. No input “Content-Type” vamos clicar no item “aplication/json”;
Figura 4.17 – Mapeando o Template da resposta

12. Agora, vamos preencher a input “Generate template” com o json


disponível na Tabela 4.3 – Json GET Template Mapping da resposta e
clicar no botão “Save”.

JavaScript
#set($inputRoot = $input.path('$'))
[
#foreach($item in $inputRoot.Items)
{
"taskId": "$item.taskId.S",
"title": "$item.title.S",
"resume": "$item.resume.S",
"isDone": $item.isDone.BOOL
}#if($foreach.hasNext),#end

#end
]
Tabela 4.3 – Json GET Template Mapping da resposta

Pronto! Nosso método GET para consultar todos os registros está concluído.

4.4 MÉTODO GET COM ID


Agora que temos nossos métodos POST e GET, vamos disponibilizar mais
alguns métodos passando o ID como parâmetro.
1. Na lista de “Resources”, selecione a opção “/tasks”. Localize o botão
“Actions” e vamos selecionar a opção “Create Resource”;

Figura 4.18 – Lista de Resources

2. Veremos uma tela semelhante a Figura 4.19 – Criando o método GET com
pesquisa por ID. Vamos preencher da seguinte maneira:
a. No input “Resource Name” vamos preencher com “Task by ID”;
b. No input “Resource Path” vamos preencher com “taskID”;
c. Vamos clicar no botão “Create Resource”.

Figura 4.19 – Criando o método GET com pesquisa por ID

3. Agora, vamos criar o método POST clicando no botão “Actions”, mas


dessa vez, vamos selecionar a opção “Create Method”.
Neste ponto, já temos o nosso caminho que passaremos o código da tarefa
como parâmetro. Como esse passo-a-passo é bem semelhante ao passo-a-passo
apresentado no capítulo Método Get, vamos repetir o processo do capítulo Método Get,
mas a seguir apresentaremos somente o que temos que configurar de específico.

4. Vamos repetir os passos 2 e 3 do capítulo Método Get. No entanto, no


passo 3, vamos preencher a input “Action” com “Query”;
5. Vamos repetir os passos 4, 5, 6 e 7 do capítulo Método Get. Mas desta
vez, no passo 7, vamos preencher a input “Generate template” com o json
disponível na Tabela 4.4 – JavaScript GET Template Mapping com
condição e clicar no botão “Save”.

JavaScript
{
"TableName": "IESBTask",
"PrimaryKey": "taskId",
"KeyConditionExpression": "taskId = :v1",
"ExpressionAttributeValues": {
":v1": {
"S": "$input.params('taskID')"
}
}
}
Tabela 4.4 – JavaScript GET Template Mapping com condição

Pronto! Nosso método GET para consultar uma tarefa específica está
concluído.

4.5 MÉTODO PUT


Os passos para criar o método PUT também é bem semelhante ao passo-a-
passo para criar o método GET apresentado no capítulo Método Get.

1. Vamos repetir os passos 2 e 3 do capítulo Método Get. No entanto, no


passo 3, vamos preencher a input “Action” com “UpdateItem”;
2. Vamos repetir os passos 4, 5, 6 e 7 do capítulo Método Get. Mas desta
vez, no passo 7, vamos preencher a input “Generate template” com o json
disponível na Tabela 4.5 – JavaScript PUT Template Mapping com
condição e clicar no botão “Save”.
JavaScript
{
"TableName": "IESBTask",
"Key": {
"taskId": {
"S": "$input.params('taskID')"
}
},
"UpdateExpression": "set title = :title, resume = :resume, isDone = :isDone",
"ExpressionAttributeValues": {
":title": { "S": "$input.path('$.title')" },
":resume": { "S": "$input.path('$.resume')" },
":isDone": { "BOOL": "$input.path('$.isDone')" }
},
"ReturnValues": "UPDATED_NEW"
}

Tabela 4.5 – JavaScript PUT Template Mapping com condição

Pronto! Nosso método PUT para atualizar uma tarefa específica está
concluído. No entanto, neste caso, não precisamos repetir os passos 9, 10, 11 e 12 do
capítulo Método Get.

4.6 MÉTODO DELETE


Assim como o método PUT, os passos para criar o método DELETE também
é bem semelhante ao passo-a-passo para criar o método GET apresentado no capítulo
Método Get.

1. Vamos repetir os passos 2 e 3 do capítulo Método Get. No entanto, no


passo 3, vamos preencher a input “Action” com “UpdateItem”;
2. Vamos repetir os passos 4, 5, 6 e 7 do capítulo Método Get. Mas desta
vez, no passo 7, vamos preencher a input “Generate template” com o json
disponível na Tabela 4.6 – JavaScript DELETE Template Mapping com
condição] e clicar no botão “Save”.

Json
{
"TableName": "IESBTask",
"Key": {
"taskId": {
"S": "$input.params('taskID')"
}
},
"ConditionExpression": "attribute_not_exists(Replies)"
}
Tabela 4.6 – JavaScript DELETE Template Mapping com condição]

Pronto! Nosso método DELETE para excluir uma tarefa específica está
concluído.

4.7 PUBLICANDO A API GATEWAY


Agora que criamos o nosso acesso RESTful à tabela IESBTask, temos que
torná-la pública. Então, vamos aos passos para publicar nossa API.

1. Em “Resource”, selecione a opção “/”, clique no botão “Actions” e


selecione a opção “Deploy API”;

Figura 4.20 – Publicando a API

2. Vamos visualizar um formulário semelhante ao apresentado na Figura 4.21


– Finalizando a publicação. Vamos preencher da seguinte forma:
a. No input “Deployment stage” vamos selecionar a opção “[New
Stage]”;
b. No input “Stage name” vamos preencher com “IESBApi”;
c. Por último, clique no botão “Deploy”.
Figura 4.21 – Finalizando a publicação

Pronto! Em destaque na Figura 4.22 – API publicada podemos observar a url


para acessar nosso RESTful. No próximo capítulo, vamos aprender a executar os
nossos métodos RESTful no Postman.

Figura 4.22 – API publicada

4.8 UTILIZANDO A API GATEWAY


Para finalizar nosso artigo, vamos aprender a executar nossos métodos
RESTful no Postman.

1. Em nossa API publicada, vamos acessar a aba “Export”;


Figura 4.23 – Exportando API para Postman

2. Selecione todo o json disponível no input destacado na Figura 4.23 –


Exportando API para Postman e salve em um arquivo json;
3. Com o Postman aberto clique no botão “Import”;

Figura 4.24 – Importando o arquivo json da API

4. Na sequência, clique no botão “Choose Files” e selecione o arquivo json


exportado no item 2.
Figura 4.25 – Importando o json da API

Pronto! Esse passo-a-passo traz todas os métodos do nosso RESTful


configurados para executarmos. Precisamos apenas realizar alguns ajustes nas
requisições como, por exemplo, alterar o parâmetro ou o conteúdo do corpo, que
conseguiremos ver o resultado.

Figura 4.26 – Métodos RESTful importado no Postman


5 REFERÊNCIAS BIBLIOGRÁFICAS
AWS Docs. Amazon Cognito: Developer Guide. Disponível em
<https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-dg.pdf>. Acesso
em 28 de Abril de 2018.

VYAS, Uchit. Mastering AWS Development: develop and migrate your enterprise
application to the Amazon Web Services plataform. Editora Packt Publishing Limited,
Primeira Edição, Junho de 2015, 416 págnias.

AWS Docs. AWS Identity and Acces Management: User Guide. Disponível em
<http://docs.aws.amazon.com/IAM/latest/UserGuide/iam-ug.pdf>. Acesso em 23 de
Agosto de 2017.

AWS Docs. Amazon API Gateway: Developer Guide. Disponível em


<http://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-dg.pdf>.
Acesso em 23 de Agosto de 2017.

Você também pode gostar