Comienza Ya. Es Gratis
ó regístrate con tu dirección de correo electrónico
AWS Developer por Mind Map: AWS Developer

1. Signed URLs: URLs que são válidas somente por um período

2. **Rolling:** Atualiza grupo de instancias (bucket), quando finalizar o primeiro bucket e a instancias são consideradas Helthy. Beanstalk começa a atualizar o próximo Bucket. **Vide: ../Assets_Estudos/ABS_ROLLING.PNG**

3. Armazenamento

3.1. S3

3.1.1. **Propriedades**

3.1.1.1. Capacidade Infinita

3.1.1.2. Armazena Objetos (arquivos) e Buckets (diretório/pastas)

3.1.1.3. Buckets possuem nome ínico global

3.1.1.4. Definido a nível de Region

3.1.1.5. São definids a nível de Region

3.1.2. Nomes de Buckets

3.1.2.1. não é permitido maiúsculo

3.1.2.2. Não é permitido "_"

3.1.2.3. Tamanho de 3 a 63 caracteres

3.1.2.4. Deve começar com letr minúscula ou numero

3.1.3. Objeto

3.1.3.1. Key é o caminho completo do Objeto Ex: <meu_bucket>/meu_arquivo.txt

3.1.3.2. Tamanho MAX de um Obj é de 5TB

3.1.3.3. Para subir um arquivo de mais de 5GB, tem que usar o multi-part upload

3.1.3.4. Version ID

3.1.4. Versioning

3.1.4.1. Habilitado a nível de bucket

3.1.4.2. o versionong protege de exclusão acidental

3.1.4.3. se o versioning não estiver habilitado a versão aparece NULL

3.1.5. Criptografia

3.1.5.1. SSE-S3 Vide: **../Assets_Estudos/SSE-S3.PNG**

3.1.5.1.1. criptografa objetos usando Key gerenciada pela AWS

3.1.5.1.2. Objeto criptografado do lado do servidor

3.1.5.1.3. Criptografia do tipo AES-256

3.1.5.1.4. Header: "x-amz-server-side-encryption":"AES256"

3.1.5.2. SSE-KMS Vide: **../Assets_Estudos/SSE-KMS.PNG**

3.1.5.2.1. criptografa objetos usando Key gerenciada pela AWS KMS

3.1.5.2.2. Vantagens do KMS: controlado pelo usuário + astreamwento para auditoria

3.1.5.2.3. Objeto criptografado do lado do servidor

3.1.5.2.4. "x-amz-server-side-encryption":"aws:kms"

3.1.5.3. SSE-C Vide: **../Assets_Estudos/SSE-C.PNG**

3.1.5.3.1. Criptografia do lado do servdor gerenciada pelo usuário fora da AWS

3.1.5.3.2. S3 não armazena Encription Key fornecida pelo cliente

3.1.5.3.3. É obrigatório o uso de HTTPS.

3.1.5.3.4. Encryption Key deve estar presente no header HTTP para todas as requisições

3.1.5.4. Client Side Encription Vide: **../Assets_Estudos/SSE-CLE.PNG**

3.1.5.4.1. Client Library como por exemplo Amazon S3 Encryption Client.

3.1.5.4.2. Cliente deve criptografar os dados antes de enviar para S3.

3.1.5.4.3. Cliente deve descriptografar dados depois de baixar do S3

3.1.5.4.4. Cliente deve gerenciar keys e ciclo da criptografia

3.1.6. Segurança

3.1.6.1. Usuário

3.1.6.1.1. IAM Policies - Qual API é permitida para cada usuário

3.1.6.2. Recursos

3.1.6.2.1. Bucket Policies - Regras oara o Bucket - Permite cross account

3.1.6.2.2. Objecr Access Control List (ACL) permite controle mais granular

3.1.6.2.3. BucketAccess Control List (ACL) menos comun

3.1.6.3. JSON Policies

3.1.6.3.1. Resource: Buckets e Objects

3.1.6.3.2. Action: Allow/Deny API

3.1.6.3.3. Effect: Allow/Deny

3.1.6.3.4. Principal: Conta ou usuário para aplicar a policy

3.1.6.4. Logging e Auditoria

3.1.6.4.1. Acesso ao S3 pode ser armazenado em outro Bucket

3.1.6.4.2. API calls pode ser registrados no AWS Cloud Trails

3.1.6.5. User security

3.1.6.5.1. Segurança a nível de usuário

3.1.6.5.2. MFA pode ser requerido em Buckets com Versioned habilitado, para deletar objetos

3.1.7. Networking

3.1.7.1. Suporta VPC endpoints (acesso a recuros utilizando endereço AWS)

3.1.8. CORS

3.1.8.1. Cross Resource Sharing

3.1.8.2. Usadfo para permitir acesso apenas de outro bucket Ex: ter o index.html em um bucket e fotos no outro bucket;

3.1.8.3. Permite limitar o número de websites que podem requisitar arquivos do S3 Bucket (usado para limitar custo)

3.1.9. Bucket Policy

3.1.9.1. Permitir acesso púbçico ao bucket

3.1.9.2. Forçar objetos para serem criptografados ao se fazer upload

3.1.9.3. Permitir acesso de outras contas (cross account)

3.1.10. Consistency Model

