
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