O documento fornece uma visão geral de ferramentas e serviços da AWS para desenvolvedores, incluindo CLI, SDK, Elastic Beanstalk, API Gateway, Lambda, SNS, SQS, CodeCommit, CodeDeploy e CodePipeline.
3. • Outros serviços (não abordados):
• CloudFormation: Permite criar e gerenciar praticamente todos recursos da AWS,
inclusive automatizar o provisionamento de ambientes complexos usando
templates;
• Cognito: Autenticação de usuários;
• DynamoDB: Banco de dados NoSQL;
• Kinesis: Coleta de dados de streaming contínuo;
• Redshift: Armazenamento e consulta de dados na ordem de Petabytes (via
ODBC, JDBC);
• ElasticSearch: Um Elasticsearch gerenciado e escalável;
• ElasticCache: Cache em memória (memcached, Redis);
• EMR (Elastic Map Reduce): Processamento de enormes quantidades de dados -
Hadoop, Hive, Spark, Presto, HBase;
• OpsWorks: Chef na nuvem;
• SWF (Simple Workflow Service): Automatizador de processos, rastreador de
estados, e coordenador de tarefas;
4. CLI
CLI - Interface de linha de comando
“É uma ferramenta unificada para o gerenciamento
de seus serviços da AWS. Com apenas uma
ferramenta … você poderá controlar vários
serviços da AWS pela linha de comando e
automatizá-los usando scripts.”
Utiliza API REST sobre HTTPS
Referência: https://aws.amazon.com/pt/cli/
5. CLI
Requisitos:
1. Ter uma conta ativa na AWS;
2. Instalar a ferramenta CLI - MSI, pip, bundled
installer (zip + custom installer) -
http://docs.aws.amazon.com/cli/latest/userguide/i
nstalling.html;
3. Configurar CLI (Access Key, Secret Access Key,
região);
6. CLI
Configurando a CLI após a instalação
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]:
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
7. CLI
Configurando um perfil adicional
$ aws configure --profile user2
AWS Access Key ID [None]: AKIAIOSROAPN8EXAMPLE
AWS Secret Access Key [None]:
wJalrXUtnARMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
8. CLI
Configurando o perfil padrão
Linux / Mac / Unix
$ export AWS_DEFAULT_PROFILE=user2
Windows
> set AWS_DEFAULT_PROFILE=user2
9. CLI
Criando um Security Group
$ aws ec2 create-security-group --group-name
meu-sg --description "Meu security group”
{
"GroupId": "sg-903004f8"
}
13. SDK
Onde pode ser usado?
• Smartphones
• Smartwatches
• Tablets
• PCs
• Macs
• Browsers: Chrome (28.0+), Firefox (23.0+), Opera (17.0+), IE
(10.0+), Safari (5.1+), Android Browser (4.3+)
• Praticamente qualquer dispositivo com Windows, Linux/Unix, OS X,
iOS, Android
14. SDK
Várias linguagens de programação
• Java (inclusive Android)
• .NET
• Objective-C (iOS)
• JavaScript (browser)
• Node.js
• PHP
• Python
• Ruby
• Go
• C++ (developer preview)
15. SDK
Exemplo de instalação do SDK para Node.js
# apt-get install nodejs
$ npm install aws-sdk
https://nodejs.org/en/download/
https://www.npmjs.com
16. SDK
Criando um bucket no S3 e fazendo upload
de um arquivo
$ wget https://goo.gl/BxEaMB -O demo.js
$ node demo.js <bucket> <arquivo>
Mais exemplos em
http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-examples.html
18. Elastic Beanstalk
Como funciona?
1. Você cria uma aplicação no Beanstalk e especifica o tipo de
ambiente que ela deve rodar;
2. Faz upload de uma versão da aplicação em forma de bundle
(exemplo: J2EE seria um .war) para o Beanstalk;
3. Informa alguns dados sobre o ambiente (nome, URL);
4. Seleciona o tipo de instância e os serviços adicionais que
serão utilizados (RDS, etc);
5. Clica em Launch!
23. API Gateway
“Um serviço totalmente gerenciado que torna fácil publicar,
manter, monitorar, e proteger APIs em qualquer escala.”
Control: Permite você criar uma API RESTful para
mapear/expor funções do back-end. O back-end pode ser
outro serviço AWS, como Lambda, DynamoDB, ou uma
aplicação web existente;
Execution: Permite uma aplicação chamar/executar uma
API do back-end;
Referência:
http://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.htm
l
24. API Gateway
Algumas features suportadas:
• API staging
• API versioning
• API caching
• API quota
• API keys
• API Authorization
• Client certificates generation
• Request throttling
• API execution monitoring (estatísticas de latência, caching, erros, …)
• Native SDK generation: Android, JavaScript, iOS
• API import - incluindo Swagger - http://swagger.io
25. API Gateway
Etapas para criação de uma API:
1. Criar uma API;
2. Configurar o(s) método(s)
3. Configurar a integração que a API deve utilizar;
4. Se for necessário, configurar os mapeamentos de
requisição e/ou resposta;
5. Testar;
6. Fazer deploy!
29. Lambda
Uma plataforma que permite rodar códigos sem
você precisar provisionar ou gerenciar servidores.
Zero administração!
30. Lambda
Como funciona?
1. Depois de você fazer upload do seu código, é
criada uma função Lambda;
2. O serviço cuida de todo provisionamento e
gerência dos servidores que rodarão o código;
32. Lambda
Como pode ser usado?
A. Como um serviço orientado a eventos onde o
AWS Lambda executa seu código em resposta a
eventos, tais como alterações em um bucket do
S3 ou em uma tabela do DynamoDB;
B. Como um serviço que executa seu código em
resposta a requisições HTTP usando o API
Gateway ou chamadas de API feitas usando
AWS SDK;
33. Lambda
O que é gerenciado automaticamente?
• Manutenção dos servidores e sistemas operacionais;
• Alta disponibilidade;
• Provisionamento de capacidade;
• Escalonamento automático;
• Monitoramento;
• Logging;
34. Lambda
Quais as limitações?
• Não existe instância/servidor para você logar;
• Você não pode customizar o sistema
operacional;
35. Lambda
Você pode usar o Amazon S3 para acionar o AWS
Lambda para processar os dados imediatamente
após um upload. Por exemplo, você pode usar o
Lambda para miniaturizar imagens, transcodificar
vídeos, indexar arquivos, processar logs, validar
conteúdo, e agregar e filtrar dados em tempo real.
38. SNS
“Sistema de mensagens por push gerenciado e
altamente escalável.”
Suporta pushes para dispositivos Apple, Android,
Amazon FireOS, e Windows.
Também pode entregar mensagens para SQS, Lambda,
Email, SMS, e endpoints HTTP, HTTPS.
Mais informações em https://aws.amazon.com/pt/sns/
39. SNS
Principais APIs:
CreateTopic: Cria um tópico nomeado para onde as notificações podem ser
publicadas;
CreatePlatformEndpoint: Cria um endpoint para um dispositivo e aplicação mobile
em um dos serviços de Push Notification suportados, como GCM ou APNS. O valor
retornado pode ser usado para Publish ou Subscribe.
Publish: Publica uma mensagem no tópico informado para todos endpoints
associados;
Subscribe: Inicia o processo de inscrição em um endpoint enviando um pedido de
aprovação para o dono do endpoint. O pedido de confirmação carrega um token
que é válido por 3 dias e pode ser confirmado pela API ConfirmSubscription;
Unsubscribe: Delete uma inscrição;
42. SQS
“Serviço de fila de mensagem rápido, confiável, escalável e totalmente
gerenciado.”
3 principais APIs:
• SendMessage: envia mensagens para uma fila específica;
• ReceiveMessage: retorna 1+ mensagens de uma fila específica;
• DeleteMessage: remove uma mensagem recebida anteriormente de uma fila
específica;
APIs adicionais estão disponíveis para oferecer funcionalidade avançada:
SendMessageBatch, DeleteMessageBatch, ChangeMessageVisibilityBatch,
CreateQueue, ListQueues, DeleteQueue, PurgeQueue, etc.
Referência: https://aws.amazon.com/pt/sqs/
43. SQS
1. O SISTEMA X precisa enviar uma mensagem para o SISTEMA Y. Ele seleciona uma
fila pré-determinada do SQS, e chama SendMessage para adicionar uma nova
mensagem à ela.
2. O SISTEMA Y que processa mensagens precisa de mais mensagens para processar,
portanto ele chama ReceiveMessage e essa mensagem é retornada.
3. Assim que uma mensagem tiver sido retornada por ReceiveMessage, ela não será
retornada por nenhum outro ReceiveMessage até que o tempo de espera de visibilidade
transcorra. Isso impede que vários computadores processem a mesma mensagem de
uma vez.
4. Se o sistema que processa mensagens encerrar com êxito o processamento desta
mensagem, ele chamará DeleteMessage, que removerá a mensagem da fila, de forma
que mais ninguém irá processá-la. Se o sistema apresentar falha no processamento da
mensagem, ele será lido por outra chamada ReceiveMessage assim que o tempo de
espera de visibilidade transcorrer.
5. Se você associou uma fila Dead Letter a uma fila de origem, as mensagens serão
movidas para a fila Dead Letter após o número máximo de tentativas de entrega que
você especificou ser atingido.
48. CodeDeploy
• Coordena deploy de aplicações para instâncias
EC2, on-premises, ou ambos;
• Suporta deploy a partir de S3 e GitHub;
• Seu projeto precisa de uma única modificação:
Um arquivo AppSpec (YAML específico para o
CodeDeploy);
• Controla as etapas do deploy e define ações a
serem tomadas em cada etapa;
49. CodeDeploy
• Suporta deploy em várias instâncias (deployment
group) ao mesmo tempo, inclusive em Auto
Scaling groups;
• Suporta triggers para envio de notificações de
eventos via SNS;
• Possui relatório que mostra quando e qual
revisão foi “deployada” em cada instância;
50. CodeDeploy
Integração com vários sistemas de Continuous Integration e
Continuous Delivery:
• Jenkins
• Travis CI
• CircleCI
• TeamCity
• Solano Labs
• AWS CodePipeline
• …
52. CodeDeploy
Como o deploy ocorre no orquestrador?
1. Uma nova revisão é criada;
2. Coordena o deploy nas instâncias do deployment
group conforme a configuração: Uma de cada vez,
todas de uma vez, metade de cada vez;
3. Executa triggers em cada etapa do deploy;
4. Aborta o deploy e faz rollback em caso de erro,
dependendo da configuração;
53. CodeDeploy
Como o deploy ocorre na instância?
1. Uma nova revisão é criada;
2. O orquestrador sinaliza para a instância iniciar o deploy
fazendo download do repositório/bundle do projeto;
3. O agente lê o arquivo AppSpec e executa as instruções
encontradas;
4. Aborta o deploy e faz rollback em caso de erro,
dependendo da configuração;
57. CodePipeline
Neste exemplo:
1. O desenvolvedor envia a alteração para o repositório;
2. O processo de build é iniciado;
3. Se há testes configurados, os testes são executados;
4. Depois dos testes completarem, ocorre o deploy do resultado do build
(built code) em instâncias de staging;
5. Nas instâncias de staging, testes adicionais são executados, como
integrações e testes de carga;
6. Após finalizar todos testes com sucesso, ocorre o deploy em
instâncias de produção;
58. CodePipeline
O deploy pode ser realizado em instâncias EC2
através dos serviços:
• CodeDeploy
• Elastic Beanstalk
• OpsWorks