3.1.10.1. Ler depois de escrever para PUTS

3.1.10.1.1. Assim que o objeto é escrito ele pode ser lido

3.1.10.1.2. Isso é verdade, com exceção se fizer um GET antes para ver se o objeto existe

3.1.10.2. Eventual Consistency para DELETE e PUT para objetos existentes

3.1.10.2.1. Ao ler um objeto logo após fazer um update, pode ser retornado a versão antiga

3.1.10.2.2. Se um objeto for deletado, pode ser que ainda fique acessível por um curto período de tempo

3.1.11. Performance

3.2. Dynamo DB

3.2.1. Tipos de Leitura

3.2.1.1. Fortemente consistente Retorna dados mais atualizados "GetItem" "ConsistentRead" = true

3.2.1.2. Eventualmente Consistente Leitura eventualmente consistente "GetItem" "ConsistentRead" = false

3.2.2. DAX

3.2.2.1. Melhora desemprenho de leitura, armazena dados em um cache na memória

3.2.2.2. Escrita vai para o DAX e DAX escreve no DynamoDB

3.2.2.3. 5min de TTL

3.2.2.4. Até 10 node cluster

3.2.2.5. Multi AZ

3.2.3. **Propriedades**

3.2.3.1. Auto Scaling

3.2.3.2. DB NoSQL

3.2.3.3. Baixa latência

3.2.3.4. Tam MAX item 400Kb

3.2.3.5. Não suporta Join

3.2.3.6. Não fazem agregation, tipo "SUM"

3.2.3.7. Escalonamento Horizontal

3.2.4. Tipos de dados

3.2.4.1. **Scalar Types:** String, Number, Binay, Boolean, Null

3.2.4.2. **Document Type:** List, Map

3.2.4.3. **Set Types:** String Set, Number Set, Binary Set

3.2.5. Write Capacity Units (WCU)

3.2.5.1. 1 WCU = 1 escrita /sec de até 1Kb

3.2.5.2. Se or mais de 1KB, mais de 1 WCU será consumido

3.2.6. Read Capacity Units (RCU)

3.2.6.1. 1 RCU = 1 strongly consistent read por segundo ou 2 eventually consistent reads /sec, até 4KB

3.2.6.2. Se o item for maior que 4KB, mais de 1 RCU será consumido

3.2.7. Partition

3.2.7.1. Dados são dividisos em partitions

3.2.7.2. Partitions Key passa por um algoritmo para saber para qual partition deve ir

3.2.8. Throttling

3.2.8.1. Se exceder RCU ou WCU recebe-se um ProvisionetThroughputExceeeedException

3.3. Elasticache

3.3.1. **Propriedades**

3.3.1.1. Similar ao RDS

3.3.1.2. Banco em memória, alta performance e baixa latência

3.3.1.3. Ajuda a reduzir a carga do banco atual

3.3.1.4. Ajuda a fazer aplicação stateless

3.3.1.5. Escrita escalona usando sharding

3.3.1.6. Leitura escalona usando Read Replicas

3.3.1.7. Multi AZ com capacidade de failover

3.3.1.8. alivia a carfa do RDS

3.3.1.9. **Tipos de Elasticache**

3.3.1.9.1. REDIS

3.3.1.9.2. Memcached

3.3.2. **Funcionamento**

3.3.2.1. Encontrado no cache? Se não, vai no RDS

3.3.2.2. Na escrita, escreve direto no cache

3.3.3. **Trabalhando com sessão**

3.3.3.1. Usuário loga na aplicação A aplicação escreve os dados da sessão no elasticache User acessa a aplicação por outra instancia

3.4. RDS

3.4.1. **Bancos Suportados**

3.4.1.1. Postgress

3.4.1.2. Oracle

3.4.1.3. Maria DB

3.4.1.4. MySQL

3.4.1.5. SQL Server

3.4.1.6. Autora

3.4.2. **Propriedades**

3.4.2.1. BKP continuo, Pode ser restaurado por timestamp e tem SnapShop diário. Snapshot pode ser guardado por tempo indeterminado

3.4.2.2. 7 dias de backup e pode ser aumentado pra 35

3.4.2.3. Gerenciado pela AWS

3.4.2.4. Possui ReadReplicas para otimizar leituras, pode ter até 5, o Aurora pode ter até 15

3.4.2.4.1. Replica pode virar master

3.4.2.4.2. Eventualy consistent, pode retornar um valor não atualizado ASYNC

3.4.2.5. Opção de config para Multi AZ

3.4.2.5.1. Para isso cria-se uma copia de redundancia, que é atualizado na hora, é SYNC

3.4.2.5.2. Não é usado para escalonamento

3.4.2.5.3. FailOver to StandBy. Feito quando ocorre algum problema na rede ou na AZ

3.4.2.5.4. Não é usado para escalonamento

3.4.2.6. Escalonamento Vertical e Horizontal

3.4.2.7. Não é possível utilizar SSH no RDS

3.4.2.8. Apenas bancos relacionais

3.4.3. **Criptografia**

3.4.3.1. Em repouso com AWS KMS AES-256

3.4.3.2. SSL para dados em trânsito

3.4.4. **Segurança**

3.4.4.1. RDS normalmente é criado em uma rede privada

3.4.4.2. Usa SG da mesma forma que os EC2, para definir regras de acesso

3.4.4.3. IAM Policies podem definir quem pode gerenciar bancos de dados no RDS

3.4.4.4. User e passwd podem ser usados para acessar Bancos de Dados

3.4.4.5. IAM User pode ser usado pra autenticar no MySQL e no Aurora

4. IAM

4.1. **Polices:** define o que é permitido ou não em Roles, Groups e Users

4.1.1. **Roles:** Atribuidos a recursos AWS tipo EC2

4.1.2. **Groups:** Normalmente atribuido a Times ou funções

4.1.3. **Users:** Normalmente atribuido a uma pessoa

4.2. **Propriedades**

4.2.1. É um serviço global

4.2.2. Pode configurar MFA

4.2.3. Permnição definida por Policy em JSON

4.2.4. Tem policies pré definidas

4.2.5. - 1 user IAM por pessoa - 1 role por aplicação(Boa prática) - Credenciais nunca devem ser compatilhadas - Nunca colocar credenciais no cod da aplicação - Apenas usar ROOT na config inicial

4.2.6. Deve ser dada a menor permissão possível

4.3. IAM Federation

4.3.1. **Propriedades**

4.3.1.1. Para integrar repositório de usuários com IAM, dessa forma o user pode acessar a AWS usando credenciais da empresa

4.3.1.2. Identity Federation usar o padrão SAM (active directory)

5. **Immutable:** Inicia novas instâncias em um novo ASG, publica a aplicação para as novas instãncias e então alterna o tráfego para as novas instâncias quando elas são consideradas saudáveis (helthy) **Vide: ../Assets_Estudos/ABS_IMMUTABLE.PNG**

6. Region

6.1. **Propriedades**

6.1.1. Cada Region Possui AZ

6.1.2. Serviços são separados por Region, exceto S3 e IAM

6.2. Availability Zone

6.2.1. **Propriedades**

6.2.1.1. Uma AZ fica dentro de uma Region

6.2.1.2. Cada AZ é um data center isolado dos demais

6.2.2. EC2

6.2.2.1. **Launch Template:** É um modelo de EC2, storage, user data, comandos a serem executados na criação, SG. Quando esse LT for chamado essa sequencia é executada. Usado para carregar uma instancia pelo LB e/ou ASG

6.2.2.2. Load Balancer

6.2.2.2.1. É possível configurar LB para rede pública (externa) e para rede privada (interna) É possível definir, na criação, quais AZs serão usadas para LB

6.2.2.2.2. Listenner é possível adicionar um listenner para o load balancer

6.2.2.2.3. Ordem de criação de um LB: Config LB, Config Security Settings, Conf, SGs, Config Routing, Register Tags

6.2.2.2.4. Tipos de LB

6.2.2.2.5. Uma instancia EC2 não encherga o IP de um cliente que passa pelo LB. Para isso teria que inserir o header **X-Fowarded-for ** o mesmo funciona para **X-Foarded-Port** e **X-Forwarded-Proto**

6.2.2.2.6. Auto Scaling Group

6.2.2.3. Target Group

6.2.2.4. **Propriedades**

6.2.2.4.1. Aluguel de maquina vitual

6.2.2.4.2. Pode configurar Shutdown Behavior para STOP ou TERMINATE

6.2.2.4.3. Enable termination protection, proteção contra desligamento acidental, para não terminar a instancia

6.2.2.4.4. Pode selecionar um ambiente compartilhado ou dedicado

6.2.2.4.5. User Data é um campo que é usado para executar comandos na criação da instancia

6.2.2.4.6. As TAGS podem ser usadas para identificar uma instancia, para facilitar na parte de custos

6.2.2.4.7. Cobrado por segundo, min depois de 60seg

6.2.2.5. **Tipos de Instâncias**

6.2.2.5.1. **On Demand:** Com as instâncias sob demanda, você paga pela capacidade computacional por hora ou por segundo, dependendo das instâncias executadas.

6.2.2.5.2. **Instâncias spot:** As instâncias spot do Amazon EC2 permitem solicitar capacidade computacional extra do Amazon EC2 com desconto de até 90% em relação ao preço das instâncias sob demanda.

6.2.2.5.3. **Savings Plans:** Os Savings Plans são um modelo de preços flexível que oferece preços baixos no uso do EC2 e Fargate

6.2.2.5.4. **Host dedicados:** Um host dedicado é um servidor físico do EC2 dedicado exclusivamente ao seu uso

6.2.2.6. **Armazenamento da Instancia**

6.2.2.6.1. Instance Store

6.2.2.6.2. EBS

6.2.2.7. Security Group

6.2.2.7.1. **Propriedades**

6.2.2.8. Elastic IP

6.2.2.8.1. **Propriedades**

6.3. VPC

6.3.1. **Propriedades**

6.3.1.1. Contém Subnets

6.3.1.2. Cada subnet é associada a uma AZ

6.3.1.3. Pode ter várias subnets por AZ

6.3.1.4. Pode ser pública

6.3.1.4.1. Load Balancer

6.3.1.4.2. Static Websites

6.3.1.4.3. Files

6.3.1.4.4. Public authentication Layers

6.3.1.5. Pode ser Privada

6.3.1.5.1. Servidor Web

6.3.1.5.2. Bancos de dados

6.3.1.6. Public e Private subnets podem se comunicar se estiverem no mesmo VPC

6.3.1.7. As novas contas AWS tem VPC padrão (confirmar se isso ainda procede)

6.3.1.8. É possível conectar VPC om VPC e acessar todos os endereços privados

6.3.1.9. VPC Flow Logs, monitora tráfego que entra e sai da VPC

6.3.1.10. Pertence a uma conta e a uma Region

6.3.1.11. Nem todos os serviços AWS podem ser criados em uma VPC

6.3.1.12. É possível conectar VPC usar Peer VPC na mesma ou em outra conta

6.3.1.12.1. Se tiver um PEER VPC entre A e B e uma PEER VPC entre B e C, A e C não se enchergam

7. Endereço IP Público e Privado

7.1. **Propriedades**

7.1.1. O end IP pode ser IPv4 e IPv6

8. ElasticBeanStalk

8.1. **Propriedades**

8.1.1. Implementa um ambiente com: EC2, ASG, ELB, RDS, outros

8.1.2. Gerenciado pela AWS

8.1.3. O Desenvolvedor se preocupa apenas com o código

8.1.4. Possui 3 componentes

8.1.4.1. Application

8.1.4.2. Application Version: cada Deployment recebe uma versão

8.1.4.3. Enviroment Name (dev, hml, prod) qualquer nome

8.1.5. Application version são usadas para enviroment

8.1.6. Rollback restaura versão anterior

8.1.7. Docker

8.1.7.1. Single continer Docker

8.1.7.2. Multicontainer Docker

8.1.7.3. Pre configured Docker

8.1.8. Se a plataforma não for suportada, pode-se criar uma

8.1.9. **Plataformas Suportadas**

8.1.9.1. Go

8.1.9.2. Java SE

8.1.9.3. Java Tom Cat

8.1.9.4. .NET IIS

8.1.9.5. Node.js

8.1.9.6. PHP

8.1.9.7. Python

8.1.9.8. Ruby

8.1.9.9. Packet Builder

8.1.10. **Opções de atualização da aplicação**

8.1.10.1. **All at once:** Atualiza tudo de uma vez só. Aplicação fica indisponível durante atualização. **Vide: ../Assets_Estudos/ABS_AAO.PNG**

8.1.10.2. **Rolling with Additional Batches:** Similar ao Rolling porém inicia novas instâncias par instalar a nova versão (a versão antiga continua disponível) **Vide: ../Assets_Estudos/ABS_ROLLING_WAB.PNG**

8.1.10.3. **Blue Green:** Não é exclusividade do BeanStalk, é uma metodologia usada em diversos recursos. Onde instancia-se 2 ambientes e usa-se o Route53 para ir mudando a carga para o novo server **Vide: ../Assets_Estudos/ABS_BG.PNG**

9. Message

9.1. SQS

9.1.1. **Propriedades**

9.1.1.1. Modelo Queue

9.1.1.2. Gerenciado pela AWS

9.1.1.3. Escalona 1 msg por segundo até 10.000/sec

9.1.1.4. Default Retention of messages podem ficar no queue

9.1.1.5. Latencia menor que 10ms

9.1.1.6. Escalonamento horizntal de consumidores

9.1.1.7. Não garante ordem

9.1.1.8. Pode ter duplicidade de msg

9.1.1.9. Tamanho max das msg 256Kb

9.1.2. Delay Queue

9.1.2.1. Delay msg (consumers não veem a msg imediatamente) max 15min

9.1.2.2. Defaul é 0 seg (msg fica disponível imediatamente)

9.1.2.3. Default pode ser ajustado no queue level

9.1.2.4. Default pode ser alterado usando DelaySeconds parameters

9.1.3. Producing Msg

9.1.3.1. Definição do body

9.1.3.2. Adicionar Msg Attributes

9.1.3.3. Opção de Delay Delivery

9.1.3.4. Retorna: Message Identified e MD5 hash do Body

9.1.4. Consuming Messages

9.1.4.1. Consumidores

9.1.4.2. Poll SQS para mensagens (recebe no máximo 10 msg por vez)

9.1.4.3. Processa msg dento do Visibility Timeout

9.1.4.4. Deleta as mensagens usando Message ID e Receipt Handle

9.1.5. Visibility Timeout

9.1.5.1. Fica disponível por ujm tempo

9.1.5.2. Default 30s

9.1.5.3. Min 0 e max 12

9.1.5.4. ChangeMessageVisibility API mida a visibilidade enquanto processa a mensagem

9.1.5.5. DeleteMessage API para avisarocessadaSQS que a mensagem foi po

9.1.6. DLQ

9.1.6.1. Se o consumidor falhar ao processar a msg dentro do Visibility TImeout, a msg volta para o Queue

9.1.6.2. Podemos escolher quantras vezes uma msg pode voltar para o QUeue - Retrieve Policy

9.1.6.3. QUando o numero acima estourar, vai pro DLQ

9.2. SNS

9.2.1. **Propriedades**

9.2.1.1. Modelo PubSub

9.2.1.2. Pode enviar para

9.2.1.2.1. Email

9.2.1.2.2. Msg Texto

9.2.1.2.3. Detecção de fraudes

9.2.1.2.4. SQS Queue

9.2.1.3. Só producer

9.2.1.4. Para receber as msgs do SNS tem que ser subscrito

9.2.1.5. Subscribers podem ser

9.2.1.5.1. SQS

9.2.1.5.2. HTTP/HTTPS

9.2.1.5.3. Lambda

9.2.1.5.4. Emails

9.2.1.5.5. SMS messages

9.2.1.5.6. Mobile Notifications

9.2.1.6. Integração com

9.2.1.6.1. Serviços de envio direto para SNS

9.2.1.6.2. CloudWatch

9.2.1.6.3. Notificação ASG

9.2.1.6.4. Amazon S3

9.2.1.6.5. CloudFormation

9.3. Kinessis

9.3.1. **Propriedades**

9.3.1.1. Modelo Streaming em tempo real

9.3.1.2. Ideal para Log de Aplicação, Metrics, IoT, clickstream

9.3.1.3. Ideal para Real-Time Big Data

9.3.1.4. Ideal para Streaming Processing Frameworks (Spark, NiFi)

9.3.1.5. Automaticamente replicado em 3AZs

9.3.2. Tipos

9.3.2.1. Kinessis Streams

9.3.2.1.1. Dividido em shards/Partitiions

9.3.2.1.2. retenção dos dados de 1 dia, extendivel até 7

9.3.2.1.3. Processa Replay Data

9.3.2.1.4. Dados nao podem ser apoagados

9.3.2.2. Kinessis Analytics

9.3.2.3. Kinessis Firehorse

9.4. **Propriedades**

9.4.1. Podem ser Sincronas e Assincronas

9.4.2. Todos escalonam independente da aplicação

10. CLI

10.1. **Propriedades**

10.1.1. O **flag --dry-run** serve para testar se temos permissão para executar um comando

10.1.2. O **CLI** precisa do Phyton instalado para rodar

10.1.3. Para obter informações sobre um EC2 **http://196.254.169.254/latest/meta-data **

10.1.4. Quando uma chamada a uma API falhar por conta de um **Rate Limit** for exedido, usar **Exponential backoffice**

10.1.5. Qual a forma A forma mais segura de executar a chamada de uma API para o S3 é: Criar um IAM somente para a aplicação e insira suas credenciais como variávei de ambiente

11. Developer Tools

11.1. CI/CD

11.1.1. **Propridades**

11.1.1.1. Continuous Integration / Continuous Delivery Vide: **../Assets_Estudos/CICD.PNG**

11.1.2. CodeCommit

11.1.2.1. **Propridades**

11.1.2.1.1. Repositório privado para os codigos (git)

11.1.2.1.2. Sem limite de armazenamento

11.1.2.1.3. Gerenciado pela AWS

11.1.2.1.4. Alta Disponibilidade

11.1.2.1.5. Código disponível apenas na conta AWS

11.1.2.1.6. **Security**

11.1.2.1.7. Integrado com Jenkins, CodeBuild etc

11.1.3. CodePipeline

11.1.3.1. **Propridades**

11.1.3.1.1. Automatizar Pipeline

11.1.3.1.2. É possível ver o fluxo passo a passo

11.1.3.1.3. **Build: ** Code Build,Jenkins

11.1.3.1.4. **Load Test:** Ferramentas de terceiros

11.1.3.1.5. **Deploy:** AWS CodeDeploy, BeanStalk, CloudFormation, ECS

11.1.3.1.6. Etspas CI/CD vide: **"../Assets_Estudos/cicd_etapas.png"**

11.1.3.1.7. CodePipeline Artifacts vide: **"../Assets_Estudos/cicd_artifacts.png"**

11.1.3.1.8. **Stage**

11.1.3.2. Troubleshooting

11.1.3.2.1. Possível criar eventos para falhas no pipeline

11.1.3.2.2. Possível criar eventos para Estágios Congelados

11.1.3.2.3. AWS CloudTrail pode ser usado para auditar AWS API Calls

11.1.3.2.4. Se pipeline nção conseguir executar umatarefa, conferir se IAM Service Role está associada tem permissão suficiente (IAM Policy)

11.1.4. CodeBuild

11.1.4.1. **Propridades**

11.1.4.1.1. Build e Teste

11.1.4.1.2. Funcionamento vice: **"../Assts_Estudos/CODEBUILD.PNG"**

11.1.4.1.3. Gerenciado pela AWS

11.1.4.1.4. Tem a possibilidade de usar outra ferramentas build, como Jenkins

11.1.4.1.5. Continuous Scaling (Sem servidor para gerenciar ou provisionar)

11.1.4.1.6. Cobrado somente pelo tempo que demora para completar o Build

11.1.4.1.7. utilizar DOcker nos bastidores

11.1.4.1.8. Possibilidade de estender a capacidade usando nossa própria base de Docker

11.1.4.1.9. SOurce code pode ser do GitHub, CodeCommit, S3

11.1.4.1.10. Instruções dapa o Build pode ser definidas no arquivo **buildspec.yml**

11.1.4.1.11. Logs podem ser enviados para S3 e ClodWatch Logs

11.1.4.1.12. Metrics para monitorar estatísticas do CodeBuild

11.1.4.1.13. CloudWatch Alarm para detectar falhas no Build e enviar notificações

11.1.4.1.14. CloudWatch Events / AWS Lambda como Glue

11.1.4.1.15. Notificação SNS

11.1.4.1.16. Possibilidade de reproduzir CodeBuild localmente para troubleshoot em caso de erro

11.1.4.1.17. Pipeline pode ser definido dentro do CodePipeline ou dentri do próprio CodeBuild

11.1.4.2. Segurança

11.1.4.2.1. Integração com KMS para criptografar os artifacts, IAM para Build, VPC para segurança de rede, CLoudTrail para API calls logging

11.1.4.3. Ambientes Suportados

11.1.4.3.1. Java

11.1.4.3.2. Python

11.1.4.3.3. Ruby

11.1.4.3.4. Go

11.1.4.3.5. Node,js

11.1.4.3.6. Android

11.1.4.3.7. .NET Core

11.1.4.3.8. PHP

11.1.4.3.9. Docker: para usar qualquer ambiente que preferir

11.1.5. CodeDeploy

11.1.5.1. **Propridades**

11.1.5.1.1. Deploy do código

11.1.5.1.2. passo a passo Code Deploy vide: **"../Asets_Estudos/Passo_a_passo_CodeDeploy.png"**

11.1.5.1.3. Instancias EC2 são agrupadas pelo Deployment (dev/test/prod)

11.1.5.1.4. CodeDeploy pode reusar ferramenta de configuração, funciona com qualquer aplicação, integração com AutoScaling

11.1.5.1.5. Blue/Green deployment só funciona com EC2, Não com On Premise

11.1.5.1.6. Suporta AWS Lambda Deployment

11.1.5.2. Componentes

11.1.5.2.1. **Application:** Nome único

11.1.5.2.2. **Computer Platform:** EC2/On-premise ou Lambda

11.1.5.2.3. **Deployment Configuration**

11.1.5.2.4. **Deployment Group:** Grupo de instância tagueada (TAGs)

11.1.5.2.5. **Deployment Type:** In-Place or Blue/Green

11.1.5.2.6. **Application Revision:** Código da aplicação + appspec.yml

11.1.5.2.7. **Service Role:** Role para CodeDeploy realizar as tarefas necessárias

11.1.5.3. AppSpec

11.1.5.3.1. **File Section:** Como copiar os arquivos do GitHub / S3 para o destino

11.1.5.3.2. **Hooks:** Conjunto de instruções para Deply nova versão )hooks podem ter timeouts)

11.1.5.3.3. **Em Ordem**

11.1.5.4. Deployment Config

11.1.5.4.1. **Configs**

11.1.5.4.2. **Failures**

11.1.5.4.3. **Deployment Targets**

11.2. CloudFormation

11.2.1. **Propriedades**

11.2.1.1. Não é necessário especificar ordem

11.2.1.2. É possível estimar o custo utilizando CloudFormation Template

11.2.1.3. É possível programar ambiente para subir e encerrar na hora programada

11.2.1.4. Templates precisam ser uploaded para o S3 e então podem ser referenciados no CloudFormation

11.2.1.5. Template não edita, só atualiza

11.2.2. Estrutura

11.2.2.1. Componentes

11.2.2.1.1. **Resources:** Recursos AWS declarados no Template (obrigatório)

11.2.2.1.2. **Parameters:** Entradas dinâmicas para seu Template

11.2.2.1.3. **Mapping:"** Constantes para seu Template

11.2.2.1.4. **Outputs:** Referência aos Resources que foram criados

11.2.2.1.5. **Conditionals:** Lista de condições para criar Resources

11.2.2.1.6. **Metadata**

11.2.2.2. Template Helpers

11.2.2.2.1. Reference

11.2.2.2.2. Functions

11.2.2.3. Funções

11.2.2.3.1. Fn::Ref

11.2.2.3.2. Fn::GetAtt

11.2.2.3.3. Fn::FindInMap

11.2.2.3.4. Fn::ImportValue

11.2.2.3.5. FN::Join

11.2.2.3.6. Fn::Sub

11.2.2.3.7. Condition Function Fn::If, Fn::Not. Fn::And Fn::Equals, Fn::Or

11.2.3. YAML

11.2.3.1. Suporta

11.2.3.1.1. Key Value Pair

11.2.3.1.2. Nested Objects

11.2.3.1.3. Suporta Arrays

11.2.3.1.4. Strings em multiplas linhas

11.2.3.1.5. Pode incluir comentários

12. Monitoring

12.1. CloudWatch

12.1.1. **Propriedades**

12.1.1.1. **Metrics:** Colera e rastreia Key Metrics (pode ser CPU, trafego de rede, etc)

12.1.1.1.1. Metrics da instanciasãocapturados a cada 5min

12.1.1.1.2. Detailed Monitoring, captura a cada 1min

12.1.1.1.3. High Resolution até 1seg

12.1.1.1.4. Para enviar custom metrics usar **PutMetricData**

12.1.1.2. **Logs:** Coleta, monitora, analiza armazena arquivos log

12.1.1.2.1. Pode coletar Logs de

12.1.1.2.2. Pode sr enviado para

12.1.1.2.3. Pode usar Filter Expressions

12.1.1.2.4. Arquitetura de Logs

12.1.1.3. **Events:** Envia notifições quando certos eventos acontecem no ambiente AWS

12.1.1.3.1. **Schedule:** Cron Jobs

12.1.1.3.2. **Event Pattern:** Event Rules para reagir para um serviço fazsendo alguma coisa

12.1.1.3.3. Trigger para Lambda, SQS/SNS/Kinessis

12.1.1.3.4. Cria um JSON para dar informações sobre a mudança

12.1.1.4. **Alarms:** Reagem em tempo real a Metrics e Eventos

12.1.1.4.1. Usado para qualuer métrica

12.1.1.4.2. Podem ser enviados para AutoScaling, EC2 Actions SNS

12.1.1.4.3. **Alarm States**

12.1.1.4.4. **Period**

12.2. X-Ray

12.2.1. **Propriedades**

12.2.1.1. Troubleshooting da aplicação para Performance e erros

12.2.1.2. Para habilitar o X-Ray, basta instalar o X-Ray Daemon ou habilitar X-Ray AWS Integration

12.2.1.2.1. X-Ray daemon funciona como baixo nível UDP packet interceptor (Linux / Win / Mac)

12.2.1.2.2. AWS Lambda / outros serviços AWS que já rodam X-Ray daemon

12.2.1.2.3. Cada aplicação deve ter permissão IAM para escrever dados do X-Ray

12.2.1.3. Disrtibubed Tracing of Microservices

12.2.1.4. Faz tracing do request

12.2.1.4.1. Tracing é uma forma de monitorar um Request de um ponto ao outrp

12.2.1.4.2. Cada componente que trata um Request adiciona seu próprio Trace

12.2.1.4.3. Trace é feito por seguimentos

12.2.1.4.4. Annotations pode adicionar Traces para incluir informações extras

12.2.1.4.5. **Capacidade**

12.2.1.5. Segurança

12.2.1.5.1. Autorização IAM

12.2.1.5.2. KMS para criptografia em repouso

12.2.1.6. **Debugging em Produção**

12.2.1.6.1. Teste localmente

12.2.1.6.2. Adiciona log statements em todos os lugares

12.2.1.6.3. Re-deploy em produção

12.2.1.7. Formato dos logs é diferente entre as plataformas usando CloudWatch (difícil de fazer análises)

12.2.1.8. Sem visão comum de toda a arquitetura

12.2.1.9. Oferece Debugging em PROD de forma gráfica

12.2.2. **Vantagens**

12.2.2.1. Troubleshooting Performance

12.2.2.2. Entenedndo dependencies em arquitetura microservice

12.2.2.3. Identificar Problemas com Pinpoint Service

12.2.2.4. Revisar comportamento das requisições

12.2.2.5. Encontrar erros de axceções

12.2.3. **Compatibilidade**

12.2.3.1. AWS Lambda

12.2.3.2. Elastic BeanStalk

12.2.3.3. ECS

12.2.3.4. ELB

12.2.3.5. API Gateway

12.2.3.6. Instância EC2 ou qualquer outro servidor, inclusive on premise

12.3. CloudTrail

12.3.1. **Propriedades**

12.3.1.1. Monitora API Calls

12.3.1.2. Resgistra as mudanças nos recursos AWS feita pelos usuários

12.3.1.3. Habilitado por padrão

12.3.1.4. Histórico de eventos e API calls feito na conta AWS pode ser recuperado utilizando:

12.3.1.4.1. Console

12.3.1.4.2. SDK

12.3.1.4.3. CLI

12.3.1.4.4. AWS Services

12.3.1.5. Pode enviar logs para CloudWatch logs

12.3.1.6. Se um recurso é deletado na AWS, procurar o motivo no CloudTrail primeiro

13. Route 53

13.1. **Propriedades**

13.1.1. A: URL para IPV4

13.1.2. AAA: URL para IPV6

13.1.3. CNAME: URL pra URL

13.1.4. Alias: URL para recursos AWS

13.1.5. Usar ALIAS para recursos AWS e não CNAME

13.1.6. Possui um Loading Balance

13.1.7. Routing Policy: siple, fail over, geolocation, geoproximity, latency and weighted

13.2. para redirecionar eu próprio domínio para um Load Balancer, deve-se usar **"A" Records com Alias**

14. Serverless

14.1. **Propriedades**

14.2. Lambda

14.2.1. **Propriedades**

14.2.1.1. Max 15min requisição

14.2.1.2. Executado apenas quando provocado

14.2.1.3. Escalonado automaticamente

14.2.1.4. Até 3Gb RAM

14.2.1.5. Linguagens Suportadas

14.2.1.5.1. Node.js

14.2.1.5.2. Python

14.2.1.5.3. Java

14.2.1.5.4. C# .NET

14.2.1.5.5. Golang

14.2.1.5.6. C# Powershell

14.2.1.6. execuções ao mesmo tempo, aumentado com ticket

14.2.1.7. Logs armazernados no CloudWatchlogs

14.2.1.8. Metrics são exibidos no AWS CloudWatch Metrics

14.2.1.9. É possível usar o X-Ray

14.2.1.10. **LImits**

14.2.1.10.1. Memory 12Mb até 3Gb

14.2.1.10.2. Tempo MAX exec 15min

14.2.1.10.3. 256Mb de disco, pasta /tmp

14.2.1.10.4. Tamanho MAX arquivos do deploy 50Mb .ZIP

14.2.1.10.5. Tam MAX Environment Variables 4Kb

14.2.1.11. Versions

14.2.1.11.1. Cada version possui sua ARN

14.2.1.11.2. Permite Blue Green

14.3. Step Function

14.4. Dynsmo DB

14.5. AWS Cognito

14.6. AWS API Gateway

14.7. Amazon S3

14.8. AWS SNS e SQS

14.9. AWS Kinessis

14.10. Aurora Serverless

15. ECS

15.1. Docker

15.1.1. **Propriedades**

15.1.1.1. Repositórios

15.1.1.1.1. Dockr Hub

15.1.1.1.2. AWS ECR

15.1.2. Para gerenciaar Container preciisa-se de uma plataforma de cntaiiners

15.1.2.1. **ECS**

15.1.2.1.1. **Propriedades**

15.1.2.1.2. Cluster

15.1.2.1.3. Services

15.1.2.1.4. Tasks

15.1.2.1.5. Uso de LB

15.1.2.1.6. Task Definition

15.1.2.2. **Fargate**

15.1.2.2.1. **Propriedades**

15.1.2.3. **EKS**

15.1.2.3.1. **Propriedades**

16. Serverless APIGateway, SAM e Cognito

16.1. API Gateway

16.1.1. **Propriedades**

16.1.1.1. Gerencia versões da API

16.1.1.2. Gerenci Segurança

16.1.1.3. Cria API Keys, gerencia Request Throttling

16.1.1.4. Importação Swagger / Open API para definição rápida de APIs

16.1.1.5. ransforma e Valida Requests e Responses

16.1.1.6. Gera SDK e especificação da API

16.1.1.7. Cache API Responsees

16.1.2. Deployment Stages

16.1.2.1. É preciso fazer o deploy para que as alterações tenham efeito, não basta salvar

16.1.2.2. Mudanças são Deployed para Stages

16.1.2.3. Exemplos de stages (DEV, TEST, PROD)

16.1.2.4. Cads Stage tem sua própria config

16.1.2.5. É possível usar Rollback nos Stages

16.1.3. Stage Variables

16.1.3.1. São como Environment Variables para API Gateway

16.1.3.2. Usar para mudanças frequentes na configuração do API

16.1.3.3. Pode ser usado para

16.1.3.3.1. Lambda Function ARN

16.1.3.3.2. HTTP endpoint

16.1.3.3.3. Parameter Mapping Templates

16.1.3.4. Exemplos

16.1.3.4.1. Configure HTTP endpoint

16.1.3.4.2. Passar configurações de parametros para AWS Lambda aravés de mapping templates

16.1.3.4.3. Stage Variables são passados para o ojeto "context" na Lambda Function

16.1.4. Mapping Template

16.1.4.1. Pode ser usado para modificar Request / Response

16.1.4.2. Renomear Parametros

16.1.4.3. Modificar Body COntent

16.1.4.4. Modificar body content

16.1.4.5. Adicionar Headers

16.1.4.6. Map JSON para XML para enviar para o backkend ou pra o cliente

16.1.4.7. Use Velocity Template Lamguage (VTL): para loop, if e etc

16.1.4.8. FIltra resultado de saída (remove dados desnecessário)

16.1.5. Swagger

16.1.6. Caching

16.1.7. Monitoring

16.1.8. Segurança

16.1.9. Outros

16.1.10. Integração

16.1.10.1. Fora da VPC

16.1.10.1.1. Endpoint na EC2

16.1.10.1.2. AWS Lambda, mais comum

16.1.10.1.3. Load Balancers

16.1.10.1.4. Qualquer outro Serviço AWS

16.1.10.1.5. Acesso público através de HTTP

16.1.10.2. Dentro da VPC

16.1.10.2.1. AWS Lambda nii VPC

16.1.10.2.2. EC2 endpoint no VPC

16.2. SAM

16.2.1. **Propriedades**

16.2.1.1. Serverless Application Model

16.2.1.2. Framework oara desenvolver aplicações serverless

16.2.1.3. Cnfigurado no formato YML

16.2.1.4. Suporte qualquer resurso do CloudFOrmation: Outputs, Maoppings, Parameters, Resources...

16.2.1.5. Pode usar code deploy par deploy de Lambda

16.2.1.6. Pode ajudar a rdar lambda, API Gateway e DynamoDB Localmente

16.3. Cognito

16.3.1. **Propriedades**

16.3.1.1. Serve para dar identidade para os usuários, para interragircom serviço AWS

16.3.2. Cognito User Pool

16.3.2.1. Sign in oara apps users

16.3.2.2. Integrado ccom AI Gateway

16.3.3. COgniti Identity Pool (Federated Identity)

16.3.3.1. Oferece Credenciais AWS par usuários oara eles cessarem reursos AWS diretamente

16.3.3.2. Integrado com Cognito User Pools com um Identify Provider

16.3.4. Cognito Sync

16.3.4.1. Sincroniza dadis di disoisitivo com Cognito

16.3.4.2. Deve ser substituido por AppSync no futuro