Bem vindo


Bem vindo a minha pagina de anotações, aqui com minhas unilises (erros de português) deixo minhas observações sobre os temas que estudo.


Paginas:

Subsections of Bem vindo

Subsections of Developer Notes

Subsections of Linux

Ubuntu

Custumização

Fontes
# hack para terminal
sudo apt install fonts-hack-ttf -y

# Fira code
sudo apt install fonts-firacode 

APT


Configuração ao apt-get ( /etc/apt )
cat /etc/apt/sources.conf

Cache do apt
ls /var/cache/apt/archives

Lista de repositórios
ls /var/lib/apt/lists

Comando apt-get
apt-get option nome_do_pacote

Options:

  • update​ - Obter novas listas de pacotes
  • upgrade​ - Executar uma atualização de pacotes já instalados
  • install ​ - Instalar novos pacotes (o pacote é libc6 e nao libc6.deb)
  • remove ​ - Remover pacotes
  • autoremove ​ - Remover automaticamente todos os pacotes não utilizados
  • purge ​ - Remover pacotes de configuração
  • source​ - Fazer o download de arquivos de código-fonte
  • dist-upgrade ​ - Atualiza a distribuição
  • clean ​ – Apagar arquivos obtidos por download
  • autoclean ​ – Apagar arquivo antigos obtidos por download
  • -d​ - download - Obter o pacote binário

Busca pacotes
apt-cache search pacote
apt-cache depends pacote


Performace

O pré-carregamento é um daemon que é executado em segundo plano e analisa o comportamento do usuário e executa aplicativos com freqüência. Abra um terminal e use o seguinte comando para instalar o pré-carregamento

sudo apt-get install preload

Arch Linux

Documentação

link: https://wiki.archlinux.org/index.php/Installation_guide


Instalação

Inicie o archlinux e:

  • Sete o teclado
loadkeys br-abnt2
  • Verifique se vc tem conexão de rede
ip link

ping google.com.br
  • Caso você tenha Wi-Fi:
wifi-menu

Abre um diálogo simples de escaneamento de rede, permitindo que você selecione com o teclado a rede desejada, digite a senha e pronto.


  • Particionamendo do disco

Use o comando para iniciar o particionamento do disco

# Para listar as partições existentes
 lsblk 
fdisk -l 

# Para cira novas partições GPT, para a partição /dev/sda
cfdisk /dev/sda
PartiçãoTipo de partirçãoSugestão de tamanhoPonto de montagem
/dev/efi_system_partitionEFI system partition500MB/mnt/boot
/dev/swap_partitionLinux swap2G[SWAP]
/dev/root_partitionLinux x86-64 root (/)O resto/mnt
  • exemplo

Formatando o disco

  • Patição de boot (não fiz isso) 
#mkfs.fat -F32 /dev/boot_partition
mkfs.fat -F32 /dev/sda1
  • Partição de SWAP
# mkswap /dev/swap_partition
mkswap /dev/sda2
  • Partição de do filesystem
# mkfs.ext4 /dev/root_partition
mkfs.ext4 
mount /dev/sda3 /mnt

Pontos de montagem

  • Partição do filesystem
# mount /dev/root_partition/mnt
mount /dev/sda3 /mnt

mkdir /mnt/home
mkdir /mnt/boot
mkdir /mnt/boot/efi
  • Partição de boot
# mount /dev/boot_partition/mnt
mount /dev/sda1 /mnt/boot/efi
  • Habilitando Swap
# swapon /dev/swap_partition
swapon  /dev/sda2

instalando o arch linux

pacstrap /mnt base linux linux-firmware

Isso pode demorar um tempinho, vá tomar um chá


Gerando tabela FSTAB

Vamos gerar a nossa tabela FSTAB, que vai dizer para o sistema onde estão montadas cada uma das partições, faremos isso usando este comando:

# Cria a tabela do fstab
genfstab -U -p /mnt >> /mnt/etc/fstab

# mostra o conteudo da tabela fstab
cat  /mnt/etc/fstab

Esse “-U” ali “no meio da turma” é para que seja usados os IDs dos discos no FSTAB, ao invés dos rótulos


Alterando para o sistema instalado

arch-chroot /mnt

Uma vez logado no seu sistema (repare que o terminal mudou de aparência), tudo o que você fizer agora, ficará em definitivo no seu Arch Linux.


Alterando a data e hora

Para alterar ajustar o fuso horario precisamos criar um link simbolivo

# ln -sf /usr/share/zoneinfo/Região/Cidade /etc/localtime

Ex:
ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
  • Sincronizar o relógio com as informações da BIOS
hwclock --systohc
  • Validando
date

Configurar o idioma do sistema

  • Instalando o nano
pacman -S nano

Para alterar para português

  • descomente a linha “pt_BR.UTF-8 UTF-8”
nano /etc/locale.gen
  • Gere o arquivo
locale-gen
  • Atualize a linguagem
echo LANG=pt_BR.UTF-8 >> /etc/locale.conf
  • Configure o teclado
echo KEYMAP=br-abnt2 >> /etc/vconsole.conf

Configurar Sistema

Nome da maquina

  • Nome da maquina (Pode ser qualquer nome)
# coloquei uni_arch
nano /etc/hostname

Porem vc deve adicionalos na tabela hosts

  • Atualizando tabela hosts
nano /etc/hosts

# ADD
127.0.0.1      localhost.localdomain            localhost
::1            localhost.localdomain            localhost
127.0.1.1      uni_arch.localdomain                uni_arch

senha do usuario root

  • Digite o comando
passwd

senha: unisenha


Criando usuarios

  • Digite os comandos abaixo
# useradd -m -g users -G wheel nome_desejado_para_o_usuario
useradd -m -g users -G wheel uni_user

Instalando pacotes uteis

  • Use o comando
# pacman -S dosfstools os-prober mtools network-manager-applet networkmanager wpa_supplicant wireless_tools dialog sudo

# na vm
pacman -S dosfstools os-prober mtools  systemd-networkd, systemd-resolved iwd  sudo

Adicionando usuario ao sudores

  • é preciso adicionar o seu usuário dentro do arquivo “sudoers”:
nano /etc/sudoers
  • Ao final do arquivo adicione “USER_NAME ALL=(ALL) ALL”, por exemplo:
uni_user ALL=(ALL) ALL

Configurando a o GRUB - UEFI

pacman -S grub-efi-x86_64 efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck
cp /usr/share/locale/en@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo
  • E por fim, vamos gerar o arquivo de configurações do Boot:
grub-mkconfig -o /boot/grub/grub.cfg

Chegamos ao final da instalação padrão, digite “exit” ou pressione “Ctrl+D” e use o comando “reboot” para reiniciar o computador, remova o pen drive da máquina.


Instalando aplicações

  • Xorg
pacman -Sy
pacman -S xorg-server
  • Placa de video virtual box
pacman -S virtualbox-guest-utils virtualbox-guest-modules-arch mesa mesa-libgl
  • Gnome
pacman -S gnome gnome-terminal nautilus gnome-tweaks gnome-control-center gnome-backgrounds adwaita-icon-theme
pacman -S firefox 
systemctl enable gdm

Documentação

Servidores de Aplicação


Warning

Em construção


Paginas:

Subsections of Servidores de Aplicação

Jetty

Note

Em construção

Subsections of Jetty

Instalando o Jetty


Passo 1: Diretórios Jetty

  • Criando os diretórios padrão

Caso no windows crie via interface.

mkdir -p C:\opt\jetty
mkdir -p C:\opt\nexus-app
mkdir -p C:\opt\temp

Descrição

Os propósitos do diretório são os seguintes:

  • C:\opt\jetty - Onde a distribuição do cais será descompactada

  • C:\opt\nexus-app - Onde seu conjunto específico de aplicativos da web estará localizado, incluindo toda a configuração necessária do servidor para torná-los operacionais.

  • C:\opt\temp - Este é o diretório temporário designado a Java pela Camada de Serviço (é o que Java vê como java.io.tmpdir Propriedade do Sistema).

Isso é intencionalmente mantido separado do diretório temporário padrão de /tmp, pois esse local também funciona como o diretório de trabalho Servlet Spec. É nossa experiência que o diretório temporário padrão é frequentemente gerenciado por vários scripts de limpeza que causam estragos em um servidor Jetty de longa execução.


Passo 2: Baixe o jetty


Passo 3: Configurar o ambiente

  • Crie as variáveis de ambiente
JETTY_HOME=C:\opt\jetty
JETTY_BASE=C:\opt\nexus-app
TMPDIR=C:\opt\temp
  • Restrição de diretórios no jetty

Edite o arquivo %JETTY_HOME%\etc\webdefault.xml, procure por dirAllowed e mudar para false

<init-param>
  <param-name>dirAllowed</param-name>
  <param-value>false</param-value>
</init-param>

Passo 4: Configure o diretório base da aplicação

Após configurar as variáveis de ambiente, use os comandos abaixo para criar o base dir:

cd %JETTY_BASE%
java -jar %JETTY_HOME%\start.jar --create-startd
java -jar %JETTY_HOME%\start.jar  --add-to-start=http,deploy,jsp,console-capture  # Caso sem https
java -jar %JETTY_HOME%\start.jar  --add-to-start=https,ssl,deploy,jsp,console-capture # Caso https - Item https

Descrição dos arquivos criados

console-capture.ini - Onde fica as configurações de log. deploy.ini - Configurações dos path e arquivos do deploys. http.ini - Configuração do http (porta, host …)

https.ini - Configuração do http (porta, host …)

ssl.ini - Configuração de certificados


Passo 5: Configurações personalizadas do jetty

  • Start.ini - Configuração personalizadas de inicialização do jetty

Crie um arquivo start.ini (caso não exista), para adicionar configurações personalizadas na inicialização do jetty, como debug, plugin do apm-server ….

touch %JETTY_BASE%\start.d\start.ini # touch serve pra criar arquivo, você pode criar na mão
  • Timezone Banco

Causa problema no banco, porque a maquina está em uma timezone diferente.

Edite o arquivo %JETTY_BASE%\start.ini e adicione:

Abra no editor de texto o arquivo
%JETTY_BASE%\start.ini

# Adiciona e as configurações ao final do arquivo
--exec
-Doracle.jdbc.timezoneAsRegion=false  # Serve para descosiderar
  • Logs

Edite o arquivo %JETTY_BASE%\start.d\console-capture.ini e deixe:

## Para que cada novo log anexe ao arquivo existente
jetty.console-capture.append=true

## Quantos dias para reter arquivos de log antigos
jetty.console-capture.retainDays=30
  • HTTP (Porta)

Edite o arquivo %JETTY_BASE%\start.d\http.ini e defina em qual porta o jetty vai rodar.

jetty.http.port=8080

Passo 6: Configurando HTTPS - Certificados

  1. Adicionando ssl e https, no jetty

Caso não tenha executado o item de https no passo 4: Use o comando abaixo para adicionar o modulo ssl e https no jetty:

java -jar %JETTY_HOME%\start.jar  --add-to-start=https,ssl,deploy,jsp,console-capture
  1. Crie uma senha ofuscada:

Necessário pra segurança.

A senha deve ser a senha do certificado e do keystore. (veremos isso mais pra frente)

cd %JETTY_HOME%\lib
java -cp jetty-util-<versao>.jar org.eclipse.jetty.util.security.Password suaSenhaSuperSecreta
  • saida de ver algo do tipo
OBF:20ld1i9a1ysy1ri71x8c1bim1bhs1x8i1ri71yto1i6o20l9
MD5:f6440512900830666d40fbe12b88adaf

Esta é a nossa senha de exemplo: suaSenhaSuperSecreta. Sua representação ofuscada é OBF:20ld1i9a1ysy1ri71x8c1bim1bhs1x8i1ri71yto1i6o20l9.

  1. Montagem do keystore

Esse procedimento considera que você já tenha um certificado, do tipo pfx, caso seja diferente busque como criar um keystore do tipo JKS com o tipo do seu certificado.

Caso use linux use o comando abaixo:

keytool -importkeystore -srckeystore Wildkns.pfx -srcstoretype pkcs12 -destkeystore keystore -deststoretype JKS

Caso use windows us os passos abaixo:

  • Use o aplicativo key explore

  • Abra ele como administrador, e crie um certificado vazio.

  • Selecione o tipo com JKS

  • Importe o certificado do tipo PFX

  • Digite a senha do certificado e o procure no browser o local onde o certificado esta salvo.

  • Confirme o nome do alias

  • Coloque a senha do keystore (por facilidade, coloque a mesma senha do certificado)

  • Salve o keystore (por facilidade, coloque a mesma senha do certificado)

  • Salve com o nome de keystore

  • Mova o arquivo key store para a pasta do jetty
# Entre na pasta onde salvou o keystore
cp  keystore %JETTY_BASE%\etc
  • Configure as chaves e o caminho do certificado

Adicione as linhas abaixo no arquivo %JETTY_BASE%\start.d\ssl.ini

## Porta da https
jetty.ssl.port=8443

## Keystore password
jetty.sslContext.keyStorePassword=OBF:20ld1i9a1ysy1ri71x8c1bim1bhs1x8i1ri71yto1i6o20l9 # senha gerada anteriormente - passo 6.2

## KeyManager password
jetty.sslContext.keyManagerPassword=OBF:20ld1i9a1ysy1ri71x8c1bim1bhs1x8i1ri71yto1i6o20l9 # senha gerada anteriormente - passo 6.2

## Truststore password
jetty.sslContext.trustStorePassword=OBF:20ld1i9a1ysy1ri71x8c1bim1bhs1x8i1ri71yto1i6o20l9 # senha gerada anteriormente - passo 6.2
  • Acesse pela porta
https://localhost:8443 # vai falar que esta inseguro
https://<url do dominio>:8443 # vai falar que esta seguro

Passo 7: Deploys do war e jars

  • Movas os war e o front para %JETTY_BASE%\webapps

Passo 8: Configuração do jetty como serviços

  • Leia o tutorial de serviço

Passo 9: Vendo logs

Para ver os logs da aplicação

# abra a powershell
# entre na pasta %JETTY_BASE%\webapps
# digite o comando:

Get-Content nome_arquivo_log -Wait -Tail 100

# ou digite o comando com o caminho
# ex: 
Get-Content c:\opt\nexus-app\logs\2020-11-02.log -Wait -Tail 100

Para ver os logs do serviço do Windows

# abra a powershell
# entre na pasta c:/opt/logs
# digite o comando:

Get-Content nome_arquivo_log -Wait -Tail 100

# ou digite o comando com o caminho
# ex: 
Get-Content c:\opt\logs\2020-11-02.log -Wait -Tail 100

Configurações extra s

XML de redirecionamento

Caso queria redirecionar o que recebe em uma url crie um arquivo xml junto as aplicações

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
        <Set name="contextPath">/</Set>
        <Set name="war">/opt/jetty/webapps/<app>.war</Set>
</Configure>

Configurando como serviço

Passo 1: Baixar e instalar o Apache ProcRun.

  • Faça o download de uma cópia dos binários nativos do Apache ProcRun aqui.

  • Descompacte e mova os arquivos prunmgr.exe e prunsrv.exe para C:\opt

Passo2: Criar um serviço para o jetty

  • dentro de C:\opt crie um arquivo com o nome install-jetty-service.bat com os valores:
@echo off
set SERVICE_NAME=JettyService
set JETTY_HOME=C:\opt\jetty
set JETTY_BASE=C:\opt\nexus-app
set STOPKEY=secret
set STOPPORT=50001

set PR_INSTALL=C:\opt\prunsrv.exe

@REM Service Log Configuration
set PR_LOGPREFIX=%SERVICE_NAME%
set PR_LOGPATH=C:\opt\logs
set PR_STDOUTPUT=auto
set PR_STDERROR=auto
set PR_LOGLEVEL=Debug

@REM Path to Java Installation
set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_45
set PR_JVM=%JAVA_HOME%\jre\bin\server\jvm.dll
set PR_CLASSPATH=%JETTY_HOME%\start.jar;%JAVA_HOME%\lib\tools.jar

@REM JVM Configuration
set PR_JVMMS=128
set PR_JVMMX=512
set PR_JVMSS=4000
set PR_JVMOPTIONS=-Duser.dir="%JETTY_BASE%";-Djava.io.tmpdir="C:\opt\temp";-Djetty.home="%JETTY_HOME%";-Djetty.base="%JETTY_BASE%"
@REM Startup Configuration
set JETTY_START_CLASS=org.eclipse.jetty.start.Main

set PR_STARTUP=auto
set PR_STARTMODE=java
set PR_STARTCLASS=%JETTY_START_CLASS%
set PR_STARTPARAMS=STOP.KEY="%STOPKEY%";STOP.PORT=%STOPPORT%

@REM Shutdown Configuration
set PR_STOPMODE=java
set PR_STOPCLASS=%JETTY_START_CLASS%
set PR_STOPPARAMS=--stop;STOP.KEY="%STOPKEY%";STOP.PORT=%STOPPORT%;STOP.WAIT=10

"%PR_INSTALL%" //IS/%SERVICE_NAME% ^
  --DisplayName="%SERVICE_NAME%" ^
  --Install="%PR_INSTALL%" ^
  --Startup="%PR_STARTUP%" ^
  --LogPath="%PR_LOGPATH%" ^
  --LogPrefix="%PR_LOGPREFIX%" ^
  --LogLevel="%PR_LOGLEVEL%" ^
  --StdOutput="%PR_STDOUTPUT%" ^
  --StdError="%PR_STDERROR%" ^
  --JavaHome="%JAVA_HOME%" ^
  --Jvm="%PR_JVM%" ^
  --JvmMs="%PR_JVMMS%" ^
  --JvmMx="%PR_JVMMX%" ^
  --JvmSs="%PR_JVMSS%" ^
  --JvmOptions=%PR_JVMOPTIONS% ^
  --Classpath="%PR_CLASSPATH%" ^
  --StartMode="%PR_STARTMODE%" ^
  --StartClass="%JETTY_START_CLASS%" ^
  --StartParams="%PR_STARTPARAMS%" ^
  --StopMode="%PR_STOPMODE%" ^
  --StopClass="%PR_STOPCLASS%" ^
  --StopParams="%PR_STOPPARAMS%"

if not errorlevel 1 goto installed
echo Failed to install "%SERVICE_NAME%" service.  Refer to log in %PR_LOGPATH%
goto end

:installed
echo The Service "%SERVICE_NAME%" has been installed

:end

Passo 3: Execute

  • Depois execute o arquivo, clicando duas vezes no install-jetty-service.bat.
  • Abra o Service Local e inicie o serviço.

Depuração Remota

Supondo que você tenha seu aplicativo da web implantado no jetty, há duas maneiras diferentes de abordar isso:

Via linha de comando

java -Xdebug -agentlib:jdwp=transport=dt_socket,address=9999,server=y,suspend=n -jar start.jar

Através da start.ini

#===========================================================
# Configure JVM arguments.
# If JVM args are include in an ini file then --exec is needed
# to start a new JVM from start.jar with the extra args.
# If you wish to avoid an extra JVM running, place JVM args
# on the normal command line and do not use --exec
#-----------------------------------------------------------
--exec
-Xdebug
-agentlib:jdwp=transport=dt_socket,address=9999,server=y,suspend=n
# -Xmx2000m
# -Xmn512m
# -XX:+UseConcMarkSweepGC
# -XX:ParallelCMSThreads=2
# -XX:+CMSClassUnloadingEnabled
# -XX:+UseCMSCompactAtFullCollection
# -XX:CMSInitiatingOccupancyFraction=80
# -verbose:gc
# -XX:+PrintGCDateStamps
# -XX:+PrintGCTimeStamps
# -XX:+PrintGCDetails
# -XX:+PrintTenuringDistribution
# -XX:+PrintCommandLineFlags
# -XX:+DisableExplicitGC

Depurando com Eclipse

Vinculando com o Eclipse

  • 1: No Eclipse, clique com o botão direito do mouse no projeto que contém o aplicativo da web implementado no jetty e selecione Depurar → Configurações de Depuração e crie uma nova configuração do Aplicativo Java Remoto . Verifique se a porta que você escolheu é a mesma que você adicionou em Habilitar depuração remota .

  • 2: Em seguida, no seu aplicativo da web, você pode definir um ponto de interrupção em um servlet que, quando disparado, interromperá o encadeamento de processamento da jvm remota para aguardar comandos de depuração da instância do Eclipse.

  • 4: O acesso a esse servlet no navegador, apontado para a distribuição de cais configurada por depuração remota, deve fazer a transição da instância do Eclipse para a visualização Debug padrão.

Nginx

Note

Em construção

Subsections of Nginx

Comandos


  • Comandos
# nginx
nginx -s [ stop | quit | reopen | reload ]

# via system d
sudo systemctl [ stop | quit | reopen | reload ] nginx



## copiar site andre
sudo cp -r /home/uni/Downloads/andre-xbox-series-x/nexus-new-cadastro-front/distwar/src/main/webapp/*  /usr/share/nginx/html

Documentação


Instalando novo site

  • 1º Passo - Crie um novo diretório
## Do site estatico
# mkdir -p /var/www/<nome-site>/public_html
mkdir -p /var/www/unisite.com/public_html
  • 2º Crie as pastas de logs
# mkdir /var/log/nginx/<nome-site>/
mkdir /var/log/nginx/unisite.com/
  • 3º Concenda premissão
# sudo chown -R www-data:www-data /var/www/<nome-site>/public_html
sudo chown -R www-data:www-data /var/www/unisite.com/public_html

# todos estejam aptos a ler seus arquivos. Para isso, utilize o comando abaixo:
# sudo chmod 755 /var/www
  • 4º Passo - mova o site pra pasta
# cp -r /<path-do-site>/* /var/www/<nome-site>/public_html
  • 5º Passo - Crie um novo arquivo de Host Virtual
# sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/<nome-site>
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/unisite.com
  • 6º Passo - Configurando Virtual Hosts
# code /etc/nginx/sites-available/<nome-site>
#  sudo nano /etc/nginx/sites-available/<nome-site>
code /etc/nginx/sites-available/unisite.com



# Add os itens abaixo

 server {
        listen   80; ## listen for ipv4; this line is default and implied
        #listen   [::]:80 default ipv6only=on; ## listen for ipv6

        # root /var/www/<nome-site>/public_html;
        root /var/www/unisite.com/public_html;
        index index.html index.htm;


       # access_log   /var/log/nginx/<nome-site>/access.log;
        access_log   /var/log/nginx/ unisite.com/access.log;
       # error_log    /var/log/nginx/<nome-site>/error.log;
        error_log    /var/log/nginx/ unisite.com/error.log;

        # Make site accessible from http://localhost/
        # server_name <nome-site>;
        server_name unisite.com;
}
  • 7º Cronfigure o site com enable
# sudo ln -s /etc/nginx/sites-available/<nome-site> /etc/nginx/sites-enabled/<nome-site>
sudo ln -s /etc/nginx/sites-available/unisite.com /etc/nginx/sites-enabled/ unisite.com


# Desabilite o Default Virtual Host
sudo unlink /etc/nginx/sites-enabled/default
  • 8º Reinicie o serviço
systemctl restart nginx
# ou
sudo service nginx restart
  • 9º Configurando hosts locais
nano /etc/hosts 


#Virtual Hosts 
localhost    www.example.com 
  • 10º Vendo logs
# Logs de acesso default
tail /var/log/nginx/access.log -f
# personalizado
# tail /var/log/nginx/<nome-site>/access.log -f
tail /var/log/nginx/unisite.com/access.log -f


# Erros default
tail /var/log/nginx/error.log
# personalizado
# tail /var/log/nginx/<nome-site>/error.log
tail /var/log/nginx/unisite.com/error.log

Proxy reverso


  • 1º Desabilite o Default Virtual Host
sudo unlink /etc/nginx/sites-enabled/default
  • 2º Crie o Proxy Reverso Nginx
# Criando arquivo
touch etc/nginx/sites-available/reverse-proxy.conf


# Edite 
code etc/nginx/sites-available/reverse-proxy.conf
# sudo nano etc/nginx/sites-available/reverse-proxy.conf


# Adicione 

server {
    listen 80;
    location / {
        proxy_pass http://192.x.x.2; # redireciona o que vem para esse ip
    }

}
  • 3º Ative a configuração
sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf
  • 4º Teste o Nginx o Proxy Reverso Nginx
service nginx configtest
  • 5º Reinicie o serviço
systemctl restart nginx
# ou
sudo service nginx restart

Gerenciadores de dependências


Warning

Em construção


Paginas:

Subsections of Gerenciadores de dependências

Gradle

Note

Em construção

Subsections of Gradle

Comandos basicos


#  Lista as tasks
gradle tasks

# Mostrar o help
gradle help --taks init

# Inicia um projeto
gradle init

# Executar o projeto
gradle run

# Executa os testes
gradle test

# Installar as dependencias
gradle build --scan

# Builda3 o projeto
gradle build

# Ver cobertura de testes
/app/build/reports/tests/test/index.html

Jar

Lista o conteudo do jar

jar tf app.jar

Mostra o conteudo do arquivo manifest

# extrai manifest
jar xf app.jar META-INF/MANIFEST.MF

# exibe
cat META-INF/MANIFEST.MF

Executa aplicação

java -jar app.jar

Definindo tasks


tasks.register('teste') {
    println 'Hello world'
}

tasks.register('hello') {
    doLast {
        println 'Hello world!'
    }
}
  • Executando task
gradle -q teste 
-ou
gradle teste // mostra status da execução

Scripts em tasks

link: https://docs.gradle.org/current/userguide/tutorial_using_tasks.html#sec:projects_and_tasks

Basico

tasks.register('upper') {
    doLast {
        String someString = 'mY_nAmE'
        println "Original: $someString"
        println "Upper case: ${someString.toUpperCase()}"
    }
}


// exemplo de repetição
tasks.register('count') {
    doLast {
        4.times { print "$it " }
    }
}
  • Executando
gradle upper

Tasks sequencial

tasks.register('taskX') {
    dependsOn 'taskY'
    doLast {
        println 'taskX'
    }
}
tasks.register('taskY') {
    doLast {
        println 'taskY'
    }
}
  • Executando
gradle taskX

# mostrar a execução das duas tasks, pois a taskX depende da taskY

Alterando conportamento de uma task

tasks.register('hello') {
    doLast { // definie a ordem de execução
        println 'Hello Earth'
    }
}
tasks.named('hello') {
    doFirst {  // defini a orde de execução 
        println 'Hello Venus'
    }
}
tasks.named('hello') {
    doLast {
        println 'Hello Mars'
    }
}
tasks.named('hello') {
    doLast {
        println 'Hello Jupiter'
    }
}
  • Executando
gradle -q hello
#saida
#Olá Vênus
#Olá terra
#Olá marte
#Ola jupiter

https://docs.gradle.org/current/userguide/plugins.html#plugins | –> Aplicando plug-ins com o DSL de plug-ins

Dependências


  • As dependências pode ser de dois tipos:
    • como configurações do tipo api - que serão expostas transitivamente aos consumidores da biblioteca e, como tal, aparecerão no classpath de compilação dos consumidores
    • como configuração do tipo implementation que, por outro lado, não serão expostas aos consumidores e, portanto, não vazarão para o classpath de compilação dos consumidores
dependencies {
    api 'org.apache.httpcomponents:httpclient:4.5.7'
    implementation 'org.apache.commons:commons-lang3:3.5'
}

OBS: As configurações compile e runtime foram removidas com o Gradle 7.0. Consulte o guia de atualização como migrar para implementatione apiconfigurações. - compile –> implementation - runtime –> api

Prefira a configuração de implementation em vez de api quando possível.

Subsections of Linguagens de programação

Java

Note

Em construção

Subsections of Java

Utilidades

Comando uteis

# Lista o conteudo do jar
java -jar tf app.jar

# Mostra o conteudo do arquivo manifest
## extrai manifest
java -jar xf app.jar META-INF/MANIFEST.MF

## exibir conteudo
cat META-INF/MANIFEST.MF

# Executa aplicação
java -jar app.jar

Interfaces Funcionais

Streams

  • Metodos uteis - min / max
package streams;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

public class MinMax {
	public static void main(String[] args) {
		Aluno a1 = new Aluno("Ana", 7.1);
		Aluno a2 = new Aluno("Luna", 6.1);
		Aluno a3 = new Aluno("Gui", 8.1);
		Aluno a4 = new Aluno("Gabi", 10);
		
		List<Aluno> alunos = Arrays.asList(a1, a2, a3, a4);
		
		Comparator<Aluno> melhorNota = (aluno1, aluno2) -> {
			if(aluno1.nota > aluno2.nota) return 1;
			if(aluno1.nota < aluno2.nota) return -1;
			return 0;
		};

		Comparator<Aluno> piorNota = (aluno1, aluno2) -> {
			if(aluno1.nota > aluno2.nota) return -1;
			if(aluno1.nota < aluno2.nota) return 1;
			return 0;
		};
		
		System.out.println(alunos.stream().max(melhorNota).get());
		System.out.println(alunos.stream().min(piorNota).get());
		
		System.out.println(alunos.stream().min(melhorNota).get());
		System.out.println(alunos.stream().max(piorNota).get());
	}
}

Metodos uteis - limit / skip / distinct / takeWhile

package streams;

import java.util.Arrays;
import java.util.List;

public class Outros {

	public static void main(String[] args) {
		Aluno a1 = new Aluno("Ana", 7.1);
		Aluno a2 = new Aluno("Luna", 6.1);
		Aluno a3 = new Aluno("Gui", 8.1);
		Aluno a4 = new Aluno("Gabi", 10);
		Aluno a5 = new Aluno("Ana", 7.1);
		Aluno a6 = new Aluno("Pedro", 9.1);
		Aluno a7 = new Aluno("Gui", 8.1);
		Aluno a8 = new Aluno("Maria", 10);
		
		List<Aluno> alunos = 
				Arrays.asList(a1, a2, a3, a4, a5, a6, a7, a8);
		
		System.out.println("distinct...");
        // recuperar os valores distintos (precisa do equals e hash code)
		alunos.stream().distinct().forEach(System.out::println);
		
		System.out.println("\nSkip/Limit");
		alunos.stream()
			.distinct()
			.skip(2) // pulo uma quantidade de itens
			.limit(2) // limita a quantidade de retorno
			.forEach(System.out::println);
		
		System.out.println("\ntakeWhile");
		alunos.stream()
			.distinct()
			.skip(2)
			.takeWhile(a -> a.nota >= 7) // retorna ate achar a condição
			.forEach(System.out::println);
	}
}

Protocolos de comunicação

Note

Em construção

Subsections of Protocolos de comunicação

GRPC

Note

Em construção

Subsections of GRPC

Compilador local


Instalando compilador do protobuf

link: Como posso instalar o protobuf no ubuntu 12.04?

ou

sudo apt-get install libprotobuf-java protobuf-compiler

Gerando codigo

protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/<file>.proto
  • I - diretorio raiz do projeto
  • java_out - Diretorio onde vai ser gerado o codigo
  • Diretorio do arquivo proto

Criando mensagens


link: https://developers.google.com/protocol-buffers/docs/proto3

Exemplo

message SearchRequest {
  string query = 1;
  int32 page_number = 2;  // Which page number do we want?
  int32 result_per_page = 3;  // Number of results to return per page.
}
  • os numero servem para definir a ordem dos dado na serialização para binario
  • Caso remova um campo, e recomendado não usar o numero que ele pertecia, pois isso pode dar conflito no futuro, para garantir que isso o mesmo não seja usado vc pode marcalos como reserved (reservados / excluidos)
message Foo {
  reserved 2, 15, 9 to 11;
  reserved "foo", "bar";
}

Enums

message SearchRequest {
  string query = 1;
  int32 page_number = 2;
  int32 result_per_page = 3;
  enum Corpus {
    UNIVERSAL = 0;
    WEB = 1;
    IMAGES = 2;
    LOCAL = 3;
    NEWS = 4;
    PRODUCTS = 5;
    VIDEO = 6;
  }
  Corpus corpus = 4;
}
// Usando alias para representar a mesma coisa 

message MyMessage1 {
  enum EnumAllowingAlias {
    option allow_alias = true;  // necessario deixar essa opção como true, senão vai dar erro, como abaixo
    UNKNOWN = 0;
    STARTED = 1;
    RUNNING = 1;
  }
}

message MyMessage2 {
  enum EnumNotAllowingAlias {
    UNKNOWN = 0;
    STARTED = 1;
    // RUNNING = 1;  // Uncommenting this line will cause a compile error inside Google and a warning message outside.
  }
}

//Observe que você não pode misturar nomes de campo e valores numéricos na mesma reservedinstrução.

Tipos de Mensagem personalizados

message SearchResponse {
  repeated Result results = 1; //o repeat dis que pode ser repetido os itens, semelhate a uma lista
}

message Result {
  string url = 1;
  string title = 2;
  repeated string snippets = 3;
}

// Tipo aninhado

message SearchResponse {
  message Result {
    string url = 1;
    string title = 2;
    repeated string snippets = 3;
  }
  repeated Result results = 1;
}

// chamdando tipo aninhado

message SomeOtherMessage {
  SearchResponse.Result result = 1;
}

// Exemplo de message aninhada

message Outer {                  // Level 0
  message MiddleAA {  // Level 1
    message Inner {   // Level 2
      int64 ival = 1;
      bool  booly = 2;
    }
  }
  message MiddleBB {  // Level 1
    message Inner {   // Level 2
      int32 ival = 1;
      bool  booly = 2;
    }
  }
}

caso a mensagem que queira colocar dentro da mensagem esteja em outro proto, vc pode importa-lo

Importando

import "myproject/other_protos.proto";

Criando metodos

Tipo de metodos GRPC

O gRPC permite definir quatro tipos de método de serviço:


RPCs unários

Em que o cliente envia uma única solicitação ao servidor e obtém uma única resposta, exatamente como uma chamada de função normal.

rpc SayHello(HelloRequest) returns (HelloResponse);

RPCs de streaming de servidor

Em que o cliente envia uma solicitação ao servidor e obtém um stream para ler uma sequência de mensagens de volta. O cliente lê a partir do fluxo retornado até que não haja mais mensagens. O gRPC garante a ordem das mensagens em uma chamada RPC individual.

rpc LotsOfReplies(HelloRequest) returns (stream HelloResponse);

RPCs de streaming de cliente

Em que o cliente grava uma sequência de mensagens e as envia ao servidor, novamente usando um fluxo fornecido. Depois que o cliente termina de escrever as mensagens, ele espera que o servidor as leia e retorne sua resposta. Mais uma vez, o gRPC garante a ordem das mensagens em uma chamada RPC individual.

rpc LotsOfGreetings(stream HelloRequest) returns (HelloResponse);

RPCs de streaming bidirecional

Em que ambos os lados enviam uma sequência de mensagens usando um fluxo de leitura e gravação. Os dois fluxos operam de forma independente, para que os clientes e servidores possam ler e escrever na ordem que quiserem: por exemplo, o servidor pode esperar para receber todas as mensagens do cliente antes de escrever suas respostas, ou pode alternativamente ler uma mensagem e depois escrever uma mensagem, ou alguma outra combinação de leituras e gravações. A ordem das mensagens em cada fluxo é preservada.

rpc BidiHello(stream HelloRequest) returns (stream HelloResponse);

Cloud Notes


Paginas:

Subsections of Cloud Notes

Subsections of AWS

Practitioner


Warning

Em construção

Architect Associate


Prova de certificação

  • Dominios
Dominíopercentual
Domínio 1: Design de arquiteturas resilientes30%
Domínio 2: Design de arquiteturas de alta performance28%
Domínio 3: Design de aplicações e arquiteturas seguras24%
Domínio 4: Design de arquiteturas econômicas18%
  • Tecnologias aws que podem vão cair na prova

    • Computação
    • Gerenciamento de custos
    • Banco de dados
    • Recuperação de desastres
    • Alta disponibilidade
    • Gerenciamento e governança
    • Microsserviços e desacoplamento de componentes
    • Migração e transferência de dados
    • Redes, conectividade e entrega de conteúdo
    • Segurança
    • Princípios de design sem servidor
    • Armazenamento
  • Serviços abordados

  • Análises:
    • Amazon Athena
    • Amazon Elasticsearch Service (Amazon ES)
    • Amazon EMR
    • AWS Glue
    • Amazon Kinesis
    • Amazon QuickSight
  • Gerenciamento de Faturamento e Custos da AWS
    • AWS Budgets
    • Cost Explorer
  • Integração de aplicações:
    • Amazon Simple Notification Service (Amazon SNS)
    • Amazon Simple Queue Service (Amazon SQS)
  • Computação:
    • Amazon EC2
    • AWS Elastic Beanstalk
    • Amazon Elastic Container Service (Amazon ECS)
    • Amazon Elastic Kubernetes Service (Amazon EKS)
    • Elastic Load Balancing
    • AWS Fargate
    • AWS Lambda
  • Banco de dados:
    • Amazon Aurora
    • Amazon DynamoDB
    • Amazon ElastiCache
    • Amazon RDS
    • Amazon Redshift
  • Gerenciamento e governança:
    • AWS Backup
    • AWS CloudFormation
    • AWS CloudTrail
    • Amazon CloudWatch
    • AWS Config
    • Amazon EventBridge (Amazon CloudWatch Events)
    • AWS Organizations
    • AWS Resource Access Manager
    • AWS Systems Manager
    • AWS Trusted Advisor
  • Migração e transferência:
    • AWS Database Migration Service (AWS DMS)
    • AWS DataSync
    • AWS Migration Hub
    • AWS Server Migration Service (AWS SMS)
    • AWS Snowball
    • AWS Transfer Family
  • Redes e entrega de conteúdo:
    • Amazon API Gateway
    • Amazon CloudFront
    • AWS Direct Connect
    • AWS Global Accelerator
    • Amazon Route 53
    • AWS Transit Gateway
    • Amazon VPC (e recursos associados)
  • Segurança, identidade e conformidade:
    • AWS Certificate Manager (ACM)
    • AWS Directory Service
    • Amazon GuardDuty
    • AWS Identity and Access Management (IAM)
    • Amazon Inspector
    • AWS Key Management Service (AWS KMS)
    • Amazon Macie
    • AWS Secrets Manager
    • AWS Shield
    • AWS Single Sign-On
    • AWS WAF
  • Armazenamento:
    • Amazon Elastic Block Store (Amazon EBS)
    • Amazon Elastic File System (Amazon EFS)
    • Amazon FSx
    • Amazon S3
    • Amazon S3 Glacier
    • AWS Storage Gateway 1 - Architecting for the cloud: Best practices 2 - AWS well-architected framewo

1 - Conceitos


Escalabilidade

Escalabilidade Escalabilidade


Alta disponibilidade

No caso do AWS, refere-se as multi AZs, que dão a segurança de que caso uma fique de fora, a outras ainda estarão disponível. Alta disponibilidade Alta disponibilidade


Serverless

serveless serveless

  • A computação serverless, ou sem servidor, consiste em plataforma que permite aos usuários desenvolver, rodar e gerenciar aplicativos sem ter a preocupação de construir, provisionar e manter a infraestrutura necessária para o projeto.
  • SAM - Serveless aplication model
    • Framework para desenvolvimento e deploy de aplicações serveless.
    • Configurações são escritas em YAML.
  • Serviços que são Serveles na AWS
    • SQS, SNS, Lambdas, Kinesis, DynamoDB, Cognito, S3, Aurora, Fargate ..

Disaster Recovery in AWS

  • DR é um modelo de arquitetura que visa prevenir desastres que possam afetar sua operação.
  • A ideia e “ter uma copia de sua solução” em uma região afastada, que seria “acionada” quando sua região principal ficasse fora.
  • Na AWS a ideia e semelhante, mas propõe que seus serviços e recurso sejam distribuído / replicados em mais de uma região.
  • Tipos
    • on-primeses -> on-primeses -> tem um datacenter em SP e outro em Fortaleza. -> Solução bem cara de manter.
    • on-primeses -> AWS - uma estrutura Híbrida.
    • AWS Região A -> AWS Região B - Replica ou distribui os serviços e recurso em mais de uma região
  • Termos importante
    • RPO - Recover point objective - está relacionado com a frequência de backup.
    • RTO - Recover point objective - está relacionado a tempo de recuperação de desastre. rpo-rto rpo-rto

Estratégias de DR

dr-estrategias dr-estrategias

  • Backup e Restorebkp-restore bkp-restore
    • A ideia aqui e realizar backups com uma certa frequência (RPO) e quando dá um problema se recuperar os dados do backup (RTO).
    • Tem uma alta tempo de recuperação (alto RTO).
    • Muito barato comparado as outras.
  • Pilot Lightdr-pilot dr-pilot
    • A ideia aqui é usar versões pequenas das aplicação (apenas para Apps Core) em outra regiões, e continuamente, sincronizar os dados entre elas. Caso ocorra um desastre seria só redirecionar os trafico para nova região e escalar a aplicação.
  • Warm standbydr-warm-standby dr-warm-standby
    • A ideia aqui seria ter toda a infraestrutura replicada só que em escala menor, caso haja um desastre, se redirecionaria o trafico e escalava as aplicações.
  • hot site / multi site approach hot-site hot-site DR-muilt-site DR-muilt-site
    • A ideia aqui e se ter as aplicações e recurso distribuídos entres as regiões, e os dados sincronizados assim se ocorrer um desastre o trafico seria redirecionado quase que instantaneamente.
    • Tem o menor tempo de recuperação (RTO), porém é uma solução mas cara.

Dicas

dicas dicas



2 - Análises:


AWS Athena

  • Serviço Serverless, que permite realizar analises em arquivos no S3.
  • Usa SQL para fazer queries nos arquivos.
  • Tem conetores JDBC e ODBC para conectar aplicativos de BI.
  • Suportar CVS, JSON, ORC, Avro …
  • Cobrado por uso, queries executadas e mede de dados escaneados.
  • Pode ser usado em BI, Analitics, relatórios e analises de VPC Flow Logs, ELB Log ..
  • Ideal para queries rápidas ad hoc e se integrar com o AWS QuickSight para facilidade de visualização, ele também consegue lidar com análise complexa, inclusive grandes junções, funções de janela e arrays.
  • Usa o Presto com suporte completo a SQL padrão.
  • well architected athena-well-arch athena-well-arch

AWS Elasticsearch

  • Usado para buscas de qualquer campo, muito usado em conjunto com aplicações big data.
  • Pode se disponibilizar um cluster com varias instâncias.
  • Tem integrações com Kinesis Data FireHose, AWS IoT, Cloud Watch Logs.
  • Seria o ELK stack da AWS.
  • Foi subsistido pelo OpenSearch Service
  • well architected well-arch-search well-arch-search

AWS Glue

  • Serviço gerenciado de ETL (extract, tranform, and Load).
  • Serviço Serverless, possui 3 serviços:
    • AWS Crawler - Os rastreadores (Crawler) e classificadores examinam dados de fontes diferentes, classificam dados, detectam informações de esquema e armazenam meta-dados automaticamente no AWS Glue Data Catalog.
    • **AWS ETL ** - O núcleo do programa ETL fornece geração de código Python ou Scala para limpeza, enriquecimento, remoção de duplicatas e outras tarefas complexas de transformação de dados.
    • AWS Glue Data Catalog - fornece armazenamento centralizado e uniforme de meta-dados para rastreamento, consulta e transformação de dados usando meta-dados salvos.
  • Permite extrair dados do S3 ou RBDMS e transformar e enviar para o RedShift. glue glue
  • Pode ser usado com Athena, Redshift, EMR para se criar um catalogo de dados (dataSet) reutilizável (GLUE Data catalog). glue-catalog glue-catalog

AWS Kinesis

Amazon Kinesis Amazon Kinesis

  • Facilita coletar e processar e analisar fluxos (steams) de dados em tempo real.
  • Opção ao kafka da AWS.
  • Tem se um produtor > enviar um record > kinesis data stream > repassa o record > ao consumidores.
  • O ordenação dos dados pode ser feita passando a mesma chave de partição, pois assim os dados serão enviado para o mesmo shard. chave-partição chave-partição
  • Tipo de aplicação
    • Kinesis Data streams - Captura, processa e armazena fluxos de dados.
    • Kinesis Data Firehose - Carrega dados para armazenamentos no AWS.
    • Kiness Data Analytics - Analisa fluxos de dados com SQL e Apache Flink.
    • Kinesis vídeo streams - Capture, processa e guardar fluxo de dados de vídeos.

Kinesis Data streams

  • Captura, processa e armazena fluxos de dados. data-streams data-streams
  • É cobrado por shard provisionados.
  • Cada fragmento (shard) permite entrada de 1 MB/s e saída de dados de 2 MB/s.
  • Tem um período de retenção de 1 (padrão) a 365 dia.
  • Os dados não podem ser deletados (são imutáveis).
  • Consumers - Kinesis client library (KCL) ou AWS SDK.
  • Producer - Lambda, Kinesis data firehose, kinesis data analytics.
  • Pode ser usado como Streaming ETL que permitem que você limpe, aprimore, organize e transforme dados brutos antes de carregar seu data lake ou data warehouse em tempo real.

Kinesis Data Firehose

  • Carrega dados para armazenamentos no AWS. data-firehose data-firehose
  • Serviço totalmente gerenciado pela AWS (Auto Scale, Serveless).
  • Pague apenas pelos dados processados.
  • Serviço próximo do tempo real.

Kinesis Data Analytics

  • Analisa fluxos de dados com SQL e Apache Flink. data-analytics data-analytics
  • Executa os processos em tempo real.
  • Totalmente gerenciado pela AWS.
  • Pagos por volume de dados consumidos.
  • Permite criar fluxo consulta em tempo real.
  • Uso:
    • Analise de período de tempo.
    • Dashboard em tempo real.
    • Métricas em tempo real.

AWS QuickSight

![Como o Amazon Quicksight funciona](assets/How QuickSight Works_without Q_final.026e51297c1fa18b850ce2ffc1575a9124bbad16.png)

  • Serviço de inteligência comercial (BI) promovido por machine learning, escalável, sem servidor, incorporável, construído para a nuvem.
  • Permite que você crie e publique facilmente painéis interativos que incluem o Insights de Machine Learning.
  • é baseado no “SPICE”, um mecanismo de cálculo super-rápido e paralelo na memória


3 - Gerenciamento de Faturamento e Custos da AWS


AWS Budget

  • Pode definir um orçamento que o alerte quando você exceder (ou estiver previsto para exceder) seu custo orçado ou valor de uso.
  • Usado para gerenciamento de custo antes de uma demanda, ou seja definir orçamento para determinada demanda.
  • Pode ser usado para saber quanto se usou daquele planejamento inicial.
  • Através das tags permite ver onde se está gastando seu dinheiro.
  • Pode gerar alarmes de gastos, enviar email, postar em tópicos SNS e configurar ações (Lambdas).
  • Pode criar até 20.000 orçamentos. (soft Limit)

AWS Cost explorer

cost-explorer cost-explorer

  • Serviço usado para ver, entender e gerenciar os gastos (com varias granularidade mês, ano , dia).
  • Permite que você explore seus custos e uso da AWS em um nível alto e detalhado de análise, e permite que você mergulhe mais fundo usando uma série de dimensões de filtragem (por exemplo, serviço da AWS, região, conta de membro, etc.)
  • Contem vários relatórios para analisar os gastos, e permite criar outros customizado.
  • Quando devo usar o AWS Compute Optimizer e quando devo usar o AWS Cost Explorer?
    • AWS Cost Explorer se quiser identificar instâncias do EC2 subutilizadas e quiser entender o impacto potencial em sua fatura.
    • AWS Compute Optimizer se quiser ver as recomendações de tipo de instância além do downsizing. Faz o uso de aprendizado de máquina para identificar tipos de carga de trabalho e escolher automaticamente a metodologia de recomendação específica de carga de trabalho para eles.


4 - Integração de aplicações


Amazon Amazon SNS

Amazon SNS - SMS Amazon SNS - SMS

  • Simple Notification Service.
  • Tem escopo regional. Gerenciado pela AWS.
  • Produtor -> envia > topico -> envia > assinante (pub/sub pattern).
  • O tópico da push na mensagem para os assinantes.
  • Usado quando se precisa notificar varios sistemas.
  • Cada tópico pode ter 10 milhões de assinantes.
  • Limite de 100000 tópicos. (soft Limit)
  • Não retem mensagems, após notificar o assinante é descartada.
  • Assinantes (http, email, lambda, mobile).
  • Politica de acesso.
    • Permite definir uma política de quem pode enviar mensagens para o tópico.
  • Encriptação
    • Em transito vem habilitado por padrão (HTTPS).
    • A do lado do servidor, vem desabilitada, e caso habilite pode selecionar um CMK (Chave mestra do cliente).
  • SNS + SQS - Fan Out pattern
    • A ideia é usar um tópico SNS na frente de N fila para garantir que aquela mensagem possa se processado por N sistema, seja para evitar perda de dados ou por causas de serviços que só permitem notificar um único tópico (ex: S3 events). fan out fan out
    • Message Filtering - permite filtrar as mensagem e notificar os assinantes de acordo com os filtros. message-filter message-filter

Amazon SQS

SQS SQS

  • Amazon Simple Queue Service.
  • Tem escopo regional. Gerenciado pela AWS.
  • Produtor -> envia > fila < recupera <- consumidor.
  • O consumidor da um pull na fila para recupera a mensagem.
  • Auto escalável vai de 1 mensagem por segundo a 10000 por segundo.
  • Retém as mensagem de 1 a 14 dias.
  • Não há limites de quantidade de mensagens na fila.
  • O consumidor deve deletar a mensagem, pois não há um delete após a leitura.
  • Mensagem de ate 254Kb de tamanho, é possível usar o S3 para guardar mensagem maiores.
  • Possível usar métrica da SQS para dispara o Auto Scaling Group via CloudWatch metrics (approximateNumerofMensages).
  • Política de acesso.
    • Permite definir uma politica de quem pode enviar mensagens e consumir da fila.
  • Encriptação
    • Em transito vem habilitado por padrão (HTTPS).
    • A do lado do servidor, vem desabilitada, e caso habilite pode selecionar um CMK (Chave mestra do cliente)..
  • Message visibility timeout
    • Quando uma mensagem é recuperado por um consumidor, ela fica invisível para os outros, esse tempo que invisibilidade é definido por esse campo.
    • Caso seja necessário é possível mudar essa visibilidade via API do SDK.
  • Delay Queues - Permite definir uma atraso na disponibilização da mensagem para leitura.
  • Dead letter queue
    • Fila onde pode ser enviada mensagens não processada, ou processadas com erro por varias vezes. Exemplo a mensagem foi processada 5 vezes sem sucesso, mova ela para DLQ para debbug futuro.
  • Request-Response System
    • Ao postar na fila, é informado um correlationID e a fila de retorno da reposta. Assim que for processar a mensagem devolver o resultado na fila de retorno.
    • request-response-system request-response-system

SQS x SNS x Kinesis

  • Apesar se serem serviços de mensageira, há diferencia sobre o funcionamento deles. SQS x SNS x Kinesis SQS x SNS x Kinesis


5 - Computação


EC2

  • Elastic Compute cloud.
  • Maquinas nas nuvem que são possível usar sob demanda.
  • O Armazenamento e feito com:
    • Network-attached:
      • EBS (Elastic block storage)
    • hardware (EC2 Instance Store)
  • Tem que ter uma rede conectada.
  • Tem que um firewall (Security group).
  • Quando parado os dados de memorias são perdidos e os dados no volume EBS e mantido ate a próxima inicialização
  • Caso queira manter os dados de memoria salvo quando para use a opção de Hibernate (hibernar), que mantém em memoria os dados.
  • Quando destruído a instância os dados de memoria e do EBS principal são destruídos, mas é possível adicionar um segundo EBS ou marcar para preservar o default.
  • EC2 Nitro - nova tecnologia de virtualização adotada pela AWS,
    • Melhora o uso da rede.
    • Melhora o IOPS (Input/output operations per second) dos armazenamento EBS.
  • EC2 vCPU
    • Uma CPU, seria um core de um processador, pode conter varias threads.
    • Uma vCPU seria cada uma dessas threads.
    • É possível especificar qual a configuração de vCPU você precisa, por exemplo para uma aplicação node que é single thead pode se definir 1 vCPU.
  • Placement Groups - Grupos de Posicionamento
    • Permite decide a estratégia posicionamento das instâncias EC2. ou seja onde vai ficar as instâncias de vai ser:
      • Cluster - Todas ais instâncias ficam juntas, tem baixa latência, mas ficam numa única AZ. (alta performance, mas tem um alto risco).
      • Spread - (espalhadas) As instâncias ficar espalhadas em servidores em diferentes AZ, com uma máximo de 7 por grupo por AZ. Usados em aplicações criticas.
      • Partition - Similar ao Spread, mas as instâncias ficam espalhadas em diferentes partições (conjunto de Racks) numa AZ. Pode escalar para centenas de instâncias por grupo, usadas com o Hadoop, Kafka, Cassandra. AWS - Placement Groups AWS - Placement Groups

Tipos de instâncias


Precificação

  • Todas são pagas por horas ativas.

  • on-demand
    • Não necessário contrato, só rodar quando necessário.
    • Recomendado para cargas de trabalho curtas, (dura 3 meses, ou 1 mês).
  • reserved Instances
    • Se faz um contrato de 1 a 3 anos, se reduz o custo em ate 75%.
    • Recomendado para longas cargas de trabalho, exemplo banco de dados
    • Tipos de reservas
      • reserved Instances - onde se reserva um instância de um determinado tipo.
      • convertible reserved instance - onde se reserva um instância e é possível alterar o tipo depois pode ter ate 54% de desconto.
      • scheduled reserved instance - exemplo - toda terça entre 20 a 22 horas
    • Tipos de pagamento
      • NURI - no upfront payments - Nenhum pagamento adiantado - redução em ate 32%.
      • PURI - partial up-front - Adiantado parcial - redução em ate 42% .
      • AURI - All up-front - Tudo adiantado - redução em ate 43%.
  • spot instances
    • Usado para aplicação Serveless, que podem ser paradas a qualquer momento, são maquinas que estão paradas na AWS, poder chegar ate 90% mais baratas. a desvantagens e que ela pode para a qualquer momento, quando quiser.
    • Não são recomendadas para aplicações que precisam de disponibilidades.
    • AWS pode interromper com uma notificação de 2 minutos.
      • spot fleets
        • Conjuntos de spot instance (pool de tipo da maquina e em diferentes regiões), a fim de ter maior economia para executar as carga de trabalho. São configuradas para manter a capacidade alvo, iniciando instâncias de substituição após as Instâncias Spot na frota serem encerradas
        • Usados para aproveitar spot instances com baixo custo, pois o spot fleets pode automaticamente selecionar o conjunto mais barato para executar sua carga de trabalho.
  • dedicate host

    • Aluga-se um servidor físico, para demandas de compliance principalmente.
    • Aluga-se por ate 3 anos.
    • Mas caro tipo de instância.
  • Saving plan

    • Modelo de economia baseado no compromisso de uma quantidade de uso medido em horas num período de 1 ou 3 anos.
    • Economia de ate 66%, é flexível e não precisa se preocupar em gerenciar o custo por instância, apenas com a quantidade de horas usados nas cargas de trabalho
  • Capacity Reservation

    • Permite reserva instâncias por um período “curto de tempo”, sem precisar se comprometer com um plano de 1 ou 3 anos.
    • Usando por exemplo para reservar maquinas para a black friday.
    • Pode ser combinado com o Salving plan.

VPC (Virtual Private Cloud)

  • Uma rede virtual dedicada à sua conta da AWS.
  • Não há custo adicional por usar a VPC. Há cobranças para alguns componentes da VPC, como NAT Gateways. VPC (Virtual Private Cloud) VPC (Virtual Private Cloud) VPC (Virtual Private Cloud) VPC (Virtual Private Cloud)
ENI - interface de rede elástica
  • É um componente lógico de redes em uma VPC que representa uma placa de rede virtual.
  • É atachado como interface de rede no EC2.
  • Pode ser criado separado e depois se atachado a uma instância (exemplo de IP Estático para coletar métricas).
  • Tem escopo regional. ENI - interface de rede elástica ENI - interface de rede elástica Movendo ENI Movendo ENI
Security Group
  • Firewall virtual para sua instância para controlar o tráfego de entrada e saída.
  • Fica restrito a uma VPC.
  • (Regras de acessos) por padrão vem negando tudo na entrada (inbound) e permitindo tudo na saída (outbound).
  • Realiza o controle de acesso em nível de instância, e não ao nível de sub rede. Secure Group Secure Group
  • Amazon VPC - Security Groups
Subnet - sub-redes
  • Bloco de rede dentro de uma VPC.
  • Quando se criar ele é privado por padrão.
  • Para se fazer ela publica, deve se atachar um Internet Gateway e adicionar uma tabela de rota para que tenha acesso ao internet.
Gateway da Internet
  • É um Gateway que você anexa à VPC para permitir a comunicação entre recursos na VPC e a Internet.
Route table
  • É usada para direcionar o tráfego de entrada / saída de uma sub-rede.
  • Ele contém vários CIDRs (intervalos de endereços IP) e para onde direcionar o tráfego apropriado.
NACL
  • Network access control list.
  • Camada de segurança opcional para sua VPC que funciona como firewall para controlar o tráfego de entrada e saída de uma ou mais sub-redes.
  • É usada junto as subnets, por padrão já vem uma que libera todos os tráfegos de IPv4 / IPv6 de entrada e saída.
  • O comportamento padrão de uma ACL e negar tudo tanto na entrada quanto na saída.
Virtual Private Gateway (VGW)
  • É um Gateway lógico criado dentro da AWS, e pode ser usado tanto para sua conexão via VPN ou DX (Direct Conect).
AWS Direct Connect
  • Conexão dedicada, fibra que vai do seu datacenter ate a AWS.
  • o Direct Connect (DX) é um recurso que permite a conexão dedicada e direta com a AWS, fora da infraestrutura da Internet.
Elastic IP
  • Permite solicitar um IPv4 publico.
  • Permite alocar um IP publico a uma instância ou sub-rede.
  • Tem um limite de 5 por região, porque IPv4 são limitados, e AWS coloca barreira obrigando a usar outras soluções.
  • Não será cobrado se você usar a maquina, porém se ela estiver parado você será cobrado.

EC2 - Metadados

Acessando a API de meta-dados de EC2 e possível acessar informações sobre diversos dados usados pela instância apenas dando um curl 169.254.169.254/latest/meta-data.

  • Possível recuperar informações de ID, hostaname e segurança da instância.
  • Só é acessível de dentro da instância EC2, de dentro da AWS.

Elastic Load Balancing

  • Distribui o trafico entre as instâncias de EC2.
  • Usa o healh check para verificar o status da instâncias.
  • Cria um endpoint, para ser a única entrada de requisições.
  • Não gerencia sessões por padrão, existe uma feature chamada Stick session, que realiza isso, porém não é recomendado o uso, pois que controla o dados da sessão é a aplicação.
  • Serviço gerenciado pela AWS.
  • Pode ser configurado com privado ou publico.
  • Envia métricas para o CloudWatch.
  • Há 4 tipos de ELB:
    • classic load balancer CLB -(v1 - old generation - 2009)
      • http, https e tcp.
      • Checa a saúde via endpoint da aplicação.
      • Necessário adicionar instâncias manualmente.
    • Application load balancer ALB (v2 - new generation - 2016)
      • http, htttps e webSocket. - Usa target group para agrupara as instâncias EC2.
      • Tem suporte a routinhg baseado em (listeners) sendo:
        • Path ex:(uni.com/post & uni.com/users).
        • hostmane url (curriculo.uni.com e fotos.uni.com).
        • query string (uni.com?id=123&order=123).
      • Usados bastante numa arquitetura de microserviços Application load balancer Application load balancer
    • Gateway load balance GWLB - (v2 - 2020)
    • Network load balancer NLB -(v2 - new generation - 2017)
      • tcp, tls (secure tcp) e udp.
      • Tem uma latência menor que o ALB ~ 100ms vs (400 ms do ALB).
      • Tem um IP estatico por AZ, é possível usar um Elastic IP. Network load balancer Network load balancer
Target groups
  • Agrupa as “maquinas” para onde o trafico será redirecionado.
  • Essas “Maquinas” podem ser instâncias EC2, servidores on-premisses linkados via IP e lambdas.
  • É responsável por checar a saúde das instâncias.
Stick session
  • Permite que as requisições enviada as instâncias que já atenderam aquele cliente a fim de não perder os dados de sessão.
  • Tipos cookies que podem ser usados
    • aplication-based cookies
      • Custom cookie
        • Gerado pelo target.
        • Pode incluir diversos atributos.
        • Pode ter um nome individual por target group.
        • Não use os nomes AWSALB, AWSALBAPP, AWSALBBTG, pois são reservados.
      • application cookie
        • Gerados pelo load balancer.
        • Cookie name AWSALBAPP.
    • duration-based cookies
      • Cookie gerados pelo load balance.
      • Tem uma duração especificada.
      • Tem os nomes AWSALB para ALB, AWSALBBTG para CLB.
Cross-Zone load balance
  • Essa funcionalidade distribui o acesso igualmente pela quantidade de instâncias, independente de que zona ela esta, caso não habilitada será distribuído o trafico igualmente pela zonas de disponibilidade, e cada instância pode receber quantidade de trafico diferente. Cross-Zone load balance Cross-Zone load balance
  • Configurações de disponibilidade Configurações de disponibilidade Configurações de disponibilidade
SSL Certificates
  • Permite criptografar trafico entre cliente o load balance (in-flight encryption).
  • Hoje temos o SSL e o TLS (este é mais seguro que o SSL).
  • CLB - apenas uma aplicação e apenas um certificado.
  • ALB - suporta múltiplos listeners (entenda como app diferente) e múltiplos certificados e usa SNI (server name indication) para isso.
  • NLB - suporta múltiplos listeners (entenda como app diferente) e múltiplos certificados usa SNI para isso. LB SSL Certificates LB SSL Certificates SNI SNI
Auto Scaling group ALG
  • Permite aumentar a quantidade de EC2 de acordo com a demanda, ou alarmes gerados pelo CloudWatch com base nas métricas ou eventos.
  • Não a cobrança, você só e cobrando pelas recursos (ec2, ebs ..) que são usados.
    • Escabilidade - habilidade de escalar vertical e/ou horizontal.
    • Elaticidades - Capacidade de escalar dinamicamente, através de alarmes ou métricas, ou reduzir as instâncias com a diminuição do volume de acesso, ou uso.
    • Agilidade - Velocidade de se ter infraestrutura a toque de caixa. Auto Scaling group Auto Scaling group
  • Composto pelo atributos
    • Uma configuração \ templates de lançamento (define o tipo de maquina/ armazenamento / Security Group / SSH key pair / User Data que será usada nas instância que seram criadas) .
    • Seta as capacidade mínimas e máximas (quantidade de instâncias).
    • Rede onde ira criar as instâncias.
    • Informações sobre o Load balance onde esta linkado.
    • Política de escalabilidade, que define quando ira escalar para cima ou para baixo.
  • Scaling polices
    • Política de escalabilidade, que define quando ira escalar para cima ou para baixo.
      • Dynamic scaling police
        • É possível usar métricas geradas pelo CloudWatch para definir as políticas (como media de consume de CPU, ou quantidade de requisição).
      • Sheduled scaling police
        • É possível agendar para uma determinado período.
      • Preditive scaling police
        • É possível usa marchine learning (analise do uso anteriores) para criar uma previsão de escalabilidade.
  • Scaling cooldowns - tempo que deve ser esperado após ser lançada uma instância para validar se as métricas delas estão valida, ou se é preciso escalar.
Para a prova
  • Existe uma política de encerramento no auto scaling group:
      1. Encontra a AZ com maior numero de instâncias.
    • 2 . Termina a que tiver o configuração de inicialização mais antiga.
  • Ciclo de vida de uma instancia com o ASG Ciclo de vida de uma instancia Ciclo de vida de uma instancia
  • Diferença entre Configuração de lançamento (Launch configuration) e templates de lançamento (Launch tempalte)
    • Launch configuration é legado, devem ser recriado toda vez que se alterar algum atributo
    • Launch tempalte é nova e:
      • Tem versionamento, que resolve o problema anterior.
      • Pode se cria subconjuntos de configurações que podem ser herdados por outros templates
      • Permite provisionar instâncias on-demand / spot instances ou um mix de ambos.

AWS Elastic Beanstalk

  • Feito para o desenvolvedor, permite ter uma visão centralizada do ambiente de deployado.
  • Usados para aplicações web, ex: cria toa infraestrutura e só precisa passar o pacote que será usando. ex. (war para o tomcat).
  • Usa todos os componentes do AWS (ec2, S3 ..).
  • Seria uma PAAS.
  • O serviço do Beanstalk é gratis, o uso dele não é cobrado, apenas os componentes usados serão cobrados.
  • É totalmente gerenciado pela AWS.
  • Usa como base o CouldFormation para criar os recursos.
  • Componetes
    • Aplicação - Aplicação em si.
    • Versão da aplicação - define a versão da aplicação.
    • Ambiente - Ambiente onde a aplicação pode ser disponibiliza. - Web tier - usa uma balanciador de cargas. - Worker tier - usa filas. beanstalk beanstalk tiers tiers

Amazon ECS

  • Elastic Container Service - Serviço de container proprietário da AWS.
  • Você deve prover e manter a infraestrutura (instâncias EC2). Ou usa o Fargate que abstrai esse gerenciamento.
  • Não te tem custo, só paga as maquinas usadas (EC2, EBS …).
  • Para se subir container, primeiro é necessário configurar uma ECS Task, ele descreve com será construido o container, seria algo semelhante como um arquivo docker-compose. E na Task que se define as políticas de acesso a recursos que a aplicação vai usar alem de rede e grupo de segurança.
  • As Task podem ser disparadas pelo Event Brigde, isso dispara a execução do ECS. ecs ecs ecs-ec2 ecs-ec2 ecs-fargate ecs-fargate

EC2 x Fargate

fagate_ec2 fagate_ec2 ec2-fargate ec2-fargate


Amazon EKS

  • Amazon Elastic Kubernetes Service.
  • Serviço de kubernetes totalmente gerenciado pela AWS.
  • Custo de $0,1 por hora por cluster kubernete ($75$ por mês) mais os recurso (EC2, EBS).
  • Deploy complexo, requer uma pessoa que manja.
  • É Open source assim caso migre de nuvem terá mais facilidade no processo.
  • Usa o ECR para armazenar as imagens. eks eks

AWS Lambda

  • Trabalha com eventos.
  • Tem de 128 MB ate 10 GB de memoria que pode ser usado.
  • Tem escopo regional.
  • Pague por milissegundo usado para executar o código.
  • Serveless (não tem servidor para se preocupar).
  • Se preocupe apenas com a aplicação não com a infraestrutura.
  • Necessário monitorar bem, pois toda a infraestrutura e liberada após o uso.
  • Provisiona servidores de acordo com as chamadas.
  • Altamente disponível e totalmente tolerante a falha.
  • Tempo de execução de ate 15 minutos.
  • Cobrado de 100 em 100 milissegundos de uso.
  • Faz escalonamento horizontal e pode ter ate 999 execução simultâneas.
  • Limitações
    • Execução
      • Alocação de memoria - 128MB - 10GB.
      • Tempo de execução - ate 15 minutos.
      • Variáveis de ambiente - ate 4KB.
      • Espaço em disco (no container do Lambda) - 512 MB.
      • Execuções simultâneas da mesma lambda - 1000 (Pode ser alterado com solicitação).
    • Deploy
      • Tamanho do pacote zippado com a função lambda - 50MB.
      • Tamanho do pacote com a função lambda - 250MB.
  • Lambdas@Edge
    • É possível executar Lambdas em ponto de presenças, para auxiliar itens relacionados ao CDN , Route 53 …. lambda@edge lambda@edge

AWS Step Functions

step-function step-function

  • Permite criar uma workflow para orquestrar Lambdas functions.
  • O Fluxo (flow) é representado o com maquina de estado Json.
  • Pode configurar para executar lambda sequencialmente, paralelas, com condições, e timeouts ..
  • O workflow pode ser executado por no máximo 1 ano, após isso é necessário aprovar por mais 1 ano.

AWS SWF - Simples Workflow Service

AWS Flow Framework Basic Concepts: Application Structure - AWS Flow  Framework for Java AWS Flow Framework Basic Concepts: Application Structure - AWS Flow  Framework for Java

  • Maneira antiga de orquestrar um grande fluxo de trabalho.
  • Semelhante a Step Function, porém roda em EC2.
  • Recomendado apenas para quando se precisar de:
    • Sinais externos para interferir no processo.
    • Quando um processo filho precisar retornar valor ao processo pai.


6 - Banco de dados


RDS

Serviço de banco de dados relacional da AWS.

  • Escala automaticamente em minutos.
  • Serviço totalmente gerenciado pela AWS.
    • Provisiona SO, faz os bkpd e restores, monitora desempenho, faz manutenção.
    • Usa armazenamento do tipo EBS (gp2 ou io1).
    • Não temos acesso ao SSH da maquina onde esta o banco.
  • Permite criptografia.
  • Replica em mais de uma AZ, para segurança.
  • Permite replicas de leitura (read replicas) para melhorar a performance.
  • Tipos
    • Postgres
    • Mysql
    • MariaDB
    • Oracle
    • Aurora
  • Pilares da well architecture well-arch well-arch

Aurora

  • DB proprietário da AWS.
  • 5 vezes mais performatico que o mysql.
  • 3 vezes mais performatico que o postgres.
  • Serviço de escopo regional, porém é possível usar em multi regiões podendo criar uma instalação o global, mas o que será uma master numa região e replicas de leituras nas outras.
  • Faz replicação (6 copias) em 3 AZ.
  • Pode se adicionar ate 15 replica de leituras, para melhorar o uso.
  • Tem a opção serveless, não se preocupando com gerenciamento.
  • Cresce de 10GB em 10GB podendo chegar ate 64TB de dados.
  • 20% mais barato que o RDS comum.
  • aurora aurora
  • aurora-cluster aurora-cluster
Auroral - well architected

aurora-well-arch aurora-well-arch

Conceitos avançados aurora
Aurora Replica - auto scaling

aurora-auto scaling aurora-auto scaling

Custom endpoints

custom-endpoint custom-endpoint

Serveless
  • Scala automaticamente o banco de acordo com o uso.
  • Bom para carga de trabalho que não são muito frequente.
  • Não e necessário planejar, pois ele auto escala para atender a demanda.
  • Pago por segundo de uso.
Multi Master
  • Caso queira alta disponibilidade, nesse caso caso haja falha, todos os nós de leitura passa a escrever também.
  • multi-master multi-master
Global aurora
  • Cross region read replica - útil para desastre recover .
  • Global database
    • Se tem 1 região primaria (read/write) e 5 outras regioões segundarias, com replicação de menor que 1 segundo.
    • há 16 replicas de leitura por região segundaria.
    • Caso de desastre, promove-se outra região como primaria em menos de 1 minuto.
    • global global
Marchine Learning
  • Aurora permite usar marchine learning nos dados através de interação com os serviços Amazon SageMaker e Amazon comprehand.
  • Não há necessidade de ter experiência em marchine learning para usar essa funcionalidade.
  • Caso de uso:
    • Deteção de fraude, propaganda localizada, recomendação de produtos. aurora-ml aurora-ml

Backups

  • São habilitado automaticamente no RDS.
  • São realizados automaticamente.
    • Backup diário.
    • Logs de transações são feito backup a cada 5 minutos, o que permite que seja restaurado a qualquer ponto de 5 em 5 minutos.
  • Tem uma retenção default de 7 dias, que pode ser estendido para 35 dias.
  • Também é possível realizar snapshot do banco (db snapshot).
    • Isso permite uma maior tempo de retenção.

Storage auto scale

Quando se cria um bando no RDS se passa quando ele deve ter, com essa funcionalidade ele aumenta o tamanho da banco ao se aproximar de limite de uso do espaço.

  • Ajuda a aumentar o armazenamento dinamicamente. Quando detetado que esta próximo do limite.
  • Necessário setar um threshold de limite máximo de alocação de armazenamento.
  • Automaticamente modifica o armazenamento se:
    • Tiver menos que 10% de armazenamento alocado.

Read replicas

  • Ajusta a escalar na leitura dos dados do banco.
  • Podem ser criada em:
    • Na mesma AZ onde esta o banco..
    • Em outra AZ.
    • Em outra Região.
  • Após criado, é realizado replicação dos dados de forma assíncrona ( por isso a consistência eventual)
Caso de uso
  • Imagine que se tenha uma aplicação em produção que armazena informação num banco, ai surgi outra aplicação que gera relatório, e que ler varia tabelas, nesse cenário se cria uma replica só de leitura para essa nova aplicação read-replicas read-replicas
Precificação
  • Custo de rede (replicação).
    • Não há se a replica estiver na mesma região.
    • Caso seja em regiões diferentes há um custo adicional de transferência price price

Multi AZ (disastre recover)

  • E criado uma replica do banco de dados em outra AZ, e os dados são sincronizados.
  • E gerado um único DNS name para apontar para o banco tido com “master”.
  • Caso falha ele auto eleva o outro para “master” e não e necessário intervenção manual.
  • Não é usado para escalar, apenas como medida de disastre recover.
  • Caso já tenha um banco que seja Single AZ e queira converte-lo para multi AZ, será criado por debaixo dos panos um snapshot do banco, que será restaurado no novo banco em outra AZ, e então iniciara o processo de sincronização entre os bancos. new db multi az new db multi az

Encryption

  • Para encriptação em repouso.
    • Tanto do master quanto das replicas de leitura com AWS KMS - AES-256.
    • Define a encriptação durante a criação, se o master não for encriptado as replicas de leitura não poderão ser.
    • Para Oracle e SQL Server há o TDE (Trasparent Data Encryption) que é outra maneira de fazer a encriptação do banco.
  • Para encriptação de a bordo (in-flight / durante as transferência).
    • Pode se usar certificados SSL para realizar a encriptação.

Autenticação

  • Pode ser feita usando usurário e senha.
  • Para os bancos postgres, aurora e mysql, ha a opção de IAM Autetication que gera um token para se acessar o banco.
    • Centraliza os usuários, controla acesso via roles.
    • Todo o trafico seria feito usando SSL. iam-autatication-rds iam-autatication-rds

ElastiCache

  • Banco de dados em memoria, Redis o MemCached.
  • Serviço gerenciado pela AWS.
  • Caso de uso:
    • Pode ser usado como cache do banco de dado, para aliviar o acesso ao RDS.
    • Pode ser usado para guarda dados de sessão do usuário, permitindo assim criar aplicações sem estado (aplication stateless)
  • well architected elastic-cache-well-arch elastic-cache-well-arch

Redis

  • Deploy em multi AZ.
  • Tem replicas de leitura para escalar a leitura, tem alta disponibilidade.
  • Persiste os dados, o que permite realizar restores features.
  • Permite encriptar os dados em:
    • Repouso com KMS.
    • Em transito com Redis AUTH. redis redis

MenCached

  • Multi node para partição dos dados (compartimento - Sharding)
  • Não tem alta disponibilidade (replicação).
  • Não persiste dados e não tem backups.
  • Usa arquitetura de multi-thead. mancached mancached

Comparação

comparação comparação

Para Prova

  • Caches no ElastiCach:
    • Não suportam autenticação com IAM.
    • As políticas criada usando IAM, só são usadas em nível de API AWS, não do banco em si.
  • Autenticação:
    • Redis
      • Usa se o Redis Auth, onde se cria uma token de acesso quando se cria o cluster.
      • Isso e algo a mais, pois a segurança mesmo deve ser feita usando Security Groups.
      • Permite usar SSL para os dados em transito. redis-access redis-access
    • MemCached
      • Suporta autenticação baseada em SASL.
      • Lazy load feature lazy-load lazy-load

DynamoDB

  • NoSql do tipo chave e valor.
  • Alto volume de dados.
  • Escala horizontalmente automaticamente de acordo com numero de requisição.
  • Permite usar o DAX (DynamoDB Accelarator) para melhorar o IO para milissegundos.
    • Cachea registo muito acessado, por 5 minutos (TTL)
  • Replica em 3 AZ (Zona de disponibilidade).
  • Tem um scopo regional.
  • Responde em milissegundos.
  • Permite criar tabela global, que replica os dados em diferentes regiões (Brasil, EUA, Europa por exemplo) para isso é necessário ativar o DynamoDB Streams.
  • É schemaless (não tem schema forte).
  • Dispara eventos para o Event Bridge via DynamoDB Streams.
  • Consistências
    • eventual (eventually) -> Pega de qualquer a informação uma das replicas é 5 vezes mais rápido, pois não valida se a informação é a mais recente.
    • forte (strong) -> valida se a informação é mais recente e para isso antes de retorna-la, valida em todas as replicas.
  • Quando criado pode se escolher entre provisionado e on-demand caso provisionado é preciso definir a:
    • Unidade de capacidade de leitura (RCU - Read Capacity Units), sendo cobrado ($0.00013) por RCU.
      • 1 RCU - 1 leitura consistente (strong) lendo ate 4KB por segundo.
      • 1 RCU - 2 Leitura Eventual (eventually) lendo ate 4KB por segundo.
    • Unidade de capacidade de escrita (WCU - Write Capacity Units), sendo cobrado ($0.00065) por WCU.
      • 1 WCU - 1 escrita de ate 1KB
  • well architected dynamoDB-weel-arch dynamoDB-weel-arch

Redshift

  • Banco para Data warehouse.
  • Baseado no Postgres, mas não e usado para OLTP (online transation processing) e sim para OLAP (online analytical processing).
  • Envia-se os dados em escala (de hora em hora) para data warehouse.
  • 10x melhor que outros OLAP, e escala para PBs (Penta bytes) de dados.
  • Baseado em colunas e permite execução massiva de consultas (MPP).
  • Pague pelo que usa, baseado em instâncias provisionadas.
  • Tem uma interface SQL pra escrita de querys.
  • Pode se integra com o AWS Quicksight or Tableau para tarefas de BI.
  • Os dados podem ser carregados do S3, Do DynamoDB ou de qualquer branco via DMS (data migration service) ou via Kinesis firehose. data-importe data-importe
  • Pode escalar de 1 nó ate 128 nós com cada nó tendo ate 160 GB de espaço.
  • Há dois tipos de nós:
    • Nó líder - usado para o planejamento da queries e agregação dos resultados.
    • Nó de computação - Responsável por executar as queries e enviar o resultado ao líder.
  • Tem uma funcionado chamada Sprectrum que permite executar a queries direto no S3, sem precisar carregar os dados para o RedShift. sprectrum sprectrum
  • Redshift Enhanced VPC Routing - permite copiar e carregar dados através de uma VPC sem passar pela internet.
  • Não é multi AZ, cada nó fica numa AZ, por isso para ter recuperação de desastres é feito Snapshots incrementais que são internamente armazenados no S3.
  • Os Snapshots são feitos automaticamente de a cada 8 horas ou a cada 5GB ou podem ser agendados. redshit redshit

Well architected

well-arch-redshift well-arch-redshift


Neptune

  • Banco gerenciado pela AWS usado para grafos.
  • Tem esquemas flexível.
  • Usado por exemplo:
    • Para relacionamentos de Redes Sociais ou para situações que tem muitos relacionamentos.
    • Para os artigos do Wikipédia.
  • Replicado em 3 AZ, pode ter ate 15 replicas de leituras.
  • Visão well architected. netune-well-arch netune-well-arch

EMR

  • Ajuda a criar clusters Hadoop (Big data).
  • Pode ser construido em cima de centenas de instâncias EC2.
  • Suporta Apache Spark, HBase, Presto, Flink.
  • Usa Spot Instances para Auto Scale (que reduz os custos).
  • Uso: Big Data, Marchine Learning e Web Indexing.

Como escolher o melhor BD

Para escolher o melhor banco de dados para lhe atender algumas perguntas são importantes a se fazer.

  • A carga de trabalho pesada e de leitura ou escrita?
  • Qual o thoughput (taxa em que os dados são transmitidos) se precisa?
  • Os itens anteriores são contínuos ou são variam de tempos em tempos, ou seja há picos de acessos?
  • Qual a quantidade de dados se deseja armazenar e por quanto tempo e qual seria o tamanho dos dados?
  • Como serão acessado (segurança)?
  • Qual e o modelo de dado? estruturados ou não? vai precisar fazer joins?
    • Schema forte, ou flexível.
    • NoSql ou RBDMS.
  • Qual seria a latência, haverá concorrência?
  • Qual o custo de licença?

Tipos de Bancos e 5 pillares

  • RBDMS (SQL | OLTP)
    • RDS - Postgres, MySql, SqlServer, Oracle
    • Aurora - Bons para Joins e Dados normalizados.
  • NoSql
    • DynamoDB (~Json)
    • ElastiCache (key-pairs)
    • Neptune (Graphs) - Sem Joins
  • **Object Store **(não é bem um banco, mas serve para armazenar, e deve ser considerado na hora).
    • S3 (Objetos grandes)
    • S3 Glacier - (backups | Arquivamento)
  • Data WareHouse (SQL analytics | BI)
    • RedShift (OLAP)
    • Athena (S3 Querys)
  • Search (Buscas)
    • ElasticSearch (json) - Busca por texto livre, ou estruturas pré definidas.
  • Graphs
    • Neptune - Mostra relacionamento entre objetos


7 - Migração e transferência:

PRODUTODESCRIÇÃO
AWS Migration HubUm local único para rastrear o andamento das migrações de aplicações
AWS Application Discovery ServiceColeta informações de especificação, dados de performance e detalhes de processos em execução e conexões de rede dos servidores
AWS Server Migration ServiceServiço sem agente para migrar workloads apenas virtuais da infraestrutura on-premises ou do Microsoft Azure para a AWS
AWS Service CatalogCrie e gerencie catálogos de serviços de TI aprovados para uso na AWS.
AWS Database Migration ServiceO AWS Database Migration Service ajuda você a migrar bancos de dados para a AWS de modo rápido e seguro.
AWS Application Migration ServiceSimplifique e agilize migrações enquanto reduz custos

AWS DMS

aws-dms aws-dms

  • Serviço de migração de dados para a AWS.
  • Permite migrar dados para o RDS (a nuvem) de um banco relacional on-primeses.
  • Permite que o banco fique ativo durante a migração, pois usa os logs para a migração.
  • Roda numa instância EC2.
  • Permite migrações:
    • homogéneas - de um de um tipo (oracle) para um bando do mesmo tipo (oracle) na nuvem.
    • heterogéneas - de um banco de um tipo (oracle) para outro de outro tipo (mysql)
      • Usa o SCT (Schema conversion tool) para migrar DB diferentes
  • Origem e destino sources-targets sources-targets

AWS SMS

AWS SMS AWS SMS

  • Server Migration Service, serviço de migração de servidores.
  • Pode migrar suas aplicações da infraestrutura física, do VMware vSphere, do Microsoft Hyper-V, do EC2, da VPC e de outras nuvens para a AWS.

AWS DataSync

dataSync dataSync

  • Usado para mover grades quantidade de dados do on-primises para AWS.
  • Permite sincronizar dados com S3 , FSx, EFS. A cada hora / dia/ semana
  • Usa os protocores SMS ou NFS para mover os dados do NAS (network attached storage) para AWS.

AWS Snow Family

  • Dispositivo offline que permite realizar migração de grande quantidade de dados. Muito usado para levar dados para AWS sem usar a rede.
  • Podem rodar instâncias EC2 ou lambdas, para processamentos de dados em áreas remotas, onde não se tem acesso ao recursos da AWS.
  • Há um software chamado OpsHub que fornece uma interface gráfica para os dispositivos.
  • Há 3 tipos:
    • Snowball edge - Usado para transportar TBs e PBs de dados, semelhante a uma maleta.
      • Storage otimized
        • (40vCpu 80Gb Memória) - com 80 TBs compatível com S3.
      • Compute otimized
        • (52vCpu 208Gb Memória) com 42 TBs compatível com S3.
        • Caso necessário pode vir com placa de vídeo.
    • SnowCone - Dispositivo menor com 8TBs de espaço, pesa cerca de 2,1 kg.
      • 2 vCPUS, 4 Gb de memoria, USB tipo c.
    • SnowMobile - Caminhão, usado para transporta dados acima de 10 PBs para AWS. snow-family snow-family
  • Não é possível importar os dado do Snowball diretamente para o Glacier, primeiro se importaria para o S3 e com uma política de ciclo de vida se moveria para o Glacier.

8 - Gerenciamento e governança:


AWS Backup

bkp-service bkp-service

  • Serviço de backup gerenciado pela AWS.
  • Permite centralizar as configurações de backups.
  • Suporta Cross-regions e cross-accounts backups.
  • Pode ter backups agendados ou sob demanda.
  • Permite aplicar uma política de tagueamento do backups.
  • Permite criar uma política de backup (período) e tempo de retenção de um backup.

AWS CloudFormation

cloud-formation cloud-formation

  • Permite criar qualquer recurso da AWS via código (95%).
  • Usado para criar infraestrutura como código.
  • Usa Yaml ou json para declarar os recursos.
  • Ele mesmo se resolve sob a ordem de criação dos recursos.
  • Taggea de forma uniforme os recursos criados.
  • Usando é possível ter uma estimativa de custo da estrutura que se vai criar.
  • Habilidade de se criar infraestrutura em muitos contas, regiões, ambientes com o arquivos do template (StackSets). Permite criar infraestrutura globalmente.

AWS CloudTrail

cloud-trail cloud-trail

  • Provem governança, compliance e auditoria, é o dedo duro da galera que fez merda.
  • Habilitado por default, tem custo zero.
  • Recebe informações do SDK / console / cli / IAM User e IAM roles.
  • Permite ver tudo que foi feito na conta (inclusão, criação ou exclusão de recurso).
  • Monitora todas as chamadas de API da conta.
  • Guarda os logs por 90 dias no cloud trail, caso queira guardar mais tempo e possível configurar no S3 (não vem habilitado por default).
  • Vem aplicado em todas as regiões por padrão.
  • Tipo de eventos analisados:
    • Eventos gerenciados.
      • Operações usados em recursos:
        • Criar rules, criar S3 / EC2, alteração de recurso.
        • Separa os eventos de leitura e escrita.
        • Analise manual do problemas
    • Eventos de dados
      • Não são logados por padrão, e necessário habilitado e é pago.
      • Está em nível do objeto, para os serviços de Lambda, S3 e DymamoDB.
      • Separados por eventos de leitura e escrita.
      • Analise manual do problemas.
    • Cloud trail insights
      • Usado para avaliar ações e detectar anomalias na conta.
      • Analise automática dos problemas (anomalias). via inteligência artificial.
        • Tipo recurso em excesso.
        • Limites de recursos (soft and hard).
        • Permite conectar ao eventBridge para notificação das anomalias.
      • insights insights

AWS CloudWatch

Logs

  • Coleta métricas e logs de tudo no AWS. Também é possível enviar logs através do SDK.
  • Pode ser exportado para o S3 ou feito um stream para o ElasticSearch para analises futuras.
  • LogGroup - Agrupamento de logs, pode ser por exemplo, todos os logs de uma aplicação.
  • LogStream - Fluxo de logs de um recurso.
  • Pode ser definido um período de retenção de logs, e configurado um batch de exportação para o S3.
  • Pode-se ter um tail dos logs do Cloud Watch via CLI.
  • A maioria dos problema que se da aqui e por causa de permissões configuradas errado.
  • Permite aplicar filtros através de expressões regulares ou métricas ou IPs. E com isso dispara alarmes.
  • Por padrão nenhum log e enviado das instâncias EC2, caso queira ter os logs é necessária habilitar o CloudWatch Agent e isso fará que o CloudWatch unified Agent nas instâncias envie os logs. unified-agente unified-agente

Metricas

  • São coletadas de todos os serviços da AWS, São úteis para automatizar ações de acordo com status da métrica.
    • Métricas -» thresholds -» actions.
  • Criar alarmes de acordo com as métricas.
  • E com esses alarmes criar ações (posta numa fila do SNS ou acionar o Auto Scale)
  • Existem métricas default com tempos pré definidos (a cada 5 minutos), mas se necessário e por um custo adicional é possível adicionar novas métricas detalhadas e alterar o tempo de coleta.
  • o Free Tier disponibiliza ate 10 métricas detalhadas. cloud-metrics cloud-metrics
  • Para criar uma métrica customizada, e só usar a API putMetricaData no sdk/cli.
    • Também é possível definir a resolução da métrica ( “tempo de coleta”) sendo:
      • Standard - 1 minuto.
      • High Resolution - 1|5|10|30 segundos - mas tem um alto custo.
    • Permite enviar métrica antigas (ate duas semanas) e métricas futuras ate 2 horas sem que o Cloud Watch reclame.

Alarmes

  • Permite definir alarmes para qualquer métrica.
  • tem 3 status:
    • OK , INSUFICIENTE_DATA, ALARM.
  • Os alarmes podem ser disparados através de métricas e filtros.

Dashboards

  • Com as métricas é possível criar Dashboards, para facilitar a visualização.
  • Os Dashboards são globais.
  • Neles é possível incluir gráficos de diferentes contas AWS e regiões.
  • É possível compartilhar um Dashboard com um terceiro via cognito.
  • Ate 3 Dashboards são de graça, e demais se paga $3 dólares por mês por Dashboard.

Eventos

Permite criar eventos, ous seja ações predefinidas ou agendadas que podem disparar alguns serviços AWS (regras que define ações).

  • Padrão de evento - intercepta eventos dos serviços AWS, tipo quando o status estiver pendente.
    • EC2 start, codeBuild Failure, S3
  • Permite criar crons e eventos agendados.
  • Gera json de evento, que pode ser enviado para um target SNS, SQS

EventBridge - (ponte de eventos)

  • Permite criar uma canal que vai receber eventos (event bus) e criar regras para tratar esse eventos postados nesse canal.
  • É possivel definir uma estrutura para o evento (schema , tipo avro), ou usar algum que já existe, com ele é possivel definir o formato do evento que vai ser diparado por um SDK.
  • A mesma coisa que o Eventos com adicional de que :
    • Permite que algums SAAS envie eventos a AWS.
  • Vai substituir os eventos.

AWS Config

config config

  • Ajuda a verificar o compliance da nossa conta de acordo com a linha do tempo.
  • Mostra quais são as modificações que foram feitas.
  • Pode usar tópicos para notificação.
  • Pode se agregar as analises realizadas nas contas da organização em uma única conta (Uma conta de auditoria).
  • É cobrado, pois fica escaneando os serviços habilitados.
  • Faz monitoramento continuo.
  • Serviço regional, mas nas analise é possível adicionar serviços globais.
  • Contem varias regras (mais de 75), que servem para validar se um serviço esteja compliance, possivel criar próprias regras. Serviço pago $0.003 por regra habilitada
  • Permite ver as alterações feitas que não estão compliance, e quem fez a alteração.
  • Uso, pode adicionado uma regra que valida se há acesso ssh ao um security group e caso detecte é possível disparar uma ação ou uma notificação. notify notify

AWS Organizations

AWS Organizations AWS Organizations

  • Consolide múltiplas contas em uma única conta.
  • Permite consolidar a fatura de pagamento e custos.
  • Unificar a parte de auditoria, monitoração e segurança numa única conta.
  • Há um limite de 20 contas por organização.
  • Com organization é possível definir políticas de acesso a recursos (SCPs) que podem ser aplicadas a uma conta. Exemplo, posso querer que a conta de dev não tenha acesso ao Athena, para isso crio uma política e aplico na conta de dev.
  • Na AWS quando falamos em permissões o DENY tem sempre maior precedência do que o ALLOW. por isso se tiver um item negado na OU Prod esse recurso estará negado na OU HR mesmo que tenha uma política que da acesso.
  • É possível organizar as organizações por:
    • BU (Business Unit) - unidades de negocio (departamento de vendas, financeiro, cobrança ..).
    • Ambientes (produção, desenvolvimento, homologação)
    • Projetos (Ultron, MArk 1 , SpaceX)

AWS Resource Access Manager (RAM)

RAM RAM

  • Permite compartilhar e recursos entre contas duma mesma AWS Organizations.
  • Somente o dono do recurso compartilhado pode exclui-ló.
  • Recursos que podem ser compartilhados:
    • AWS App Mesh
    • Amazon Aurora
    • AWS Certificate Manager Private Certificate Authority
    • AWS CodeBuild
    • Amazon EC2
    • EC2 Image Builder
    • AWS Glue
    • AWS License Manager
    • AWS Network Firewall
    • Aqui estamos chamando o método addFilterBefore para adicionar o nosso filtro `Jwt
    • Amazon S3 on Outposts
    • AWS Resource Groups
    • Amazon Route 53
    • AWS Systems Manager Incident Manager
    • Amazon VPC

AWS Systems Manager

ssm ssm

  • Permite criar grupos de recursos para facilitar a visualização de dados operacionais.

AWS SSM Parameter Store

ssm-parameters ssm-parameters

  • Permite armazena configurações e segredos como parâmetros.
  • Tem criptografia opcional usando o KMS.
  • É Serverless, e fácil de usar com SDKs.
  • Permite disparar eventos via Cloud watch Events.
  • São declarados em forma de caminhos (Paths). ssm-paths ssm-paths
  • Tem integração com o CloudFormation.
  • Ate 10000 parâmetros com valor de ate 4KB é de graça por conta e região.
  • Ate 100000 parâmetros com valor de ate 8KB é cobrado $0.05 por parâmetro. tiers tiers
  • É possível definir TTL para parâmetros (advanced tier), para força a atualização ou deleta. um caso de uso muito bom seria armazenar o token de acesso no parameter store e definir um TTL de 25 minutos, quando ele expirar dispara uma notificação via CloudWatch Events que gera um novo token e atualiza ao parâmetro. ttl-ssm ttl-ssm

OpsWork

  • Permite trabalhar na AWS com Chef e puppet.
  • É um serviço Híbrido (AWS / on-primeses).
  • É uma alternativa ao SSM.
  • Como migrar minhas receitas (hef e puppet) para a AWS -> com opsWork.
  • Com ele não é possível usar o auto-scale da AWS, pois quem vai cuidar disso é o OpsWork.

AWS Trusted Advisor

  • Traz uma análise em tempo real dos serviços baseados nas boas práticas AWS.
  • Fornece orientação que ajuda a reduzir custos e aumentar o desempenho e melhorar a segurança.
  • Analisa e gera recomendações sobre:
    • Custo.
    • Performance.
    • Segurança.
    • Tolerança a falha.
    • Limites de serviços.
  • Há dois tipos de planos
    • Comum - Faz checagem e recomendações comuns
    • Completo - Disponivel para planos de suportes Bussiness & Enterprise.
      • Da acesso programático via APIs


9 - Redes e entrega de conteúdo


Amazon API Gateway

api-gateway api-gateway

  • Serveless, usado para criar APIs Rest.
  • Possível conectar a serviços de login para validar token ou coisa do tipo.
  • Tipos de API
    • APIs RESTful - Para servidores Http ou Lambdas.
    • APIs WEBSOCKET - Para aplicações bidirecionais com webSocket.
  • Tipos de endpoints
    • Edge-Optimized (default) - Para clientes Globais (melhora a latencia).
    • Regional - Para apenas uma região
    • Private - Acesso apenas pela maquinas dentro de uma VPC.
  • IAM Permissions
    • O API Gateway usa uma política para verificar quem tem acesso as APIs para “usuarios” da sua organização AWS, as credencias são enviadas no Header com Sig 4. iam-police iam-police
  • Lamdba Authorizer
    • Conhecido como autorizador customizado, Se cria uma lambda para validar um Token e essa validação e cacheada por uma hora.
    • Paga pelo quantidade de lambda infocado.
    • Pode se usar OAuth / SAML … para autorizar. custom-autorization custom-autorization
  • Cognito user pools
    • Solução AWS, para cadastro de usuário, através dele é possível da a um usuário qualquer acesso a recurso da AWS.
    • Ajuda apenas na autenticação não na autorização.
    • Fornece um padrão de autenticação.
    • Permite usar autenticação externas (de terceiros , Google, Facebook). cognito cognito cognito cognito


Amazon CloudFront

  • Serviço de CDN (content delivery network).
  • Cachea um conteúdo estático de uma aplicação em um edge location (ponto de presença).
  • Diminui a latência de entrega de um conteúdo.
  • Tem mais de 216 pontos de presença.
  • Projete contra ataque DDOS.
  • Possível bloquear um pais de acessar via Geo Restriction.
  • Preço varia de região para região, é cobrado por quantidade de dados trafegados quanto mais mais barato será.
  • CloudFront Signed URL - são comummente usados para distribuir conteúdo privado por meio da geração dinâmica de CloudFront Signed URL (uma para cada conteúdo).
  • CloudFront Signed cookies - são comummente usados para distribuir vários conteúdo privados com uma única URL.
  • É possível usar múltiplas origens no CDN, baseando em padrão da URL. multi-origin multi-origin
  • uso:
    • S3
      • Para distribuição de arquivos.
      • Facilita o upload de arquivos
      • Protege com ataque de negação de serviço.
      • Pode se usar o Origin Access Identity (OAI) para que apenas CDN acesse o bucket e não redirecione para o bucket. Nesse caso o bucket pode continuar privado e acessando pelo CDN vai aparecer os arquivos, pois eles são acessado por um “usuário cdn” liberado. OAI OAI
    • Origem customizada
      • Como aplicação customizada / site estático
      • Servidor http num EC2
  • Beneficio de usar um cloudFront em vez de S3 Cross Region replication.
    • CloudFront
      • Rede de pontos de presença.
      • Arquivos cacheado com tempo de vida de um dia.
      • Recomendado para arquivos estáticos.
      • Mais barato as requisições.
    • S3 Cross Region replication
      • É necessário configurar em o bucket em todas as regiões.
      • Recomendado para arquivos dinâmicos.
      • É possível escrever no bucket original, os outro são apenas de leitura.

Origin Groups

origin-group origin-group

Field level Encryption

field-level field-level


AWS Global Accelerator

Serviço que melhora a disponibilidade de um serviço usando os ponto de presença, melhora a disponibilidade em cerca de 60%.

  • 2 Anycast IP são criado para redirecionar o trafico para os pontos de presença.
  • É usado como proxy para as aplicações do AWS.
  • Recomendado para servidores http, com conteúdo não estático. global-accelerator global-accelerator

Amazon Route 53

  • Serviço gerenciado de DNS.
  • Serviço pago, $0.50 por zona configurada.
  • Gerencia Roteamento da aplicação para regiões de acordo com alguns critérios muito usado como recuperação de desastre, pois identifica falhas e redireciona o trafico para outros lugares .
  • Dentro do serviço também é possível comprar domínios com no registro.br . route-53 route-53

Common Records

Routing police

São políticas de redirecionamento que é possível configurar no route 53.

  • Simple routing police (política de roteamento simples).
    • A se chamar um domínio ele devolve o IP do servidor.
    • Não tem health checks.
    • Se cria um recorde e pode se retornar vários valores e o browser decide qual é o melhor para ele.
  • Weighted routing police (política de roteamento com pesos).
    • É dado um peso para cada servidor, que define a percentagem de requisição que será redirecionado de acordo com o peso.
    • Se cria vários record com o mesmo nome, com retornos diferentes e pesos diferente.
  • Latency routing police (política de roteamento baseado na latência)
    • Redireciona para o servidor de acordo com a menor latência.
    • Se cria vários record com o mesmo nome, com retornos diferentes para cada região.
  • Failover routing police (política de roteamento de falhas)
    • Se defini servidores primários e de failover, caso o primário de algum problema será redirecionado o trafico automaticamente. Usa health checks.
    • Se cria vários record com o mesmo nome, com retornos diferentes cada um com seu health check e se define quem vai ser o primário e o segundario.
  • Geolocation routing police (política baseada em Geo localização)
    • Redireciona a requisição de acordo com a localização do usuário.
    • Bom para direcionar tráficos para aplicações especificas para países.
  • Geoproximity routing police (política de roteamento por proximidade)
    • Redireciona o usuário para o recurso mais próximo da localização do mesmo.
    • Diferencia se do anterior, pois ele é usado para países enquanto esse seria para locais dentro do pais.
  • Multi Value routing police (Política de rateamento de multi valores)
    • Usado para devolver vários retorno e se um dele falhar, se terá outras para redirecionar, se a necessidade de consultar o DNS novamente.
    • Se cria vários record com o mesmo nome, com retornos diferentes cada um. Quanto o browser consulta é devolvido todos os retornos e o browser escolhe o que melhor lhe atende.

Health check

Pode se configurar health checks para monitora a disponibilidade e a saúde da aplicação.

  • São pagos $ 0.50 para endpoints AWS - $ 0.70 para outros endpoints.
  • Há custos adicionais de outras features (String matching, https, latency measurament).
  • Pode se usar http, https, tcp para se configurar como será a verificação.
  • Disponibiliza 15 diferentes hosts para checagem (em varias regiões)

AWS VPC

vpc vpc

  • Virtual private cloud (rede privada na nuvem).
  • Tem escopo regional.
  • Toda região tem um VPC default, configurada com subnets publicas, ou seja tem acesso via Internet.
  • Pode haver ate 5 VPCs por região (soft Limit).
  • Cada VPC pode ter ate 5 CIDRs sendo:
    • No mínimo /28 com 16 IPs.
    • No máximo /16 com 65536 IPS.
  • Como VPC é privado só são permitidos os ranges:
    • 10.0.0.0/8
    • 172.16.0.0/12
    • 192.168.0.0/16
  • Resolução de DNS, há duas configurações possíveis
    • enableDnsSuport (configuração de resolução de DNS)
      • O padrão para VPC é true, serve para habilitar o suporte a resolução de DNS na VPC .
      • Private Dns
    • enableDnsHostname
      • true na VPC default mas false para novas VPCs.
      • Habilita o DNS para instâncias e a criação de hostname para instâncias.
      • Public Dns dns dns

CIDR

cidr cidr

  • Classless inter-Domain Routing (Roteamento entre domínios sem classe).
  • Usado para repartir os endereços IPs e definir ranges de ips.
    • x.x.x.x/32 -> tem 1 IP
    • 0.0.0.0/0 -> todos os IPs mask mask

Subnets

  • Bloco de rede dentro de uma VPC.
  • Tem escopo de AZ.
  • Quando se criar ele é privado por padrão.
  • Para se fazer ela publica, deve se atachar um Internet Gateway.
  • E adicionar uma tabela de rota de comunicação com o Gateway.
  • AWS reserva 5 IPs (os 4 primeiros e o ultimo) em cada subnet ex: o bloco CIDR 10.0.0.0/24:
    • 10.0.0.0 - Endereço de rede.
    • 10.0.0.1 - Reservado para o VPC Router.
    • 10.0.0.2 - Reservado para mapear DNS.
    • 10.0.0.3 - Reservado para uso futuro.
    • 10.0.0.255 - Endereço de broadcast.

Internet Gateway

image-20210907203053110 image-20210907203053110

  • Permite que uma VPC tenha acesso ao Internet.
  • Escala horizontalmente e tem alta disponibilidade.
  • Deve haver um Internet Gateway para uma VPC.
  • Também fazem NAT para instâncias EC2 que tem IP publico.
  • Lembrando que quem permite acesso ou não a Internet e a tabela de Rotas.

Route table

AWS VPC - Internet Gateway, Route Tables, NACLs | 4sysops AWS VPC - Internet Gateway, Route Tables, NACLs | 4sysops

  • Serve para direcionar o trafico de rede para as subnets, permitindo assim que se tenha acesso a Internet ou não.
  • É boa pratica criar no mínimo duas tabelas de rotas por VPC:
    • Uma tabela de rotas publica que ter as subnets publicas, esta se liberar o trafico de qualquer lugar colocando como target o Internet Gateway.
    • Uma privada onde vai estar as subnetes privadas.

NAT Gateway

AWS — Difference between Internet Gateway and NAT Gateway | by Ashish Patel  | Awesome Cloud | Medium AWS — Difference between Internet Gateway and NAT Gateway | by Ashish Patel  | Awesome Cloud | Medium

  • As instâncias das subnets privadas precisam acesso a Internet para atualizações, é com usa de NAT que fazemos isso.
  • Totalmente gerenciado pela AWS.
  • Pague por hora e banda usada.
  • São criado em uma AZ especifica e Usam Elastic IP. caso queira alta disponibilidade é recomendado criar e mais de uma AZ.
  • Não pode ser usado por instâncias da mesma sub-rede, apenas por outras.
  • Se criar um NAT Gateway numa subnet publica e apronta o trafico das subnets privadas para o NAT, que por sua vez via route table repassa ao Internet Gateway, como nas subnets privadas só que pode acessar e que esta na mesma VPC se mantém a segurança.

Secure Group

sg sg

  • (Regras de acessos) por padrão vem negando tudo.
  • Só permite acesso, não preciso negar.
  • É a primeira camada de segurança
  • Esta no nível de instâncias. Pode ser entendido como firewall das instâncias EC2.
  • Eles têm estado, o que significa que todas as alterações aplicadas a uma regra de entrada são automaticamente aplicadas a uma regra de saída.

NACL

Learn AWS Network ACL and Security Groups in under 5 minutes | by João  Marcelo Souza | Medium Learn AWS Network ACL and Security Groups in under 5 minutes | by João  Marcelo Souza | Medium

  • Network access control list, deve haver uma por subnet.
  • Deve dizer o que é permitido e o que é negado. Seguindo a ideia de procedência indo de 1 - 32766, sendo quanto menor no numero maior a procedência.
  • É a segunda camada de segurança.
  • Esta no nível de Subnets. Pode ser entendido como firewall de subnet.
  • Eles não têm estado, o que significa que qualquer alteração aplicada a uma regra de entrada não é aplicada automaticamente a uma regra de saída.

VPC Peering

  • Permite conectar 2 VPCs, mas para isso não pode haver sob posição de CIDRs.
  • Não são transitivas, ou seja no exemplo abaixo a VPC A não esta conectada a VPC C. vpc-peering vpc-peering
  • Caso precise que elas se “vejam” e necessário criar um VPC Peering com as duas. vpc-peering vpc-peering
  • Para cada conjunto (A - B , B - C, A - C) é necessário atualizar as tabelas de rotas, para que as instâncias possam se ver.
  • Serviço cross account e inter-regions, ou seja é possível conectar VPCs de contas diferentes e em regiões diferentes.
  • Possível configurar Security Groups que considerem VPCs pareadas.

VPC Endpoints

  • Permite criar endpoints para acesso de serviços internos da AWS.
  • Usado quando queremos que uma rede privada tenha acesso a recursos AWS, mas sem que esse trafico saia para a internet.
  • Ele remove a necessidade de se ter uma NAT Gateway para acessar serviços da AWS.
  • Tipos:
    • Interface - cria uma interface de rede (ENI) que fornece um IP para os serviços devem ser configurado o acesso na Security Group.
    • Gateway - usa um Gateway para provisionar um destino e deve ser configurado na tabela de rotas (Route Table)
  • Caso use VPC Endpoints deve se atentar a usar as configurações de DNS, Outra coisa que pode gerar confusão e que a partir da hora que se usa o VPC Endpoints e necessário informar as região ao usar comandos do CLI, pois o VPC Endpoints tem escopo regional.

VPC Flow Logs

  • Permite capturar o trafico IP dentro de uma VPC.
  • Tipos:
    • VPC Flow Logs - se aplica a tudo dentro da VPC.
    • Subnet Flow Logs - se aplica as subnets dentro de uma VPC.
    • ENI Flow Log - Se aplica a uma interface de rede.
  • Podem ajudar a monitorar traficos de rede dentro da VPC, ajuda na troubleshooting.
  • Pode se usar o Athena ou Cloud Watch Insights para identificar anomalias.

Bastion Hosts

Bastion Hosts Bastion Hosts

  • Maquina numa rede publica da onde é possível conectar a instâncias em uma rede privada via SSH.
  • Se conectar ao Bastion Hosts via SSH e a partir dele se conecta as instâncias na rede privada.

Virtual Private Gateway

Virtual Private Gateway Virtual Private Gateway

  • Permite ligar uma rede on-primise a AWS via VPN, para isso é necessario configurar um Virtual Customer Gateway do lado do on-primese e do lado da AWS cria se uma Virtual Private Gateway.

AWS Direct Connect

dx dx

  • Conexão dedicada, fibra que vai do seu datacenter ate a AWS.
  • Demora cerca de 1 Mês para ser implementado toda a infraestrutura.
  • O Direct Connect (DX) é um recurso que permite a conexão dedicada (vai de fibra ate o datacenter) e direta com a AWS, fora da infraestrutura da Internet.
  • Exemplo de uso, o Itaú deseja ter a melhor conexão possível entre seus datacenter e a AWS, ele contrata um DX que vai ligar uma fibra do datacenter do Itaú até a AWS (Um parceiro).
  • Caso se queira conectar mais de uma região deve se usar um Direct Conect Gateway DX-GW DX-GW
  • Alta disponibilidade DX DX

Egress Only Internet Gateway

  • Um gateway da Internet somente de saída é um componente da VPC horizontalmente escalado, redundante e altamente disponível que permite a comunicação de saída pela IPv6 das instâncias na VPC para a Internet e impede a Internet de iniciar uma conexão IPv6 com suas instâncias.

AWS PrivateLink - VPC Endpoint Services AWS PrivateLink - VPC Endpoint Services

  • Permite compartilhar um serviço de uma VPC com outra VPC sem precisar que aquele serviço publico, ou sem precisar ligar as VPC com VPC Peering.

Transit Gateway

AWS — Transit Gateway AWS — Transit Gateway

  • O AWS Transit Gateway conecta VPCs e suas redes locais por meio de um hub central. Isso simplifica a rede e elimina os complexos relacionamentos de emparelhamento. Ele atua como um roteador de nuvem e cada nova conexão só é feita uma vez.
  • Transit Gateway é um recurso regional e pode conectar milhares de VPCs na mesma região da AWS.
  • Pode ser compartilhado com outras contas da AWS usando RAM.
  • Casos de Uso
    • Para implementar a topologia Hub e Spoke.
    • Para conectar vários Amazon VPCs entre regiões.
    • Forneça aplicativos em todo o mundo - o Transit Gateway ajuda a criar aplicativos que abrangem milhares de Amazon VPCs. Tudo é mais fácil de implantar, gerenciar e solucionar problemas.
  • Limitações
    • O peering do Transit Gateway só é possível entre regiões, não dentro da região.
    • Você pode se conectar a no máximo três Transit Gateways em uma única Conexão Direct Connect para conectividade híbrida.
    • O Transit Gateway não oferece suporte ao roteamento entre VPCs com CIDRs sobrepostos.

Custo de rede

net-cost net-cost image-20210908210015556 image-20210908210015556 image-20210908210158231 image-20210908210158231 image-20210908210357597 image-20210908210357597



10 - Segurança, identidade e conformidade


Modelo de responsabilidade compartilhada

modelo-resp-compartilhada modelo-resp-compartilhada


AWS Certificate Manager

  • Serviço que permite provisionar, gerenciar e implantar facilmente certificados SSL/TLS para uso com os serviços da AWS e os recursos internos conectado.
  • Permite solicitar certificados e implanta-los em Elastic Load Balancers, distribuições do Amazon CloudFront e APIs no Amazon API Gateway.
  • Permite criar certificados privados para recursos internos e centralizar o gerenciamento do ciclo de vida dos certificados

IAM

  • Escopo global, controle de acessos.
  • Tem como base o mínimo privilegio possível.
  • Criação de usuário e grupos de usuários, grupos não podem conter outros grupos.
  • Se atribui políticas de acesso (IAM Police) ao grupo, que vão dar acesso a todos os usuário daquele grupo.
  • Políticas de acesso (permissões).
    • Escrita em json.
    • Seguir regra de menor privilegio.
    • A validação de acesso e feito a cada acesso, de forma automática.
    • Podem ser do tipo:
      • identity-based - Política que são destinados a usuário / grupos e rules
      • resource-based - Políticas que são atribuídas a recursos, para da acesso a outro recursos.
  • Access keys - usadas para dar acesso ao AWS CLI e ao AWS SDK.
    • É possível usar um serviço de shell na nuvem (cloud shell) que gera um CLI sem a necessidade de configurar access key.
  • Roles (funções)
    • Usadas para dar acessos de recursos a recurso (acesso ao S3 por um EC2)
    • Criação de roles de dão acesso a recurso sem ser necessário atribuir ao um usuário ou grupo
    • Podem ser assumidas por recursos ou usuários federados ou usuário de outras contas AWS.
  • Dentro do IAM temos:
    • iam user - Usuário comum.
    • federated user - usuário de fora da organização, usuário do Facebook por exemplo.
    • iam role - permissões que são dadas a recurso, tipo EC2 para acessa um S3.
    • identity provider (idp) - Permite customizado acesso provider de terceiros e liberara acesso via token de acesso do STS.
  • IAM Conditions
    • Permite adicionar condições nas políticas de acessos AWS. conditions conditions
  • IAM Permission Boundaries (limite de permissões)
    • Quando se criar usuário ou Roles e possível dar permissão genéricas, tipo de administrador , e setar um limite para essas permissões, exemplo o cara é administrado apenas nos recursos do S3.
    • SCP (Service control policies ). limite limite
  • Lógica da avaliação de política Lógica da avaliação de política - AWS Identity and Access Management Lógica da avaliação de política - AWS Identity and Access Management

MFA (multi factory atutenticator)

- Há dois via sofware (dispositivo MFA virtual, Chave de chegurança U2F (ex: YUbiKey))
- Há uma opção de Hardware (ex: token Gemalto)Basic recomendations

IAM Security Tools

  • IAM Credencial Report (Account level) -> Lista todas as contas de usuário e o status de cada uma.
  • IAM Access Advisor -> Mostras os serviços que o usuário tem acesso e a ultima vez que o mesmo acessou.
Basic recomendations

Basic recomendations Basic recomendations


AWS Cognito

  • Permite que usuário tem uma identidade para que possam interagir com as aplicações AWS.
  • Congnito User Pools - (CUP)
    • Funcionalidade que permite cadastro de usuário para aplicações (mobilie, …), pode usar Google, Facebook com provedor de login (Federated identity).
    • Banco de dados de usuários de aplicações mobile.
    • Pode usar usuário (ou e-mail) / password (simple login) or JWT (json web token).
    • É integrado com o API Gateway.
  • Cognito identity Pools (FIP - Federate Identity)
    • Provem usuários para acessar recursos da AWS diretamente. Usuários que não são da sua organização mas que precisam acessar por algum motivo.
    • Tem integração com o Congnito User Pools onde são “armazenados” os usuários.
    • Ao fazer login dessa forma é gerado credenciais AWS como o STS com políticas previamente definidas para que usuário acesso ao recurso AWS.
  • Congnito Sync
    • Sincronizar dados dos dispositivos com o Cognito.
    • Guarda preferências dos usuários.
    • Talvez caia em desuso e seja substituído pelo AppSync (Serve para sincronizar dados de aplicativos mobile e web app, Usa GraphQL).

AWS Directory Service

  • Forma de se usar o ADSF (active directory na AWS) AWS Directory Service AWS Directory Service

AWS Identity Provider

  • Permite que usuários de fora da AWS, tenham acesso temporário aso recursos.
  • Há varias maneiras de criar um IdP.
    • Sigle Sign On
    • SAML 2.0
      • Permite integrar o Active Directory (ADFS) com AWS.
      • Da Acesso ao AWS Console e CLI (temporário).
      • Não precisa criar um usuário IAM.
      • Forma antiga de conectar, hoje usa-se o Sigle Sign On saml-2.0 saml-2.0
    • Custom Identity Broken.
      • Usado para provider não compatíveis com SAML 2.0.
      • Identity Broken chama o STS para gerar o Token de acesso. Identity Broken Identity Broken
    • Web Identity Federation com Cognito
      • Permite dar acesso a um recurso usando provider como Facebook. <strong>Web Identity Federation com Cognito</strong> <strong>Web Identity Federation com Cognito</strong>

AWS Single Sign On

  • Permite centralizar o login, para as contas AWS, ou outros aplicativos como Office365, Slack.
  • É usado quando se tem uma Organização com muitas contas, ai ser configura para que quando o usuário faça o login apareça as contas que ele pode logar na AWS, sem ser necessário criar um usuário em cada conta toda vez. O acesso fica centralizado. sso sso

AWS STS - Security Token Service

  • Permite dar acessos a recursos AWS de forma limitada e temporária.
  • Em geral o token da acesso por de 15 minutos a 1 hora.
  • Tipos de APIs:
    • AssumeRole
      • Permite da acesso a ação a sua própria conta ou outras contas a realizar ações em sua conta. AssumeRole AssumeRole
      • Diagrama de acesso a outras contas cross-account cross-account
    • AssumeRoleWithSAML - a mesma coisa só que para usuários logados com SAML.
    • AssumeRoleWithWebIdentity - a mesma coisa só que para usuários logados com IdP (identity provider) - Facebook login, Google Login …. Não é recomendado usar, recomenda-se usar o cognito para isso.
    • GetSessionToken - Para MFA, para usuário root de uma conta AWS.

AWS Secrets Manager

  • Usados para guardar segredos (principalmente de banco de dados).
  • Permite realizar a rotatividade dos segredos automaticamente.
  • Pode ser usado para guarda senhas em produção.
  • É muito usado junto com banco de dados.
  • Os segredos ficam criptografados.

AWS KMS

  • Serviço de encriptação da AWS - Key Managemente Service.
  • Não é possível baixar as chaves.
  • Gerencia chaves de criptografia.
  • Serviços com a opção de se encriptar dados:
    • EBS, S3, RedShift, RDS, EFS ….
  • Serviços com criptografia default:
    • CloaudTrail Logs, S3 Glacier, Storage Gateway ….

Cloud HSM - Hardware Security Module

  • Aws provem um hardware dedicado para que nós possamos gerenciar nossas chaves.
  • O hardware é resistente a alteração e é homologado (FIPS 140-2 Level 3 Compliance)

Tipos de chaves

  • CMK - Customer Master Keys.
  • Gerenciadas pelo usuario - CMK
    • Criado pelo usuário dentro do KMS ou **HSM **(hardware security module ), pode ser deletada ou alterada.
    • Pode se habilitar a rotação de chave a cada 1 ano.
    • Também e possível rotacional manualmente, mas é recomendado para chaves Assimétricas.
    • Tem um custo de $1 por mês, e a cada chamada paga-se $0.003.
    • Pode ser dos tipos
      • Simétricas (AES-256)
      • Assimétricas (RSA & ECC Key Pairs)
  • Gerenciadas pela AWS - CMK
    • Chaves criadas e gerenciada pela AWS, não temos acesso.
    • Não tem custo
      • São as usadas nos serviços.
        • EBS, S3, RedShift, RDS, EFS.
  • Chaves do HSM
    • Chaves criada usando o HSM (hardware security module )
    • Replicado em mais de uma AZ cloudhsm cloudhsm hms-kms hms-kms

AWS Shield

aws-shield aws-shield

  • Protege contra ataques DDOS | SYN/UDP (floods an reflecion atack).
  • Trabalha na camada 6 e 4 (rede e transporte).
  • Versão standard é de graça para todos os clientes.
  • Tem versão advanced (analisa a camada 7 aplicação).
  • Fica nos prontos de presença.
  • Tem a versão aws shild advanced 24/7 premium com DRP (DDos response team) que:
    • Tem custo adicional $ 3000 por organização.
    • Pode ser usado em Route 53 / Cloud Front | Global Acelerator | Load Balance

AWS WAF

  • web application firewall.
  • Permite bloquear acesso através de uma lista de regras.
  • Fica nos prontos de presença.
  • Protege as aplicações ataques (Layer 7 - aplication).
  • Pode ser usado em:
    • Load balance (http).
    • API Gateway.
    • CloudFront.
  • Permite criar web ACL (web acess control list) que permite:
    • Bloquear ranges de ips, headers …
    • Protege contra Sql Injection, Cross-site Spriting (Xss).
    • Bloqueio por pais ou região (gro-match).
    • Bloqueio por quantidade de requisição.
    • Tem um custo de $5 por mês por ACL.
  • AWS Firewal manager
    • Permite gerenciar regras de todas as contas AWS de forma centralizada.
    • Tem regras comuns de segurança.

AWS Guard Duty

guard-duty guard-duty

  • Serviço de inteligência artificial para detectar anomalias na sua conta.
  • Tem free trial , após isso é gerado cobrança.
  • é um serviço regional.
  • Recebe dados do:
    • Cloud Trail - detecta chamadas incomuns e não autorizadas.
    • VPC Flow - detecta trafico incomum e IPs incomuns.
    • DNS Logs - detecta instâncias dados comprometedores enviando dados de DNS.
  • Ler todos e através de algoritmos ele detecta coisas erradas.
  • É possível conectar ao event Brigde do Cloud Watch para notificar.

AWS Inspector

inspect inspect

  • Permite que você analise o comportamento de seus recursos da AWS e ajuda a identificar possíveis problemas de segurança.
  • AWS Inspector inspeciona instâncias EC2 contra ameaças comuns.
  • Tem um agente que pode ser instalado nas EC2.
  • Analisa apenas instâncias em execução e procura risco na aplicação.
  • Possível configurar a periodicidade de execução.
  • Tem um alto custo sendo:
    • 60$ - para analises de rede (Acesso indevido e capacidade).
    • 120$ - para analise da maquina (checa por vulnerabilidade comuns).

AWS macie

macie macie

  • Usa machine learning, para detectar dados sensíveis (PII - Personally identifiable information).
  • Totalmente serveless.
  • Analisa os dados e notifica o CloudWatch EventBridge que notica via SQS, SNS ou Lambda.

AWS Security HUB

security-hub security-hub

  • Centraliza a gestão de segurança de múltiplas contas.
  • Agrega alertas de outros serviços visto anteriormente.
  • Usa o AWS config .
  • Dá para automatizar com funções para resolver problemas conhecido (tipos porta ssh liberada ..)

11 - Armazenamento

storage storage


EBS - Elastic block storage

  • Serviço de armazenamento de instâncias EC2.
  • Nativamente replicado dentro da Zona de disponibilidade.
  • Backup e feito usando snapshot.
  • E possível criar uma novo volume com o snapshot criado.
  • Possível encriptar, dados em repouso em transporte e snapshots.
  • O processo de encriptação e transparente ao usuário.
  • Para se encriptar um volume já criado sem encriptação e necessário criar um snapshot e depois criar uma copia desse snapshot e marcar a opção de encriptação e depois criar um volume a partir desse novo snapshot e conecta-lo na instância.
  • É possível usar o EBS com RAID (apenas o Raid 0 e o Raid 1) sendo:
    • RAID 0 - os dados são dividos entre os discos (melhora o desempenho).
    • RAID 1 - os dados são espelhados entre os discos (tolerante a falha).
    • Precisa ser feito dentro do SO, não há ferramentas dentro do console para isso
  • Tipos Tipos ebs Tipos ebs tipos-ebs tipos-ebs os tipos io1 / io2 permitem conectar o mesmo em mais de uma instância, isso é usado em aplicação de alta disponibilidade, ex Cassandra …
Uso

ebs-snapshot ebs-snapshot


EFS - Elastic file system

  • NFS (network file system) que pode ser montado num EC2.
  • Diferente do EBS que só pode sem usado em apenas uma AZ, o EFS pode ser montado e AZs diferentes
  • Pague por uso.
  • Usa um security group para se linkar as instâncias.
  • Usados quando se quer compartilhar arquivos com varias instâncias ex. arquivos wordpress.
  • Usados apenas com Linux (ami), não compatível com Windows.
  • Pode ser encriptado usando KMS.
  • Suporta milhares de clientes, e pode ter ate 10gb+ de thoughput .
  • O tipo de performance pode ser definido na criação podendo ser:
    • General purpose (default) - (web server - cms, etc…)
    • Max IO - Big data, processamento de vídeo.
  • Throughput mode
    • Bursting - Cresce de acordo com o tamanho do filesystem.
    • Provisined - Possível definir um nível.
  • Storages Ties (lifecycle management feature - Move os arquivos após 30 dias)
    • Standard - para arquivos acessados frequentemente
    • infreaquet access (EFS-IA) - Arquivos que não são acessado com muita frequência, tem preço menor, porem e cobrado por recuperação de arquivo. efs efs
Uso

efs-uso efs-uso


Amazon FSx

  • Semelhante ao EFS (usado para Linux) só para Windows.
  • Tem suporte para os protocolos SMB e NTFS.
  • Tem suporte para o Active Directory da Microsoft.
  • Amazon FSx for Lustre
    • Lustre (linux + cluster) é um sistema de arquivo distribuído e paralelo para computação em escala.
    • Usado em marchine learning e Computação de alta performace (HPC)

Amazon S3

  • Serviço regional com visibilidade global.
  • E totalmente gerenciado pela AWS.
  • Tem que ter o nome único em todo mundo para o nome do bucket. Pois será usado na URL do arquivo armazenado. De 3 a 63 letras, sem caracteres especiais.
  • Repica os dado em 3 AZ.
  • Tem uma durabilidade de 99,999… (11 noves).
  • E possível definir as permissões de acesso.
  • É possível subir qualquer arquivo de ate 0 bytes ate 5 terasbytes de tamanho.
  • Multi Part é o processo de subir um arquivo em vários pedaços menores paralelamente.
  • O upload de Multi Part também é recomendado assim que o arquivo tiver mais de 100 MB
  • É armazenado como Object level storage.
  • As ações dentro do S3 geram eventos.
  • Como segurança tem ACL (acess control list), referece a regras de acesso ao bucket, para dar acesso aos arquivo e preciso torna-lo publico
  • Como segurança tem o Bucket police, onde é possível definir as regras de acesso
  • Caso de uso mais comuns
    • Backup and storage.
    • Application hosting (site estático).
    • Media Hosting.
    • software delivery.
  • Glacier Vault Lock - Permite configurar para que arquivos nunca seja deletados, usado em complience.
  • S3 Object Lock - Semelhante ao anterior, mas permite configurar a retenção do objeto, por exemplo o arquivo não pode ser modificado por 30 dias, o a nota ficsal não pode ser apagada por 5 anos

Precificação

  • GBs por mês.
  • Transferência para fora da região do bucket.
  • Requisições via api (put, get, copy,list, post).

Classes de S3

  • Padrão: o Standard S3 é uma plataforma de armazenamento de objetos de uso geral projetada para dados de aplicativos que devem estar disponíveis instantânea e constantemente.
  • Intelligent-Tiering: Muitos aplicativos têm grandes conjuntos de dados com uma variedade de padrões de acesso. Esses padrões dependem de fatores como o tipo de dados, mudanças sazonais e necessidades internas de negócios. O Intelligent-Tiering identifica e move automaticamente os dados acessados com pouca frequência - dados que não foram acessados por 30 dias - para uma infraestrutura de baixo custo. Quando um objeto na camada não frequente é acessado, ele é automaticamente movido de volta para a camada de alto desempenho e o relógio de 30 dias é reiniciado.
  • Acesso não frequente padrão (IA): alguns dados raramente são acessados, mas exigem desempenho rápido quando os usuários precisam. A camada Standard-IA visa esse cenário e oferece desempenho semelhante ao S3 padrão, mas com menos disponibilidade.
  • One Zone-IA: Ao contrário do Standard-IA, esta camada não distribui dados automaticamente em pelo menos três AZs. No entanto, os dois níveis de IA fornecem a mesma latência de milissegundos para os dados que o S3 padrão.
  • Glacier: embora use armazenamento de objetos, o Glacier é um animal diferente das outras versões do S3, pois é totalmente projetado para arquivamento de dados. A AWS nunca revelou a tecnologia subjacente do Glacier. Independentemente de o Glacier usar unidades de disco rígido de baixo desempenho, fita, óptica ou qualquer outra coisa, seus parâmetros de desempenho e disponibilidade são semelhantes aos das bibliotecas de fitas corporativas. No entanto, ao contrário de uma biblioteca de fitas, os usuários do Glacier podem especificar um tempo máximo para recuperação de dados que pode variar de alguns minutos a horas.
    • Aqui cada arquivo é chamado de Archive e são armazenados em vaults que é a mesma coisa que buckets.
    • Formas de recuperar os arquivos
      • Expedited - (1 a 5 minutos) - custa $10
      • Standard - (3 a 5 horas) - custa $0.05
      • Bulk - (5 a 12 horas) - custa $ 0.025
    • A duração minima de armazenamento é de 90 dias.
  • Glacier Deep Archive: Deep Archive é projetado para arquivamento de longo prazo - pense em anos - com acesso raro e lento aos dados em 12 horas.

S3 - Encryption

Encryption Encryption

  • É possivel criar uma bucket police para validar se um objeto foi encriptdado.
  • Caso o bucket tenha uma encriptação habilitado por default, e se criptografe o arquivo durante o upload, esse arquivo não será encriptado de novo pelo encriptação default.

S3 - Data consistency

Data consistency Data consistency

S3 - Replication

  • O S3 - Versioning deve esta habilitado em ambos os buckets.
  • Pode ser feito usando contas diferentes.
  • Há dois tipos
    • SRR - Same region replication
      • Usado para agrupamento de logs, replicação de dados entre ambientes (dev e hml).
    • CRR - Cross region replication - Usado para compliance, baixar a latência de acesso, replicação em diferentes contas. Cross region replication Cross region replication
  • Após habilitado só ira replicar novos objetos, os antigos não serão replicados.
  • Para deletar, se deleta da origem e é replicado a deleção, mais isso é opcional, se não for habilitado não será replicado o marcador de delete para o outro bucket.

S3 - Versioning

Versioning Versioning

S3 - MFA - delete

  • Impede que o usuário deleta permanentemente um objeto versionado no S3.
  • Deve ser habilitado pelo dono do bucket (root account).
  • Só pode ser habilitado via CLI com o profile de root account.
  • Para usar essa funcionalidade é necessário ter o S3 - Versioning habilitado.
  • Será usado quando:
    • For deletar um arquivo permanentemente.
    • For desabilitar o versionamento.
  • Não precisa usar quando:
    • For deletar uma versão qualquer.
    • For habilitar o versionamento.

S3 - lifecycle management

lifecycle management lifecycle management

  • Ações de transição - Permite definir quando o objeto sera movido
  • Ações de expiração - Permite definir tempo de expiração dos objetos e regras para deletar
  • Também é possível definir regras por prefixos ou tag , para, por exemplo, mover apenas objetos de uma pasta X.

S3 - Transfer acceleration

Transfer acceleration Transfer acceleration

S3 - Presigned urls

  • Gera uma url da acesso temporário a um recurso no S3.
  • Pode se usar o CLI ou o SDK para gerar urls.
    • Para Download (fácil, use CLI)
    • Para Upload (complidado, use SDK)
  • Tem um tempo de expiração padrão de 3600 segundos, mas e possível alterar. Presigned urls Presigned urls

S3 - Security

  1. Forma de acesso ao bucket e aos objetos contido nele.
  • Baseada em usuários (user based) - diz-se que para ter acesso processar ter permissão via IAM Console
  • Baseada em recurso (Resource based)
    • Bucket Polices
      • Regras de acesso ao bucket, permite outros recurso e outras contas a ter acesso.
      • Escrita em json.
    • Object Access Control List (ACL) - Define a lista de acesso de cada objeto armazenado (nível mais baixo).
    • Bubcket Access Control List (ACL) - Define a lista de acesso de cada bucket (menos comum de ser usado); De forma geral se deve ter acesso concedido via IAM OU via Resouce police para ter acesso, senão tudo será negado. AWS IAM Security Part 1: S3 Access Control Tools AWS IAM Security Part 1: S3 Access Control Tools
  1. Para segurança e auditoria o S3 disponibiliza:
  • S3 Access Logs, que pode ser armazenado em outro S3.
  • API que pode loggar essa informações no AWS CloudTrail.
  • Também é possível implementar o MFA para deletar de objetos específicos.

S3 - Access logs

  • É possível usar um bucket de logs para guardar os server access logs de um bucket S3.
  • É usado para auditoria, ou para analise com o Athena.
  • Os logs devem ser armazenados em um bucket diferente (senão geraria um loop).

S3 Select e Glacier Select

  • Permite usar SQL para melhorar a recuperação de dados por meio de filtros
  • É possível realizar filtros por linhas e colunas (consultas simples de SQL)
  • Usa menos banda de rede pois as queries seram executado do lado do S3 e só retornará o resultado. select-s3 select-s3

S3 Well Architected

s3-well-arch s3-well-arch


Instance store

  • O Instance Store são os volumes em bloco armazenados diretamente no host físico, dentro do servidor físico na AWS onde está rodando sua instância EC2.
  • Diferente do EBS, que fica fora do servidor, mas ainda assim dentro do Datacenter.
  • Algumas instâncias EC2 podem ter discos diretamente conectado ao servidor onde são virtualizadas.
  • Armazenamento com melhor I/O.
  • Dados guardo dentro da instância, e perdido ao se parar a instância
  • Excelente para guardar cache / dados temporários.
  • Existe um recurso de hibernação que preserva os dados.

AWS Storage Gateway

  • Usado e cloud híbrida. Permite fazer uma ponte entre os dados da nuvem e o ambiente local (on-primeses).
  • Conecta um dispositivo de software local a um armazenamento em nuvem para oferecer uma integração perfeita e segura entre um ambiente de TI local e a infraestrutura de armazenamento da AWS.
  • Você pode usar esse serviço para armazenar dados no AWS para armazenamento escalável e econômico que ajuda a manter a segurança dos dados.
  • Oferece Gateways de arquivo baseados em arquivo (S3, FSx ), volumes (armazenados em cache e armazenados) e soluções de armazenamento em fita.
  • Tipos de armazenamento que é possivel configurar:
    • Files (S3 / FSx) - Usado para armazenar arquivos. file-gw file-gw
    • Volumes (EBS) - Usados para armazenar dados de backups, ou volumes. volume-gatway volume-gatway
    • Fitas (S3 Glacier) - Usado onde há processos semelhantes fitas. type-gw type-gw
  • Pode se usar autenticação integrada com o Active directory.
  • AWS, também oferecer hardware para disponibilizar essas funcionalidade. Onde não há própria estrutura de virtualização para implementar o AWS Gateway Storage.

12 - Well Architected Framework

![AWS Well Architected Framework Review](assets/Screen Shot 2019-09-09 at 16.40.22.pngwidth=2560&name=Screen Shot 2019-09-09 at 16.40.22.png)

  • Pare de tentar adivinhar sua capacidade.
  • Testar em escala de produção.
  • Automatize para tornar sua infraestrutura facil.
  • Evolua constantemente sua arquitetura.
  • Usar a coleta os dados para melhor sua aplicação.
  • Se programar para dias específicos.

Pilares

  • Operational excelence - Excelência operacional
    • Inclui a capacidade de apoiar o desenvolvimento e executar cargas de trabalho de forma eficaz, obter uma visão sobre sua operação e melhorar continuamente os processos e procedimentos de suporte para entregar valor de negocio.

    • Design Principles

      • Executar operações como código, infraestrutura as code.
      • Documente os processos.
      • Faça alterações frequentes, pequenas e reversíveis.
      • Refine os procedimentos de operações com frequência.
      • Antecipar o fracasso
      • Aprenda com todas as falhas operacionais.

      Operational excelence Operational excelence

  • Security - Segurança
    • Capacidade de proteger dados, sistemas e ativos para aproveitar as vantagens das tecnologias de nuvem para melhorar sua segurança.

    • Design Principles

      • Implemente uma base de identidade forte - Mínimo privilegio possível.
      • Ative a rastreabilidade. Habilitar tracing integrado.
      • Aplique segurança em todas as camadas.
      • Automatize as melhores práticas de segurança.
      • Proteja os dados em trânsito e em repouso.
      • Mantenha as pessoas longe dos dados.
      • Prepare-se para eventos de segurança.

    Security Security

  • Realibility - Confiabialiade
    • Engloba a capacidade de uma carga de trabalho de desempenhar sua função pretendida de forma correta e consistente quando é esperado. Isso inclui a capacidade de operar e testar a carga de trabalho em todo o seu ciclo de vida.
    • Design Principles
      • Recuperar automaticamente da falha ( recuperação de desastre).
      • Procedimentos de recuperação de teste.
      • Escale horizontalmente para aumentar a disponibilidade de carga de trabalho agregada.
      • Pare de adivinhar a capacidade.
      • Gerenciar mudanças com automações

    Realibility Realibility

  • Perfome efficiente - Perfome eficiente
    • Inclui a capacidade de usar recursos de computação de forma eficiente para atender aos requisitos do sistema e manter essa eficiência conforme a demanda muda e as tecnologias evoluem.
    • Design Principles
      • Democratizar tecnologias avançadas.
      • Torne-se global em minutos.
      • Use arquiteturas sem servidor (serverless).
      • Experimente com mais frequência.
      • Considere simpatia mecânica (Conheças os serviços específicos da AWS, para cargas de trabalho especificas)

    Perfome efficiente Perfome efficiente

  • Cost optimization - Otimização de custos
    • Inclui a capacidade de executar sistemas para agregar valor ao negócio com o menor preço.
    • Design Principles
      • Implementar gerenciamento financeiro em nuvem (pague pelo que usa).
      • Adote um modelo de consumo.
      • Meça a eficiência geral.
      • Analisar e atribuir despesas.
      • Use serviços gerenciado pela AWS para reduzir custo.

    Cost optimization Cost optimization

Well Architected Tool

  • Ferramenta para validar se sua organização esta seguindo os pilares da well architected.
  • Gera relatório de acordo com algumas validações e com perguntas a serem feitas nas aplicações e estrutura.

13 - Cases

Abaixo alguns case de como usar os recurso AWS no dia a dia.

Soluções Serverless

1. App TodoList

  • Usuário pode criar lista de tarefas e armazenar dados no S3, tem que ter autenticação.

    • Solução visão nivel api

      Se cria uma API com API Gateway, que verifica as credenciais e dispara uma lambda que acessa o banco de dados. api-level api-level

    • Solução visão acesso ao S3

      O Cognito via STS gera um token temporario para acessar o S3 access-s3 access-s3 > Sulução visão cache

    • Cache para muitas leituras na DynamoDB

      Quando temos muito acesso de leitura a arquivos staticos no DynamoDB, podemos adicionar o DAX, que vai realizar o cache dos dados mais acessados do banco, melhorando assim a leitura. cache-dax cache-dax

  • Cache de responses

    Também seria possivel habilitar o caching no gateway, para cachear os requestes. gw-api-gw gw-api-gw


2. Blog

  • Blog disponível globalmente, com milhares de acessos (read) por hora .
  • A maiorias dos dados são estáticos. .
  • Terá um e-mail de boas vindas para os subscritos.
  • As fotos adicionadas ao blog devem passar por uma tratamento, para reduzir o tamanho.
  • Solução arquivos staticos (site)

    Coloca os arquivos num bucket, e usa o CDN para distribuir globalmente, e habilita OIA que só permitir o CDN acessar o Bucket incrementado a segurança. blog blog

  • Solução para Ações dentro do site

    Imagine que precise adicionar ações que recupere dados de um banco de dados, para fazer isso se cria um API com API Gateway que acessa uma lambda que acessa o banco conforme visto no case anterior. api-acess api-acess

  • Solução para e-mail de boas vindas

    Quando um novo cadastro, o DynamoDB via DynamoDB Stream dispara uma Lambda que tem uma Role que permite acionar o SES (Amazon simple e-mail service) para enviar o e-mail. user-welcome user-welcome

  • Solução para tratamento de imagens

    o Usuário vai subir os dados no bucket ou via cloud Front (CDN) que vai enviar via transfrer accelarion para o bucket use isso caso queira evitar acesso direto ao bucket, ao colocar a imagem no bucket isso vai dispara um lamdba para processar a imagem que depois pode ser armazenada em outro bucket, alem disso é possível notificar o cliente via SNS ou executar outro processamento postando numa fila SQS. image-processing image-processing


3. Micro-serviços

  • Exemplo de arquitetura de micro-serviço que usa API Rest.
  • Que se escala automaticamente e que tenta ser o mais serverless possível.
  • Usando ECS ou EKS

    Tem se um conjunto de container no **ECS **ou EKS que acessam um banco e estão atrás de uma ELB e pode se usar o Route 53 par se dar um DNS Name tipo service1.example.com. ms-ecs ms-ecs

  • Usando Lambda

    Tem se uma lambda que é disparada por requests a um API Gateway que pode consultar um banco de cache ou um **banco qualquer **e pode se usar o Route 53 par se dar um DNS Name tipo service2.example.com. image-20210905062947575 image-20210905062947575


4. Distribuição de conteúdo pago

  • Bora imaginar que precisamos disponibilizar vídeos online, numa plataforma onde só acessar quem compra o vídeo, um **onlyFans **( ͡° ͜ʖ ͡°).
  • Cada vídeo pode ser comprado por vários usuários.
  • Termos armazenados quem pagou pelos vídeos e ao comprar o vídeo será disponibilizado um link para terá acesso ao(s) vídeo(s).
  • Aplicação deve ser global.
  • Visão verificação de acesso ao vídeos

    O usuário faz login usando o Cognito, e ao acessar ele bate num API Gateway que aciona um lambda que ira validar quais vídeos ele tem acesso base de dados. acess-valitation acess-valitation > Visão geração de acesso ao video Para acessar o vídeo é preciso gerar uma Signed URL, para isso faz se uma chamada ao API Gateway que invoca uma lambda que verifica se o usuário e pagante na base de dados e se for gera uma url assinada para que ele possa acessar via CDN. premio-users premio-users


5. Pipeline de ingestão de dados (Big Data)

  • Nossa esteira deve receber dados de vários dispositivos em tempo real.
  • Deve transformar esses dados e salvar no S3 para geração de relatórios.
  • Deve gerar relatórios que devem ser disponibilizados em Dashboard para analise.
  • Solução

    Utilizamos o Kinesis data stream para receber os dados em tempo real dos dispositivos, podemos acionar uma lambda para transformar esses dado e salvar num Bucket, podemos usar um topico SNS ou os próprios eventos do bucket para acionar uma outra lambda que acionaria o Athena para realizar queries nos dados coletados e salvando em outro bucket ou enviar para o Amazon QuickSight para geração de relatórios ou ate mesmo para o RedShilt para data warehouse. pipe-big-data pipe-big-data



Processamentos de eventos

Lambda e SNS e SQS

  • Devemos usar DLQ sempre para garantir preservação da mensagem em caso de erro no processamento.
  • No caso de Filas SQS -> Lambdas, é sempre bom definir a quantidade de poll ate 5 (5 tentativas) antes de mover as mensagens para a DLQ, pois assim se evita loops infinitos.
  • No caso do SNS -> Lambda, a lambda vai tentar processar a mensagem 3 vezes e depois caso não tenha sucesso enviara para a DLQ ou será descartada se não tiver uma DLQ. lambda-sns-sqs lambda-sns-sqs

Fan Out Pattern

  • Usado quanto se tem múltiplos destinos (filas SQS) para uma mensagem. fan-out fan-out

S3 Events

  • Envia para SNS, SQS e Lambda s3-events s3-events


Estratégia de caches

  • Podemos usar cache no CloudFront e no API Gateway alem do cache do lado da aplicação.
  • O importante aqui e sempre lembrar de definir bem o TTL dos dados cacheados para evitar dados desatualizados. cache-strategies cache-strategies


Bloqueandos IPs

  • As vezes desejamos bloquear IPs por segurança.
  • O bloqueio deve ser feito no NACL, pois ele permite criar regras de Negação (DENY).
  • No caso do Security Group é mais complicado de fazer, pois ele parte da ideia de regras de deliberação de acesso (ALLOW). caso precisa-se teria que criar um grupo de IPs que podem acessar e permitia o acesso SG assim o resto seria bloqueado, mas como seriam muitos torna-se quase inviável.
  • Também é possível configurar um firewall num EC2 para fazer esse bloqueio. ip-bloqueio ip-bloqueio
    • Caso na sua estrutura esteja usando um **application load balance **(ALB), e possível bloquear usando a NACL e configurar o Security Group das instâncias EC2 para aceitar o trafico apenas do application Load balance. alb-blocling-ip alb-blocling-ip
    • Ou pode se instalar o WAF no ALB, onde se poderia criar regras de filtros de acesso. waf waf
    • Caso esteja usando um Network load balance, a unica forma de bloquear um ip seria usando o NACL. Pois o NLB não possui Security Group. nlb-blocking-ip nlb-blocking-ip
  • Caso esteja usando CDN, e possível usar o WAF na para bloquear o acesso. Antes mesmo dele chegar na VPC, não sendo necessário usar as NACL cdn-bloquin cdn-bloquin


Alta performance computacional HPC

  • Serviços que ajudam ter alta performance na AWS:
    • Transferência de dados
      • AWS Direct Conect - Permite mover GBs de dados para a cloud.
      • SnowBall e SnowMobile - Pemite mover PB de dados para a cloud.
      • AWS DataSync - Permite mover grandes quantidade de dados do on-primeses para cloud .(usando S3, EFx)
    • Computação
      • Instâncias EC2
        • Com CPU otimizada ou GPU otimizada.
        • spot instances / Spot Fleets para economia + auto escale.
      • EC2 Placentament Groups - Permite usar um conjunto de maquinas (cluster) num mesmo rack ou região o que diminui a latência..
        • EC2 Enhanced Networking SR-IOV (Rede aprimorada para EC2)
          • Interface de rede para HPC.
          • Alta banda, Alto PPS (pacotes por segundos), baixa latência.
          • Opção 1: Elastic Network Adapter (ENA) aumenta a capacidade para 100Gbps.
          • Opção 2: Intel 82599 VF para 10 GBs - Antiga não usado mais
        • Elastic Fabric Adapter (EFA)
          • Interface de rede usada para HPC no Linux com foco.
          • Melhora a ENA para Alta HPC, apenas para linux.
    • Armazenamento
      • Ligado na instância
        • EBS - Escala ate 64000 IOP.
        • Instance store - escala para milhões de IOPS, mas é perdido quando a instância desliga.
      • Na rede
        • S3 - Armazenamento de objetos.
        • EFS - Escala IOPS baseado no tamanho total, ou IOPS provisionado .
        • FSx for lustre - FileSystem otimizado para HPC usando linux.
    • Automação e Orquestração
      • AWS Batch - para trabalhar com jobs e agendamentos.
      • AWS ParallelCLuster
        • Ferramenta Open Source para deploy e gerenciamento de cluster HPC.


14 - Whitepapers

Subsections of Architect Professional

Conteudo estudado


Prova de certificação

  • Dominios
Dominíopercentual
Domínio 1: Soluções de design de complexidade organizacional26%
Domínio 2: Design de novas soluções29%
Domínio 3: Melhoria contínua de soluções existentes25%
Domínio 4: Acelerar a migração e a modernização da carga de trabalho20%
  • Tecnologias aws que podem vão cair na prova

    • Computação
    • Gerenciamento de custos
    • Banco de dados
    • Recuperação de desastres
    • Alta disponibilidade
    • Gerenciamento e governança
    • Microsserviços e desacoplamento de componentes
    • Migração e transferência de dados
    • Redes, conectividade e entrega de conteúdo
    • Segurança
    • Princípios de design sem servidor
    • Armazenamento
  • Serviços abordados

  • Análise:
    • Amazon Athena
    • AWS Data Exchange
    • AWS Data Pipeline
    • Amazon EMR
    • AWS Glue
    • Amazon Kinesis Data Analytics
    • Amazon Kinesis Data Firehose
    • Amazon Kinesis Data Streams
    • AWS Lake Formation
    • Amazon Managed Streaming for Apache Kafka (Amazon MSK)
    • Amazon OpenSearch Service
    • Amazon QuickSight
  • Integração de aplicativos:
    • Amazon AppFlow
    • AWS AppSync
    • Amazon EventBridge (Amazon CloudWatch Events)
    • Amazon MQ
    • Amazon Simple Notification Service (Amazon SNS)
    • Amazon Simple Queue Service (Amazon SQS)
    • AWS Step Functions
  • Aplicativos empresariais:
    • Alexa for Business
    • Amazon Simple Email Service (Amazon SES)
  • Blockchain:
    • Amazon Managed Blockchain
  • Cloud Financial Management:
    • AWS Budgets
    • AWS Cost and Usage Report
    • AWS Cost Explorer
    • Savings Plans
  • Computação:
    • AWS App Runner
    • AWS Auto Scaling
    • AWS Batch
    • Amazon EC2
    • Amazon EC2 Auto Scaling
    • AWS Elastic Beanstalk
    • Amazon Elastic Kubernetes Service (Amazon EKS)
    • Elastic Load Balancing
    • AWS Fargate
    • AWS Lambda
    • Amazon Lightsail
    • AWS Outposts
    • AWS Wavelength
  • Contêineres:
    • Amazon Elastic Container Registry (Amazon ECR)
    • Amazon Elastic Container Service (Amazon ECS)
    • Amazon ECS Anywhere
    • Amazon Elastic Kubernetes Service (Amazon EKS)
    • Amazon EKS Anywhere
    • Amazon EKS Distro
  • Banco de dados:
    • Amazon Aurora
    • Amazon Aurora sem servidor
    • Amazon DocumentDB (compatível com o MongoDB)
    • Amazon DynamoDB
    • Amazon ElastiCache
    • Amazon Keyspaces (for Apache Cassandra)
    • Amazon Neptune
    • Amazon RDS
    • Amazon Redshift
    • Amazon Timestream
  • Ferramentas do desenvolvedor:
    • AWS Cloud9
    • AWS CodeArtifact
    • AWS CodeBuild
    • AWS CodeCommit
    • AWS CodeDeploy
    • Amazon CodeGuru
    • AWS CodePipeline
    • AWS CodeStar
    • AWS X-Ray
  • Computação de usuário final:
    • Amazon AppStream 2.0
    • Amazon WorkSpaces
  • Web e dispositivos móveis de front-end:
    • AWS Amplify
    • Amazon API Gateway
    • AWS Device Farm
    • Amazon Pinpoint
  • Internet das Coisas:
    • AWS IoT Analytics
    • AWS IoT Core
    • AWS IoT Device Defender
    • AWS IoT Device Management
    • AWS IoT Events
    • AWS IoT Greengrass
    • AWS IoT SiteWise
    • AWS IoT Things Graph
    • AWS IoT 1-Click
  • Machine learning:
    • Amazon Comprehend
    • Amazon Forecast
    • Amazon Fraud Detector
    • Amazon Kendra
    • Amazon Lex
    • Amazon Personalize
    • Amazon Polly
    • Amazon Rekognition
    • Amazon SageMaker
    • Amazon Textract
    • Amazon Transcribe
    • Amazon Translate
  • Gerenciamento e governança:
    • AWS CloudFormation
    • AWS CloudTrail
    • Amazon CloudWatch
    • Amazon CloudWatch Logs
    • AWS Command Line Interface (AWS CLI)
    • AWS Compute Optimizer
    • AWS Config
    • AWS Control Tower
    • AWS License Manager
    • Amazon Managed Grafana
    • Amazon Managed Service for Prometheus
    • Console de Gerenciamento da AWS
    • AWS Organizations
    • AWS Personal Health Dashboard
    • AWS Proton
    • AWS Service Catalog
    • Service Quotas
    • AWS Systems Manager
    • AWS Trusted Advisor
    • AWS Well-Architected Tool
  • Serviços de mídia:
    • Amazon Elastic Transcoder
    • Amazon Kinesis Video Streams
  • Migração e transferência:
    • AWS Application Discovery Service
    • AWS Application Migration Service (CloudEndure Migration)
    • AWS Database Migration Service (AWS DMS)
    • AWS DataSync
    • AWS Migration Hub
    • AWS Schema Conversion Tool (AWS SCT)
    • AWS Snow Family
    • AWS Transfer Family
  • Redes e entrega de conteúdo:
    • Amazon CloudFront
    • AWS Direct Connect
    • Elastic Load Balancing (ELB)
    • AWS Global Accelerator
    • AWS PrivateLink
    • Amazon Route 53
    • Transit gateway da AWS
    • Amazon VPC
    • AWS VPN
  • Segurança, identidade e compatibilidade:
    • AWS Artifact
    • AWS Audit Manager
    • AWS Certificate Manager (ACM)
    • AWS CloudHSM
    • Amazon Cognito
    • Amazon Detective
    • AWS Directory Service
    • AWS Firewall Manager
    • Amazon GuardDuty
    • AWS Identity and Access Management (IAM)
    • Amazon Inspector
    • AWS Key Management Service (AWS KMS)
    • Amazon Macie
    • AWS Network Firewall
    • AWS Resource Access Manager (AWS RAM)
    • AWS Secrets Manager
    • AWS Security Hub
    • AWS Security Token Service (AWS STS)
    • AWS Shield
    • AWS Single Sign-On
    • AWS WAF
  • Armazenamento:
    • AWS Backup
    • Amazon Elastic Block Store (Amazon EBS)
    • AWS Elastic Disaster Recovery (CloudEndure Disaster Recovery)
    • Amazon Elastic File System (Amazon EFS)
    • Amazon FSx (para todos os tipos)
    • Amazon S3
    • Amazon S3 Glacier
    • AWS Storage Gateway

Identidade e Federação

image-20230131205355434 image-20230131205355434


IAM

  • Escopo global, controle de acessos.
  • Tem como base o mínimo privilégio possível.
  • Criação de usuário e grupos de usuários, grupos não podem conter outros grupos.
  • Se atribui políticas de acesso (IAM Police) ao grupo, que vão dar acesso a todos os usuário daquele grupo.
  • Access keys - usadas para dar acesso ao AWS CLI e ao AWS SDK.
    • É possível usar um serviço de shell na nuvem (cloud shell) que gera um CLI sem a necessidade de configurar access key.
  • Roles (funções)
    • Usadas para dar acessos de recursos a recurso (acesso ao S3 por um EC2)
    • Criação de roles de dão acesso a recurso sem ser necessário atribuir ao um usuário ou grupo
    • Podem ser assumidas por recursos ou usuários federados ou usuário de outras contas AWS.
    • Quando se assume uma role, as permissões que o usuário tinha antes, são sobrescritas, ou seja ele só vai ter acesso as permissões da role.
  • Dentro do IAM temos:
    • iam user - Usuário comum.
    • federated user - usuário de fora da organização, usuário do Facebook por exemplo.
    • iam role - permissões que são dadas a recurso, tipo EC2 para acessa um S3.
    • identity provider (idp) - Permite customizado acesso provider de terceiros e liberara acesso via token de acesso do STS.
  • IAM Polices - Políticas de acesso (permissões).
    • Seguir regra de menor privilégio.
    • A validação de acesso é feita a cada acesso, de forma automática.
    • Podem ser do tipo:
      • identity-based - Política que são destinados a usuário / grupos e rules
      • resource-based - Políticas que são atribuídas a recursos, para da acesso a outro recursos. Ao usar isso ao invés de uma role, o usuário não perde os acesso que tinha.
    • Json que contem os campos effect, action, Resource, Conditions, Polices variables.
    • Deve sempre usar o conceito de menor privilégio.
    • Access Advisor - Permite ver as permissões e a ultima vez que foi usada.
    • Access Analize
      • Permite analisar quais recursos são compartilhada com entidades externas, ex buckets.
      • Permite definir uma Zona de confiança com as contas ou as organizações que confia. O que estiver fora dessa Zona terá o acesso sinalizado
      • Além disso ele tem um validador de Polices
        • Onde ele valida as melhores praticas de escrita de polices.
        • Dá sugestões sobre erros, alertas e segurança.
      • Além disso é possível gerar polices.
        • O AWS Access Analise, pode ler logs de do CloudTrail e gerar polices com permissões granuladas.
    • Tags e variáveis
      • Permite criar polices com recursos genericas.
  • IAM Polices Conditions
    • Permite adicionar condições nas políticas de acessos AWS.
    • Opções de operações que podem ser usadas nas condições.
  • IAM Permission Boundaries (limite de permissões)
    • Quando se criar usuário ou Roles e possível dar permissão genéricas, tipo de administrador , e setar um limite para essas permissões, exemplo o cara é administrado apenas nos recursos do S3.
    • Suportado apenas por usuários e roles (Não grupos).
    • SCP (Service control policies ). Lógica da avaliação de política image-20230131195843146 image-20230131195843146

MFA (multi factory atutenticator)

- Há dois via sofware (dispositivo MFA virtual, Chave de chegurança U2F (ex: YUbiKey))
- Há uma opção de Hardware (ex: token Gemalto)Basic recomendations

IAM Security Tools

  • IAM Credencial Report (Account level) -> Lista todas as contas de usuário e o status de cada uma.
  • IAM Access Advisor -> Mostras os serviços que o usuário tem acesso e a ultima vez que o mesmo acessou.

Basic recomendations


STS

Assume Role

  • Criamos as roles, definimos os principal que podem acessar essas roles.
  • Geramos credenciais, que geram um token que pode ser validos de 15 minutos a 12 horas.
  • Onde se usa o Assuming Role.
    • Para permitir acesso a usuários ou recurso, a uma conta aonde eles não tem acesso de forma temporária.
    • Para dar acesso ao usuário fora da sua organização. A usuários federados.
  • Permite revogar o acesso a role adicionando um novo bloco de statement ou usando o AWSRevokeOlderSessions.
  • Lembrando que quando assuminos uma Role, perdemos nossos acessos anteriores.

Session Tags

  • Muito usado quando se tem usuários federados.

API Importantes STS

image-20230819201623066 image-20230819201623066


Identity Federation & Congnito

Identity Federation

  • Permite dar acesso a usuário externos permissões de acessos a recursos na sua conta AWS.
  • Não sendo necessário criar um usuário para isso.
  • Caso de usos:
    • A empresa usa seu próprio sistema de identificação. (ex: AD da microsoft).
    • Há uma aplicação Web que precisa acessar recurso da AWS.
  • Há várias formas de implementar:
    • SAML 2.0
      • Sigla pra Security Assertion Markup Language 2.0
      • Padrão aberto, que é compatível com vários providers como o AD da microsoft.
      • Necessita criar uma relação de confiança entre o provider e a AWS.
      • Usa por debaixo a api AssumeRoleWithSAML
      • Jeito antigo de se fazer, hoje em dia usa-se mais o SSO, para permitir acessos, por ser mais simples.
      • Usando com AD da microsoft
    • Custom identity Broker
      • Não é compatível com o SAML 2.0
      • Jeito antigo de se fazer
    • Web Identity Federation com ou sem Cognito.
      • Sem cognito
        • Não é recomendado o uso.
      • Com o Cognito
        • Modo recomendado.
        • Cria role usando o Cognito, como o menor privilegio possível.
        • Cria se um relação acionamento de confiança entre o Provedor de identidade e a AWS.
        • As vantagens são:
          • Suporta usuários anônimos.
          • Suporta MFA.
          • Sincronização de dados.
        • Dado o acesso, cria se polices com configuração de variáveis que permite acesso ao usuário apenas o que tiver sido criado para ele.
    • Single sign-on (SSO)

AWS Directory service

Forma de se usar o ADSF (active directory na AWS)

  • AWS Managed Microsoft AD
    • É possivel configurar o AD em mais de uma VPC.
    • EC2 Windows
      • Nele pode se rodar aplicações que usam o AD, como o sharepoint.
    • Integrações
      • Pode se integrar com o RDS para SQL, AWS Workspaces, QuickSight.
      • Pode seu usar o SSO para dar acesso a aplicações de terceiros.
    • Pode se usar integrado com o AD do on-premise.
    • Pode se adicionar outros DC (Domain controlers) para escalar
    • Tem backups automático.
  • Conectando ao AD no on-premise
    • Deve se estabelecer uma conexão via Direct connect or VPN Conection.
    • A relação de confiança pode ser feita de 3 formas:
      • One-Way trust
        • AWS -> On-premise
      • One-Way trust
        • On-premise -> AWS
      • Two-way florest trust
        • AWS <-> On-premise
    • Relação de confianção não tem nada a ver com sincronização. Apenas indica que o AD é valido e confiável.
    • Replicação não é suportada.
  • Para se criar um processo de replicação na nuvem deve-se:
    • Instalar uma replica AD num EC2 e dai criar a relação de confiança com o AWS AD

  • AD Connector
    • Permite criar um gateway para o AD no On-premise.
  • Simple AD
    • Serviço básico de AD.  

AWS Organizations

  • Consolide múltiplas contas em uma única conta.
  • Permite consolidar a fatura de pagamento e custos. (consolidated Billing)
  • Unificar a parte de auditoria, monitoração e segurança numa única conta.
  • Há um limite de 20 contas por organização.
  • Com organization é possível definir políticas de acesso a recursos (SCPs) que podem ser aplicadas a uma conta. Exemplo, posso querer que a conta de dev não tenha acesso ao Athena, para isso crio uma política e aplico na conta de dev.
  • Na AWS quando falamos em permissões o DENY tem sempre maior precedência do que o ALLOW. por isso se tiver um item negado na OU Prod esse recurso estará negado na OU HR mesmo que tenha uma política que da acesso.
  • É possível organizar as organizações por:
    • BU (Business Unit) - unidades de negocio (departamento de vendas, financeiro, cobrança ..).
    • Ambientes (produção, desenvolvimento, homologação)
    • Projetos (Ultron, MArk 1 , SpaceX)
  • Role OrganizationAccountAccessRole permite que os usuário que podem assumi-la, tenha permissão de admin dentro da conta.
    • Com ela é possível criar novos usuários.
    • Essa role é criada automaticamente quando se cria uma conta dentro de uma OU. porém caso a conta já exista e esta convidando ela pra a OU é necessário criá-la manualmente.
  • Caso tenha plano de instancias reservadas, estas podem ser usadas por qualquer conta dentro de uma organização. Isso gera muita economia, pois essa instância reservada, estará sempre em uso.
  • Com AWS Organization, pode se controlar os contratos de Instâncias reservadas ou savings plans de qualquer conta que faz parte dela.
  • Migrando uma conta de uma Organization para outra Organization.
    • Remova a conta da organização antiga.
    • Envia um invite da nova organização.
    • Aceita o invite.

Service Control Policies (SCP)

  • Define lista de acesso ou bloqueio de ações do IAM.
  • Se aplica a OUs e a Contas.
  • Não se aplica a conta de gerenciamento.
  • É aplicada para todos os usuários e Roles de um conta incluindo usuário Root.
  • Não se aplicam a roles que interligam serviços, ou seja não se aplicam para roles que integra com o AWS Organization.
  • Devem ter permissões explicitas, e por padrão não permitem nada.
  • Caso de usos:
    • Restringir acesso a serviços em uma conta ou OU. ex: EMR. image-20230131195742445 image-20230131195742445
  • Permite obrigar o usuário a inserir tags, nos recursos.
    • Exemplo caso queira que o restringir as tags usuário sue
    • image-20230131200305779 image-20230131200305779
    • Caso queira que o usuário use tags, caso contrario não permitir a criação de recursos.
    • image-20230131200756847 image-20230131200756847

Tag Polices

image-20230131200944909 image-20230131200944909

AI Services

  • A AWS usa seus dados para Melhorar a IA, caso queira desabilitar essa funcionalidade deve se criar uma police. image-20230131201130472 image-20230131201130472

Backup police

  • Permite criar regras de backup image-20230131201536580 image-20230131201536580

AWS IAM Identity center

  • Sucessor do AWS Single Sign-On.
    • Um login para todas contas da sua organização.
    • Permite acessar aplicações de terceiros (Salesforce, office 365).
    • Aplicações com SAML 2.0 habilitados.
    • Instancia Ec2 com o Windows.
  • Permite usar identity provider como o AD
  • Permite criar a estrutura de usuários dentro da AWS. image-20230131202516255 image-20230131202516255 image-20230131202644744 image-20230131202644744

AWS Control Tower

image-20230309193510226 image-20230309193510226 image-20230309192640760 image-20230309192640760 image-20230309192736039 image-20230309192736039

  • É uma maneira fácil para você configurar e governar um ambiente seguro e compatível com as Múltiplas contas AWS com base nas melhores práticas.
  • Landing Zone - Conjunto de boas praticas recomendadas
    • Ambiente configurado e seguro, escalável como mutiplas que segue praticas recomendadas pela AWS.
    • O que o Control Tower tenta criar
  • Benefícios:
    • Automatizar seu ambiente em apenas alguns cliques.
    • Permite aplicar política usando guardrails (regras de governança pre-configuradas). Aplicado em nível de OU
    • Sendo:
      • Preventivo, usando SCPs, desabilitando recursos, o bloqueando ações.
      • Detectivo, Usando AWS Config, para validar se as configuração da conta esta deacordo.
      • image-20230131204036833 image-20230131204036833
      • Os Guardrails podem ter os niveis:
        • Mandatário - Obrigatórios, em geral relacionados a segurança ex: desabilitar acesso a determinado recurso.
        • Fortimente recomendado - Baseado em boas praticas ex: criptografar dados do EBS.
        • Eletivos - Eleitos pela empresa para algum propósito, exemplo padronização de nome do S3. image-20230309193113465 image-20230309193113465
    • Permite detectar violações de políticas e corrigi-las automaticamente e podemos monitorar a conformidade através de um painel de controle interativo.
  • Fabrica de contas
    • Permite criar novas contas e configurar como serão os recursos da conta, como VPC, Security Groups.
    • Usa AWS Service Catalog para provisionar novas contas. image-20230309193317976 image-20230309193317976
  • Como funciona automatização de novas contas image-20230309193740658 image-20230309193740658

AWS Resource Access Manager (RAM)

RAM RAM

  • Permite compartilhar e recursos entre contas duma mesma AWS Organizations.
  • Somente o dono do recurso compartilhado pode exclui-ló.
  • Evita duplicação de recursos na organização
  • Recursos que podem ser compartilhados:
    • AWS App Mesh
    • Amazon Aurora
    • AWS Certificate Manager Private Certificate Authority
    • AWS CodeBuild
    • Amazon EC2
    • EC2 Image Builder
    • AWS Glue
    • AWS License Manager
    • AWS Network Firewall
    • AWS Outposts
    • Amazon S3 on Outposts
    • AWS Resource Groups
    • Amazon Route 53
    • AWS Systems Manager Incident Manager
    • Amazon VPC


Segurança

AWS CloudTrail

cloud-trail cloud-trail

  • provém governança, compliance e auditoria, é o dedo duro da galera que fez merda.
  • Habilitado por default, tem custo zero.
  • Recebe informações do SDK / console / cli / IAM User e IAM roles.
  • Permite ver tudo que foi feito na conta (inclusão, criação ou exclusão de recurso).
  • Monitora todas as chamadas de API da conta.
  • Guarda os logs por 90 dias no cloud trail, caso queira guardar mais tempo e possível configurar no S3 (não vem habilitado por default).
  • Vem aplicado em todas as regiões por padrão.
  • Pode ser habilitados em todas ou em apenas uma conta.
  • Tipo de eventos analisados:
    • Eventos gerenciados.
      • Operações feitas em recursos:
        • Criar rules, criar S3 / EC2, alteração de recurso.
        • Separa os eventos de leitura e escrita.
        • Analise manual do problemas
    • Eventos de dados
      • Não são logados por padrão, e necessário habilitado e é pago.
      • Está em nível do objeto, para os serviços de Lambda (invocação), S3 (criação, remoção e recuperação) e DymamoDB.
      • Separados por eventos de leitura e escrita.
      • Analise manual do problemas.
    • Cloud trail insights
      • Usado para avaliar ações e detectar anomalias na conta.
      • Analise automática dos problemas (anomalias). via inteligência artificial.
        • Tipo recurso em excesso.
        • Limites de recursos (soft and hard).
        • Permite conectar ao eventBridge para notificação das anomalias.
      • insights insights
  • Solution Architecture
    • Desenho de possibilidades de integração ente Cloudtrail e S3. image-20230202053730049 image-20230202053730049
    • Desenho com várias contas e logs de variar regiões image-20230202054026755 image-20230202054026755
    • Desenho de alertas via chamadas de APIS
      • Permite enviar alerta, para quando um instância for desligada, o removida. image-20230202054303139 image-20230202054303139
    • Desenho de uso em uma organização image-20230202054456250 image-20230202054456250
  • Como reagir a eventos os mais rápido possível.
    • Os eventos no CloudTrail podem levar até 15 minutos para ser disparados, nesse cenário uma maneira de reagir aos eventos o mais rápido seria:
      • EventBridge
        • Pode triggar eventos a partir de qualquer chamada de API no CloudTrail.
        • Métodos mais rápido de reação.
      • CloudWatch Logs
        • Envia-se em stream para o CloudWatch e se cria filtros para analisar e detectar anomalias.
      • Envio para o S3
        • O CloudTrail envia para o S3 em 5 minutos.
        • Pode ser analisar os logs e disparar ações, além de armazenar os logs.

AWS KMS

  • Serviço de encriptação da AWS - Key Management Service.
  • Não é possível baixar as chaves.
  • Gerencia chaves de criptografia.
  • Serviços com a opção de se encriptar dados:
    • EBS, S3, RedShift, RDS, EFS ….
  • Serviços com criptografia default:
    • CloaudTrail Logs, S3 Glacier, Storage Gateway ….
  • Permite importar uma chave externa.
    • Mas a AWS não fica responsável pelo gerenciamento dela.
    • Ou seja, a manutenção é por conta do usuário.
    • Só são suportadas chaves Symetricas.

Cloud HSM - Hardware Security Module

  • AWS provém um hardware dedicado para que nós possamos gerenciar nossas chaves.
    • Ela não tem acesso ao hardware após provisionar, caso perder os acesso não tem como recuperar.
  • O hardware é resistente a alteração e é homologado (FIPS 140-2 Level 3 Compliance)
  • Suporta criptografia simetrica e assimetrica.
  • RedShift suporta encriptação via HSM.
  • Pode se ter varios Cloud HSM espalhado por várias AZs para aumentar a disponibilidade.

Tipos de chaves

image-20230202060448371 image-20230202060448371

  • CMK - Customer Master Keys.
  • Gerenciadas pelo usuario - CMK
    • Criado pelo usuário dentro do KMS ou HSM (hardware security module ), pode ser deletada ou alterada.
    • Pode se habilitar a rotação de chave a cada 1 ano.
    • Também e possível rotacional manualmente, mas é recomendado para chaves Assimétricas.
    • Tem um custo de $1 por mês, e $0.003 a cada (1000 calls).
    • Pode ser dos tipos
      • Simétricas (AES-256)
        • Todos serviços da AWS usam essa. Não se tem acesso a chave.
        • Precisa usar a API para usar a encriptação o decriptação.
      • Assimétricas (RSA & ECC Key Pairs)
        • Tem duas chaves uma publica (encrypt) e outra Privada (decrypt).
        • A publica pode ser baixada, nas não se tem acesso a privada.
        • Caso de usos.
          • Encriptar dados fora da AWS, onde não se pode chamar a API do KMS.
          • Realizar assinatura de objetos.
  • Gerenciadas pela AWS - CMK
    • Chaves criadas e gerenciada pela AWS, não temos acesso.
    • Tem rotação automatica de chaves a cada ano.
    • Não tem custo
    • São as usadas nos serviços.
      • EBS, S3, RedShift, RDS, EFS.
    • tem os nomes aws/rds, aws/ebs, aws/service-name.
  • Chaves proprias da AWS
    • Criada pela AWS, para recurso da AWS, Não temos acesso nem de visualização.
    • SSE-S3, SSE-SQS, SSE-DDB.
    • São de graça.
  • Chaves do HSM
    • Chaves criada usando o HSM (hardware security module ).
    • Replicado em mais de uma AZ. cloudhsm cloudhsm hms-kms hms-kms
  • KMS em multiplas regiões
    • Permite criptografar em uma região e descriptografar em outra.
    • O KMS não é Global e apenas Multi-Region com replicação. Cada KMS de cada região é gerenciado separadamente há apenas a replicação das chaves.
    • Usado para:
      • Disaster Recovery, Global data Management (DynamoDB Global Tabl) ​ image-20230202061204254 image-20230202061204254

AWS SSM Parameter Store

ssm-parameters ssm-parameters

  • Permite armazena configurações e segredos como parâmetros.
  • Tem criptografia opcional usando o KMS.
  • É Serverless, e fácil de usar com SDKs.
  • Permite disparar eventos via Cloud watch Events.
  • São declarados em forma de caminhos (Paths). ssm-paths ssm-paths
  • Da pra acessar o secret manager via parameter store.
    • Acessando assim: /aws/reference/secretsmanager/secret_id_in_secrets_manager
  • Tem integração com o CloudFormation.
  • até 10000 parâmetros com valor de até 4KB é de graça por conta e região.
  • até 100000 parâmetros com valor de até 8KB é cobrado $0.05 por parâmetro. tiers tiers
  • É possível definir TTL para parâmetros (advanced tier), para força a atualização ou deleta. um caso de uso muito bom seria armazenar o token de acesso no parameter store e definir um TTL de 25 minutos, quando ele expirar dispara uma notificação via CloudWatch Events que gera um novo token e atualiza ao parâmetro. ttl-ssm ttl-ssm

AWS Secrets Manager

image-20230206061620483 image-20230206061620483

  • Usados para guardar segredos (principalmente de banco de dados).
  • Permite realizar a rotatividade dos segredos automaticamente.
    • Rotaciona automáticamente usando uma função Lambda.
  • Pode ser usado para guarda senhas em produção.
  • É muito usado junto com banco de dados.
    • Suportado nativamente pelos bancos na AWS. (DyanamoDB, RDS etc).
  • Os segredos ficam criptografados.
  • Controla o acesso usando política baseada em recurso (Resource-based police).
  • Suportado nativamente por diversos serviços AWS.
  • Compartilhando secrets manager entre contas. (via ) image-20230206062018809 image-20230206062018809
  • Diferenças entre secret manager e parameter store.
    • Secrets manager
      • É mais caro.
      • Rotaciona automaticamente as credenciais.
        • Ou seja, quando se cria um segredo para bancos ela gerar uma Lambda de alteração de seja automático para alterar a senhas nos banco de dados.
      • Uso de criptografia obrigatório.
    • Parameter store
      • É uma API simples.
      • Não tem mecanismo automático de rotação, apesar de ser possível criar usando o event brigde e lambda.
      • O uso de criptografia é opcional.
      • Permite recuperar os segredos (secret manager) via API do SSM (Parameter store).
  • Rotação de senha entre Secrets manager e SSM.
    • No Secrets é automatico
    • No SSM precisa criar e manter o event Bridge com a lambda. image-20230206062741073 image-20230206062741073

RDS Security

  • Criptografia kms em repouso para Volumes EBS e Snapshots.
  • TDE pra Oracle e Sql Server (Transparent Data Encryption).
  • Criptografia em vôo pra todos os bando de dados no RDS.
  • IAM autentication para Mysql e PostgreSql.
    • Apenas a autenticação é feita usando IAM, a Autorização ainda é feita usando o RDS.
  • É possível gerar um snapshot criptografado a partir de um não criptografado.
  • CouldTrail não mostras as queries feitas no RDS.

SSL encryptation, SNI e MITM

  • Secure Sockets Layer - Usado pra criptografar conexões.
  • TSL - Transport Layer Security - versão mais recente do protocolo SSL.
  • CA - Certificate Authorities - emitem certificados de confiança
    • Comodo, Symantec, GoDaddy, Letsencrypt …
  • Certificados SSL tem data de validade.
  • Funciona assim:
    • Quando dois host vão se conectar ele realizam o aperto de mão (handshake) usando criptografia assimétrica que é muito cara em termo de processamento. A partir dai é gerados chaves simétricas que serão usadas para as próximas interações, estas que tem um custo de validação mais barato que as assimétricas. Tipos de Certificados SSL: Qual é o Mais Adequado Para o Seu Site? Tipos de Certificados SSL: Qual é o Mais Adequado Para o Seu Site?

SNI - Sever Name Indication

  • Resolve o problema de carregamento de muitos certificados em servidores web, onde posso ter diferentes aplicações e diferentes certificados.
  • Ele requer que seja passado o hostname do servidor destinatário, para iniciar o processo de handshake.
  • Assim ele acha o certificado adequado ou retorna um default.
  • Funciona apenas com ALB e NLB da nova geração e com o CloudFront.
  • Não funciona com o CLB. (antiga geração) image-20230206202222478 image-20230206202222478 What is SNI? | mlytics What is SNI? | mlytics

MITM - Man in the middle

Executing a Man-in-the-Middle Attack in just 15 Minutes - Hashed Out Executing a Man-in-the-Middle Attack in just 15 Minutes - Hashed Out Como previnir:

  • Não use publique aplicações com http, apenas com https.
  • Use DNS com o DNSSEC habilitado.
    • Route 53 permite usar o DNSSEC para registro de dominios e para serviço de DNS usando o KMS. InfoSec: Security of DNS InfoSec: Security of DNS

AWS Certificate Manager

  • Serviço que permite provisionar, gerenciar e implantar facilmente certificados SSL/TLS para uso com os serviços da AWS e os recursos internos conectado.
  • Permite solicitar certificados e implanta-los em Elastic Load Balancers, distribuições do Amazon CloudFront e APIs no Amazon API Gateway. e APPSync
  • Permite criar certificados privados para recursos internos e centralizar o gerenciamento do ciclo de vida dos certificados
  • Permite criar certificados que serão validados no inicio e a partir dai o tráfego fica sendo http, o que reduz o uso de CPU das instancias. image-20230206204824008 image-20230206204824008
  • Serviço regional, assim caso tenha serviço global precisa gerar certificados para cada região.
    • Não é possivel usar em serviços globais.
    • Nem é possivel copiar um certificado para outra região. image-20230206205322539 image-20230206205322539

Soluction Architecture

  • SSL on ALB
    • Forma mais comum de se fazer, o ALB usa o ACM pra validar o Certificados
    • A comunicação após o ALB e http, o que reduz o uso de CPU da maquina que não precisa ficar validando certificado. image-20230207050311492 image-20230207050311492
  • SSL nos Web Services com instâncias EC2
    • Usa se um NLB e a comunicação até a instância é feita usando https.
    • porém isso é ruim, pois consome memória.
    • E cada EC2 precisa configurar o certificado em sua maquina.
    • Ele deve ser recuperado no boot do sistema de um parameter store usando script no user data. image-20230207050747416 image-20230207050747416
  • Cloud HSM - SSL Offloading
    • Usa se um HSM para processar o SSL fora do EC2.
    • Como ele tem o SSL Acceleration o processo é mais rapido.
    • Suportado pelos Web server Nginx, Apache e IIS.
    • É bem seguro pois a chave nunca irá ser trafegada, tudo é feito dentro do HSM.
    • Para isso é necessário criar um usuário para criptografia no HSM. e amarzenar os dados desse usuário no secrets manager ou parameter store. image-20230207051237227 image-20230207051237227

DDOS e Web Security

image-20230208042949083 image-20230208042949083

  • Como se proteger image-20230208043243655 image-20230208043243655
  • Arquitetura usada contra ddos. aws-shield aws-shield

AWS Shield

  • Protege contra ataques DDOS | SYN/UDP (floods an reflecion atack).
  • Trabalha na camada 6 e 4 (rede e transporte).
  • Versão standard é de graça para todos os clientes.
  • Tem versão advanced (analisa a camada 7 aplicação).
  • Fica nos prontos de presença.
  • Tem a versão aws shild advanced 24/7 premium com DRP (DDos response team) que:
    • Tem custo adicional $ 3000 por organização.
    • Pode ser usado em Route 53 / Cloud Front | Global Acelerator | Load Balance aws-shield aws-shield

AWS WAF

  • web application firewall.
  • Permite bloquear acesso através de uma lista de regras.
  • Fica nos pontos de presença.
  • Protege as aplicações ataques (Layer 7 - aplication).
  • Pode ser usado em:
    • Load balance (regras locais).
    • API Gateway (regras para região ou de pontos de presença).
    • CloudFront (regras globais ou para pontos de presenças).
    • AppSync (para proteger API GraphQl)
  • Permite criar web ACL (web acess control list) que permite:
    • Bloquear ranges de ips, headers …
    • Protege contra Sql Injection, Cross-site Scripting (Xss).
    • Bloqueio por pais ou região (geo-match).
    • Bloqueio por quantidade de requisição.
    • Tem um custo de $5 por mês por ACL.
  • Pode se usar as ações
    • De contagem de requisição.
    • Liberação ou bloqueio por ranges de ips, headers …
    • Captcha para validar do lado do cliente.
  • Logs do WAF
    • Envia os logs para o CloudWatch logs
    • Envia até 5MB por segundo.
    • Pode enviar para o S3 com em intervalos de 5 minutos.
    • Pode enviar para kinesis data firehose - Neste caso o time se limita as quotas do kinisis image-20230208045204468 image-20230208045204468

AWS Managed roles
  • Regras prontas para ser aplicadas.
  • Existem mais de 190 ja cadastradas, mas pode se usar o marketplace para encontrar outras.
  • Baseadas em grupos de controles. image-20230208044625325 image-20230208044625325

Soluções com WAF
  • Usando WAF pra acessa ALB apenas pelo Cloud Front. Usando o Secrets Manager para gerar novos valores para o header e atualiza-los via Lambda. image-20230208045537986 image-20230208045537986

AWS Firewal manager

  • Permite gerenciar regras de todas as contas AWS de forma centralizada.
  • Tem regras comuns de segurança. image-20230208045823263 image-20230208045823263
  • Diferenças entre WAF e AWS Firewal manager e AWS Shield
    • WAF usado para proteção em nivel de aplicação (camada 7).
    • AWS Shield usado para proteção contras DDos ( camada 6 e 4 (rede e transporte)).
    • AWS Firewal manager usado para centralizar regras, permite aplicar o WAF e SHIELD em várias contas.

Bloqueandos IPs

  • As vezes desejamos bloquear IPs por segurança.
  • O bloqueio deve ser feito no NACL, pois ele permite criar regras de Negação (DENY).
  • No caso do Security Group é mais complicado de fazer, pois ele parte da ideia de regras de deliberação de acesso (ALLOW). caso precisa-se teria que criar um grupo de IPs que podem acessar e permitia o acesso SG assim o resto seria bloqueado, mas como seriam muitos torna-se quase inviável.
  • Também é possível configurar um firewall num EC2 para fazer esse bloqueio. ip-bloqueio ip-bloqueio
    • Caso na sua estrutura esteja usando um **application load balance **(ALB), e possível bloquear usando a NACL e configurar o Security Group das instâncias EC2 para aceitar o tráfego apenas do application Load balance. alb-blocling-ip alb-blocling-ip
    • Ou pode se instalar o WAF no ALB, onde se poderia criar regras de filtros de acesso. waf waf
    • Caso esteja usando um Network load balance, a unica forma de bloquear um ip seria usando o NACL. Pois o NLB não possui Security Group. nlb-blocking-ip nlb-blocking-ip
  • Caso esteja usando CDN, e possível usar o WAF na para bloquear o acesso. Antes mesmo dele chegar na VPC, não sendo necessário usar as NACL cdn-bloquin cdn-bloquin

AWS Inspector

image-20230208051418787 image-20230208051418787

  • Permite que você analise o comportamento de seus recursos da AWS e ajuda a identificar possíveis problemas de segurança.
  • AWS Inspector inspeciona instâncias EC2 contra ameaças comuns.
  • Tem um agente que pode ser instalado nas EC2 (SSM Agent).
  • Analisa apenas instâncias em execução e procura risco na aplicação.
  • Pode analisar imagens enviadas para o ECR.
  • Pode analisar Lambdas functions.
  • Possível configurar a periodicidade de execução.
  • Tem um alto custo sendo:
    • 60$ - para analises de rede (Acesso indevido e capacidade).
    • 120$ - para analise da maquina (checa por vulnerabilidade comuns).
  • Analiza:
    • Vulnerabilidades de pacotes (EC2, ECR e Lambda) - usando o database CVE.
    • Acesso a rede (EC2).

AWS Config

config config

  • Ajuda a verificar o compliance da nossa conta de acordo com a linha do tempo.
  • Mostra quais são as modificações que foram feitas.
  • Pode usar tópicos para notificação.
  • Pode se agregar as analises realizadas nas contas da organização em uma única conta (Uma conta de auditoria).
  • É cobrado, pois fica escaneando os serviços habilitados.
  • Pode ser configurar para monitorar (scannear) continuamente ou para recursos criados ou em um intervalo de tempo, por exemplo 1 vez por dia.
  • Possui integração com o SSM Automation que permite executar correções automáticas ao detectar anomalias.
    • Ex: Caso seu security group esteja liberado para determinado range não permitido. ele detecta e executa um Automação que remove o range e notifica via SNS ou EventBrigde.
  • Serviço regional, mas nas analise é possível adicionar serviços globais.
  • Contem várias regras (mais de 75), que servem para validar se um serviço esteja compliance, possivel criar próprias regras.
    • Para criar suas configuração é necessário criar uma Lambda function que checa o que se que validar.
      • Ex: Deseja-se validar se as instâncias EC2 criadas são do tipo micro, que são as unicas permitidas, se criaria um Lamdba Function que valida e se definiria uma regra linkada a essa Lambda. Serviço pago $0.003 por regra habilitada
  • Permite ver as alterações feitas que não estão compliance, e quem fez a alteração.
  • Uso, pode adicionado uma regra que valida se há acesso ssh ao um security group e caso detecte é possível disparar uma ação ou uma notificação. notify notify Perguntas que tem como resposta AWS Config:
  • Há algum security group configurado sem ssh?
  • My bucktes tem algum acesso publico.

AWS Config Resource

  • Dashboard que permite ver os recursos que estão ou não em compliance.
  • Permite ver as configurações

AWS Managed Logs

  • Logs gerenciados e produzidos por serviços AWS:
    • Logs de acessos dos Load balances -> podem ser exportados para o S3.
      • Access logs dos loads balances.
    • Logs do CloudTrail -> podem ser ser exportados para o S3 ou Cloud Watch.
      • Logs das chamadas de APIs da AWS.
    • Logs de Fluxo VPC (VPC Flow Logs) -> podem ser ser exportados para o S3 ou Cloud Watch.
      • Dados sobre tráfego de IPs e Interfaces de redes.
    • Logs de acessos Route 53 -> podem ser enviados para o Cloud Watch.
      • Loga as informações que queries recebidas pelo Route 53.
    • Logs de acessos do S3 -> podem ser exportados para o S3.
    • Logs de acessos do Cloud Front -> podem ser exportados para o S3.
    • Logs do AWS Config -> podem ser exportados para o S3.

AWS Guard Duty

image-20230211200819545 image-20230211200819545

  • Serviço de inteligência artificial para detectar anomalias na sua conta.
  • Tem free trial , após isso é gerado cobrança.
  • É um serviço regional.
  • Recebe dados do:
    • Cloud Trail - detecta chamadas incomuns e não autorizadas.
    • VPC Flow - detecta tráfego incomum e IPs incomuns.
    • DNS Logs - detecta instâncias dados comprometedores enviando dados de DNS.
    • Kubernetes Autid Logs - detecta atividade suspeita e potencial compremetrimento dos clusters.
  • Ler todos e através de algoritmos ele detecta coisas erradas.
  • É possível conectar ao event Brigde do Cloud Watch para notificar.
  • Pode se colocar uma conta da organização para ser a Adminstrador do GuardDuty ele teria permissão de gerenciar o guardDuty em todas as contas. image-20230211201043035 image-20230211201043035

IAM Advanced Policies

Condicions

permite usar condições para liberar acesso.

  • Pode se usar as condições:
    • SourceIP - Para dar acesso ou negar via IP ou range de IPs. (exemplo - Só permitir que acesse a AWS se estiver na rede da empresa) image-20230211201501809 image-20230211201501809
    • RequestedRegion - Permite restrigir a região onde os recursos podem ser criados ou chamados. image-20230211202114475 image-20230211202114475
    • ResourceTag - Permite liberar a execução ou uso de recurso que tenha a tag.
      • Exemplo, só permite a execução de instancias que tenha a tag de Project DataAnalytics image-20230211202458218 image-20230211202458218
    • MFA - Permite usar para exclusão de dados
      • Exemplo, pode se restrigir a exclusão de dados de um S3 ou para uma instancias EC2 apenas se o usuário tiver o MFA habilitado.

IAM for S3

  • Pode se aplicar regras para o bucket e para os objetos e há diferença.
  • Usa se o caracter * pra regras de objetos image-20230211203540314 image-20230211203540314

Resource police restritas para a organização

  • Permite restrigir usado de polices apenas a menbros de uma organização image-20230211203825071 image-20230211203825071

AWS Security HUB

security-hub security-hub

  • Centraliza a gestão de segurança de múltiplas contas.
  • Agrega alertas de outros serviços visto anteriormente.
  • Usa o AWS config .
  • Dá para automatizar com funções para resolver problemas conhecido (tipos porta ssh liberada ..)

Amazon Detective

  • Analisa e investiga a causa raiz de problemas de segurança, ou atividades suspeitas usando Marchine Learn e Grafos.
  • Criar visão unificadas para logs coletados facilitando ve-los.
  • Permite criar visualizações desses logs para detalhar problemas identificados.

Compute & Load Balancing

image-20230212210211474 image-20230212210211474

EC2

  • Elastic Compute cloud.
  • Maquinas nas nuvem que são possível usar sob demanda.
  • O Armazenamento e feito com:
    • Network-attached:
      • EBS (Elastic block storage)
    • hardware (EC2 Instance Store)
  • Tem que ter uma rede conectada.
  • Tem que um firewall (Security group).
  • Quando parado os dados de memórias são perdidos e os dados no volume EBS e mantido até a próxima inicialização
  • Caso queira manter os dados de memória salvo quando para use a opção de Hibernate (hibernar), que mantém em memória os dados.
  • Quando destruído a instância os dados de memória e do EBS principal são destruídos, mas é possível adicionar um segundo EBS ou marcar para preservar o default.
  • EC2 Nitro - nova tecnologia de virtualização adotada pela AWS.
    • Melhora o uso da rede.
    • Melhora o IOPS (Input/output operations per second) dos armazenamento EBS.
  • EC2 Graviton image-20230213071117156 image-20230213071117156
    • Entregam o melhor performance em relação ao custo. Sendo 46 % mais em contas em comparação com a 5 geração.
    • Suporta muitos OS (Linux, AML 2)
    • Não disponível para Windows.
  • EC2 vCPU
    • Uma CPU, seria um core de um processador, pode conter várias threads.
    • Uma vCPU seria cada uma dessas threads.
    • É possível especificar qual a configuração de vCPU você precisa, por exemplo para uma aplicação node que é single thead pode se definir 1 vCPU.
  • Placement Groups - Grupos de Posicionamento
    • Permite decide a estratégia posicionamento das instâncias EC2. ou seja onde vai ficar as instâncias de vai ser:
      • Cluster - Todas ais instâncias ficam juntas, tem baixa latência, mas ficam numa única AZ. (alta performance, mas tem um alto risco).
        • Boa escolha quando se tem instâncias com rede otimizada (enhanced Networking).
        • Usados para jobs de processamento rápido de BigData e aplicação que precisam de baixa latência de rede
      • Spread - (espalhadas) As instâncias ficar espalhadas em servidores em diferentes AZ, com no máximo de 7 instâncias por grupo por AZ. Usados em aplicações criticas.
        • Baixo risco que indisponibilidade.
      • Partition - Similar ao Spread, mas as instâncias ficam espalhadas em diferentes partições (conjunto de Racks) numa AZ. Pode escalar para centenas de instâncias por grupo, usadas com o Hadoop, Kafka, Cassandra.
        • Pode ter até 7 partição por AZ, e centenas de instâncias.
        • As partições não compartilham o mesmo hack.
        • Se a partição falhar todas as maquinas são perdidas.
        • As instâncias podem compartilhar dados da partição vias EC2 Metadata. AWS - Placement Groups AWS - Placement Groups
  • É possível mover uma instância de um placement group. Para isso é necessário:
    • Parar a instância e usando o CLI mudar ela de placement group e depois inicia-la novamente.
  • Metricas image-20230213202651772 image-20230213202651772
  • Instance recovery
    • O CloudWatch monitora a instância, caso a instância e problema é possível recupera-la usando uma alarme, criando uma nova com o mesmo IP na mesma rede, com os mesmos metadados e o mesmo placement group.
    • Além disso é possível alerta vias SNS a equipe.

Tipos de instâncias

Tipos de instancias Tipos de instancias image-20230213065140415 image-20230213065140415

  • Nomenclatura dos tipos de instâncias:

    • exemplo: m5.2xlarge

      • m -> classe da instância.
      • 5 -> geração das maquinas.
      • 2xlarge -> Tamanho das instâncias

Precificação

  • Todas são pagas por horas ativas.
  • on-demand
    • Não necessário contrato, só rodar quando necessário.
    • Recomendado para cargas de trabalho curtas, (dura 3 meses, ou 1 mês).
  • reserved Instances
    • Se faz um contrato de 1 a 3 anos, se reduz o custo em até 75%.
    • Recomendado para longas cargas de trabalho, exemplo banco de dados.
    • Pode ser compartilhado entre as contas de uma organização.
    • Tipos de reservas
      • reserved instances - onde se reserva um instância de um determinado tipo.
      • convertible reserved instance - onde se reserva um instância e é possível alterar o tipo depois, e pode ter até 54% de desconto.
      • scheduled reserved instance - exemplo - toda terça entre 20 a 22 horas.
    • Tipos de pagamento
      • NURI - no upfront payments - Nenhum pagamento adiantado - redução em até 32%.
      • PURI - partial up-front - Adiantado parcial - redução em até 42% .
      • AURI - all up-front - Tudo adiantado - redução em até 43%.
  • spot instances
    • Usado para aplicação serveless, que podem ser paradas a qualquer momento, são maquinas que estão paradas na AWS, poder chegar até 90% mais baratas. a desvantagens e que ela pode parar a qualquer momento, quando quiser.
    • Não são recomendadas para aplicações que precisam de disponibilidades.
    • AWS pode interromper com uma notificação de 2 minutos.
      • spot fleets
        • Conjuntos de spot instance de diferentes tipos de maquinas e opcionalmente pode haver instâncias on-demand pra chavear (pool de tipo da maquina e em diferentes regiões), a fim de ter maior economia para executar as carga de trabalho. São configuradas para manter a capacidade alvo, iniciando instâncias de substituição após as Instâncias Spot na frota serem encerradas
        • Usados para aproveitar spot instances com baixo custo, pois o spot fleets pode automaticamente selecionar o conjunto mais barato para executar sua carga de trabalho.
        • Nele se define o preço máximo a pagar pelas instâncias spot e o AWS seleciona um conjunto de instância que esteja abaixo desse preço para executar a carga de trabalho. image-20230213210748846 image-20230213210748846
        • Caso as instâncias estejam caras ele encerra e passa o processamento para instâncias sob demandas.
        • soft limits
          • Tem uma limitação de 10 mil instâncias por frota (Fleet) seja ec2 ou Spot.
          • Tem uma limitação de 1000,000 instâncias por região.
        • Estratégia de alocação de instâncias
          • Menor preço - bom para carga de trabalhos curtas
          • Diversificada - Distribuída, bom para carga de trabalho que precisa está disponível e que tenha longo tempo de execução.
          • Capacidade otimizada - bom para cargas pesadas
  • dedicate instance
    • Alugar se uma instância que só será sua, outro usuários não terão acesso a hardware.
  • dedicate host
    • Aluga-se um servidor físico, para demandas de compliance principalmente.
    • Aluga-se por até 3 anos.
    • Mas caro tipo de instância.
  • salving plan
    • Modelo de economia baseado no compromisso de uma quantidade de uso medido em horas num período de 1 ou 3 anos.
    • Economia de até 66%, é flexível e não precisa se preocupar em gerenciar o custo por instância, apenas com a quantidade de horas usados nas cargas de trabalho
    • EC2 Instance Savings plan - Economia de até 72 %, seleciona os tipos de instâncias e as regiões onde ela vai operar. Pode se alterar entre os tipos de instâncias selecionadas e os SO.
    • Compute Savings plan - Economia de até 66 %, tem se maior flexibilidade na conversão do tipo de instância e na movimentação entre regiões. Além de poder adicionar Lambdas e Spots.
    • SageMaker Savings plan - Economia de até 64 %, para carga de trabalhos do SageMaker.
  • capacity reservation
    • Permite reserva instâncias por um período “curto de tempo”, sem precisar se comprometer com um plano de 1 ou 3 anos.
    • Usando por exemplo para reservar maquinas para a black friday.
    • Pode ser combinado com o salving plan.

HPC - Alta performance computacional

  • Serviços que ajudam ter alta performance na AWS:
    • Transferência de dados
      • AWS Direct Conect - Permite mover GBs de dados para a cloud.
      • SnowBall e SnowMobile - Pemite mover PB de dados para a cloud.
      • AWS DataSync - Permite mover grandes quantidade de dados do on-primeses para cloud .(usando S3, EFx, Fxs for Windows)
    • Computação
      • Instâncias EC2
        • Com CPU otimizada ou GPU otimizada.
        • spot instances / Spot Fleets para economia + auto scaling.
      • EC2 Placentament Groups - Permite usar um conjunto de maquinas (cluster) num mesmo rack ou região o que diminui a latência..
        • EC2 Enhanced Networking SR-IOV (Rede aprimorada para EC2)
          • Interface de rede para HPC.
          • Alta banda, Alto PPS (pacotes por segundos), baixa latência.
          • Opção 1: Elastic Network Adapter (ENA) aumenta a capacidade para 100Gbps.
          • Opção 2: Intel 82599 VF para 10 GBs - Antiga não usado mais
        • Elastic Fabric Adapter (EFA)
          • Interface de rede usada para HPC no Linux com foco.
          • Melhora a ENA para Alta HPC, apenas para linux.
    • Armazenamento
      • Ligado na instância
        • EBS - Escala até 256,000 IOPS with io2 Block express.
        • Instance store - escala para milhões de IOPS, mas é perdido quando a instância desliga.
      • Na rede
        • S3 - Armazenamento de objetos.
        • EFS - Escala IOPS baseado no tamanho total, ou IOPS provisionado .
        • FSx for Lustre - FileSystem otimizado para HPC usando linux.
    • Automação e Orquestração
      • AWS Batch - para trabalhar com jobs e agendamentos.
      • AWS ParallelCluster
        • Ferramenta Open Source para deploy e gerenciamento de cluster HPC.

Auto Scaling group

  • Permite aumentar a quantidade de EC2 de acordo com a demanda, ou alarmes gerados pelo CloudWatch com base nas métricas ou eventos.
  • Não a cobrança, você só e cobrando pelas recursos (ec2, ebs ..) que são usados.
    • Escabilidade - habilidade de escalar vertical e/ou horizontal.
    • Elasticidade - Capacidade de escalar dinamicamente, através de alarmes ou métricas, ou reduzir as instâncias com a diminuição do volume de acesso, ou uso.
    • Agilidade - Velocidade de se ter infraestrutura a toque de caixa. Auto Scaling group Auto Scaling group
  • Composto pelo atributos
    • Uma configuração \ templates de lançamento (define o tipo de maquina/ armazenamento / Security Group / SSH key pair / User Data que será usada nas instância que serám criadas) .
    • Seta as capacidade mínimas e máximas (quantidade de instâncias).
    • Rede onde irá criar as instâncias.
    • Informações sobre o Load balance onde esta linkado.
    • Política de escalabilidade, que define quando irá escalar.
  • Scaling polices
    • Política de escalabilidade, que define quando irá escalar.
      • Dynamic scaling police
        • É possível usar métricas geradas pelo CloudWatch para definir as políticas (como media de consumo de CPU, ou quantidade de requisição).
        • Metricas boas para auto scaling:
          • CPUUtilização , RequestCountPerTarget
          • Average Networtk In | Out - para aplicação que usam rede para transferência ….
          • Custom metricas
      • Sheduled scaling police
        • É possível agendar para uma determinado período (horário comercial).
      • Preditive scaling police
        • É possível usa marchine learning (analise do uso anteriores) para criar uma previsão de escalabilidade.
  • Scaling cooldowns - tempo que deve ser esperado após ser lançada uma instância para validar se as métricas delas estão valida, ou se é preciso escalar.

Processos executados pelo auto scaling image-20230213205639426 image-20230213205639426


Para a prova

  • Existe uma política de encerramento no auto scaling group:
    • 1 . Encontra a AZ com maior numero de instâncias.
    • 2 . Termina a que tiver o configuração de inicialização mais antiga.
  • Ciclo de vida de uma instancia com o ASG Ciclo de vida de uma instancia Ciclo de vida de uma instancia
  • Diferença entre Configuração de lançamento (Launch configuration) e templates de lançamento (Launch tempalte)
    • Launch configuration é legado, devem ser recriado toda vez que se alterar algum atributo
    • Launch tempalte é nova e:
      • Tem versionamento, que resolve o problema anterior.
      • Pode se cria subconjuntos de configurações que podem ser herdados por outros templates
      • Permite provisionar instâncias on-demand / spot instances ou um mix de ambos.

Amazon ECS

  • Elastic Container Service - Serviço de container proprietário da AWS.
  • Você deve prover e manter a infraestrutura (instâncias EC2). Ou usa o Fargate que abstrai esse gerenciamento.
  • Não te tem custo, só paga as maquinas usadas (EC2, EBS …).
  • Para se subir container, primeiro é necessário configurar uma ECS Task, ele descreve com será construido o container, seria algo semelhante como um arquivo docker-compose. E na Task que se define as políticas de acesso a recursos que a aplicação vai usar além de rede e grupo de segurança.
  • As Task podem ser disparadas pelo Event Brigde, isso dispara a execução do ECS.
  • Tem integração direta como o Application Load Balancer e o Network Load balancer.
  • Conceitos
    • image-20230214061221428 image-20230214061221428
    • image-20230214061618805 image-20230214061618805 EC2 x Fargate ecs ecs ecs-ec2 ecs-ec2 ecs-fargate ecs-fargate fagate_ec2 fagate_ec2 ec2-fargate ec2-fargate

Amazon EKS

  • Amazon Elastic Kubernetes Service.
  • Serviço de kubernetes totalmente gerenciado pela AWS.
  • Custo de $0,1 por hora por cluster kubernets ($75 por mês) mais os recurso (EC2, EBS).
  • Deploy complexo, requer uma pessoa que manja.
  • É Open source assim caso migre de nuvem terá mais facilidade no processo.
  • Usa o ECR para armazenar as imagens.
  • Tipos dos nodes
    • Gerenciados pela AWS
    • Gerenciado pelo cliente
    • AWS Fargate
  • Volumes
    • Quando se cria o node se espeficica o classe de armazenamendo.
    • Usa se o CSI (Container storage interface)
    • Suporta:
      • EBS
      • EFS (quando usando Fargate)
      • FSx for Lustre
      • Fsx for NetApp ONTAP.
  • É possível rodar o EKS no On-primeses usando o EKS AnyWhere.
    • Pode se usar uma imagem da Amazon customizada do Kubernets (AMI), rodando localmente.
    • Pode se conectar o EKS do On-primeses a AWS usando EKS conector.
    • Usado quando se quer diminuirá a latência, ou por demanda regularizaria. exemplo os dados governamentais do Chile deve ficar no Chile, Roda em um datacenter conectado a AWS. eks eks

AWS ECR

  • AWS Container registry, pode conter repositórios públicos e privados.
  • Tem um boa integração com ECS e EKS.
  • Acessos controlados pelo IAM.
  • Permite replicação em várias regiões e em várias contas.
  • Scaneia as imagem para por seguranças, podendo ser manual ao a realizar um push.
    • Base scanning -> CVE , caso encontre algum erro ele notifica via EventBridge.
    • Scan profundo - Usa o Amazon Inspector para procurar vulnerabilidade caso encontre algum erro ele notifica via EventBridge.

AWS Lambda

  • Trabalha com eventos.
  • Tem de 128 MB até 10 GB de memória que pode ser usado.
  • Tem escopo regional.
  • Pague por milissegundo usado para executar o código.
  • Serveless (não tem servidor para se preocupar).
  • Se preocupe apenas com a aplicação não com a infraestrutura.
  • Necessário monitorar bem, pois toda a infraestrutura e liberada após o uso.
  • Provisiona servidores de acordo com as chamadas.
  • Altamente disponível e totalmente tolerante a falha.
  • Tempo de execução de até 15 minutos.
  • Cobrado de 100 em 100 milissegundos de uso.
  • Faz escalonamento horizontal e pode ter ate 999 execução simultâneas.
  • Triggers
    • API Gateway.
    • Kinesis
    • DynamoDB Data Streams
    • S3 events
    • CloudFront
    • EventBridge
    • SNS, SQS
    • Cloud Watch Logs
    • AWS Cognito
  • Limitações
    • Execução
      • Alocação de memória - 128MB - 10GB.
      • CPU - Linkado a memória ram (Não é possivel alterar)
        • 2vCPU - 1,719 MB de RAM
        • 6vCPU - 10,240 MB de RAM
      • Tempo de execução - até 15 minutos.
      • Variáveis de ambiente - até 4KB.
      • Espaço em disco (no container do Lambda /tmp) - 10 MB.
      • Execuções simultâneas da mesma Lambda - 1000 (Pode ser alterado com solicitação).
      • Tamanho do paylod 6MB (Sync) / 256 KB (async)
    • Deploy
      • Tamanho do pacote zippado com a função Lambda - 50MB.
      • Tamanho do pacote com a função Lambda - 250MB.
      • Tamanho da imagem - 10 GB
  • Lambdas@Edge
    • É possível executar Lambdas em ponto de presenças, para auxiliar itens relacionados ao CDN , Route 53 ….
    • Bom para diminuir a latência. lambda@edge lambda@edge
  • CloudFront Functions

AWS App Runner

  • Serviço gerenciado pela AWS que facilita o deploy de aplicações web ou API em escala.
  • Não necessita conhecimento de infraestrutura para usar.
  • Pode se iniciar apenas com o source code ou a imagem do container.
  • Automaticamente compila e deploya a aplicação.
  • Automaticamente escala e configura alta disponibilidade e load balancer e criptografia.
  • Tem suporte a acesso a VPC.
  • Permite uso de banco de dados, cache e mensageria.
  • Semenhante a idea do heroku. image-20230214194005966 image-20230214194005966

Elastic Load Balancing

  • Distribui o tráfego entre as instâncias de EC2.
  • Usa o healh check para verificar o status da instâncias.
  • Cria um endpoint, para ser a única entrada de requisições.
  • Não gerencia sessões por padrão, existe uma feature chamada Stick session, que realiza isso, porém não é recomendado o uso, pois que controla o dados da sessão é a aplicação.
  • Serviço gerenciado pela AWS.
  • Pode ser configurado com privado ou publico.
  • Envia métricas para o CloudWatch.
  • Há 4 tipos de ELB:
    • classic load balancer CLB -(v1 - old generation - 2009)
      • http, https e tcp.
      • Checa a saúde via endpoint da aplicação (http ou TCP).
      • Necessário adicionar instâncias manualmente.
    • Application load balancer ALB (v2 - new generation - 2016)
      • http, https e webSocket e http/2.
      • Usa target group para agrupar as instâncias.
      • Tem suporte a routinhg baseado em (listeners) sendo:
        • Path ex:(uni.com/post & uni.com/users).
        • hostmane url (curriculo.uni.com e fotos.uni.com).
        • query string (uni.com?id=123&order=123).
      • Usados bastante numa arquitetura de microserviços image-20230215065448165 image-20230215065448165
    • Gateway load balance GWLB - (v2 - 2020)
      • Opera no level 3 (rede) - protocolo IP
      • Usado para balecear carga de soluções de terceiro
      • Usado para Firewall, fazer sistema de detecção e intrusão. Ou seja, usado quando se deseja escanear o tráfego.
      • Utiliza o protocolo GENEVE no porta 6081. image-20230215071036163 image-20230215071036163
    • Network load balancer NLB -(v2 - new generation - 2017)
      • tcp, tls (secure tcp) e udp.
      • Tem uma latência menor que o ALB ~ 100ms vs (400 ms do ALB).
      • Tem um IP estatico por AZ, é possível usar um Elastic IP. Network load balancer Network load balancer
      • Zonal DNS Name
        • Como cada AZ tem um IP estático, quando acionado DNS ele retorna todos os IPs de todas as AZ relacionado ao NLB.
        • Caso precise retornar apenas um é só adicionar a Região mais AZ no DNS.
          • Caso de uso, vc tem duas aplicação instaladas em 3 AZ, e elas conversam entre si.
          • Caso a APP A chame a B em diferente regiões você vai pagar pelo tráfego de transferência de região. nesse caso pode se criar uma lógica para que a aplicação A recupere o o IP da aplicação B da região onde ela esta assim não tendo que pagar pelo tráfego Cross Region. image-20230215070245743 image-20230215070245743

Target groups

  • Agrupa as “maquinas” para onde o tráfego será redirecionado.
  • Essas “Maquinas” podem ser instâncias EC2, servidores on-premisses linkados via IP e Lambdas.
  • Agrupa
    • As instâncias EC2.
    • As Tasks do ECS.
    • Lambdas Funtions - a requisição é traduzida para um evento.
  • É responsável por checar a saúde das instâncias.

Stick session

image-20230215071913741 image-20230215071913741

  • Permite que as requisições enviada as instâncias que já atenderam aquele cliente a fim de não perder os dados de sessão.
  • Tipos cookies que podem ser usados
    • aplication-based cookies
      • Custom cookie
        • Gerado pelo target.
        • Pode incluir diversos atributos.
        • Pode ter um nome individual por target group.
        • Não use os nomes AWSALB, AWSALBAPP, AWSALBBTG, pois são reservados.
      • application cookie
        • Gerados pelo load balancer.
        • Cookie name AWSALBAPP.
    • duration-based cookies
      • Cookie gerados pelo load balance.
      • Tem uma duração especificada.
      • Tem os nomes AWSALB para ALB, AWSALBBTG para CLB.
Cross-Zone load balance
  • Essa funcionalidade distribui o acesso igualmente pela quantidade de instâncias, independente de que zona ela esta, caso não habilitada será distribuído o tráfego igualmente pela zonas de disponibilidade, e cada instância pode receber quantidade de tráfego diferente. Cross-Zone load balance Cross-Zone load balance
  • Configurações de disponibilidade Configurações de disponibilidade Configurações de disponibilidade Request Routing Algoritimo
  • Least Outstanding Request - Solicitação menos pendente
    • Redireciona para estância que tiver o menor numero de requisições pendentes. Ou seja para instância menos ocupada.
    • Funciona com ALB (HTTP) e CLB (HTTP).
  • Round Robin - Sequência circular
    • Funciona com ALB e CLB.
    • Redireciona em sequencia 1, 2, 3, e reinicia pelo 1 , 2, 3 independente da quantidade de requisições pendente.
  • Flow Hash
    • Seleciona o Destino baseado no protocolo, o IP e a porta de origem e destino, e a numero sequencial do TCP.
    • Cada coneção UDP/TCP e roteado para um único destino durante toda a conexão.
    • Funciona com o NLB
SSL Certificates
  • Permite criptografar tráfego entre cliente o load balance (in-flight encryption).
  • Hoje temos o SSL e o TLS (este é mais seguro que o SSL).
  • CLB - apenas uma aplicação e apenas um certificado.
  • ALB - suporta múltiplos listeners (entenda como app diferente) e múltiplos certificados e usa SNI (server name indication) para isso.
  • NLB - suporta múltiplos listeners (entenda como app diferente) e múltiplos certificados usa SNI para isso. LB SSL Certificates LB SSL Certificates SNI SNI
Auto Scaling group ALG
  • Permite aumentar a quantidade de EC2 de acordo com a demanda, ou alarmes gerados pelo CloudWatch com base nas métricas ou eventos.
  • Não a cobrança, você só e cobrando pelas recursos (ec2, ebs ..) que são usados.
    • Escabilidade - habilidade de escalar vertical e/ou horizontal.
    • Elaticidades - Capacidade de escalar dinamicamente, através de alarmes ou métricas, ou reduzir as instâncias com a diminuição do volume de acesso, ou uso.
    • Agilidade - Velocidade de se ter infraestrutura a toque de caixa. Auto Scaling group Auto Scaling group
  • Composto pelo atributos
    • Uma configuração \ templates de lançamento (define o tipo de maquina/ armazenamento / Security Group / SSH key pair / User Data que será usada nas instância que serám criadas) .
    • Seta as capacidade mínimas e máximas (quantidade de instâncias).
    • Rede onde irá criar as instâncias.
    • Informações sobre o Load balance onde esta linkado.
    • Política de escalabilidade, que define quando irá escalar para cima ou para baixo.
  • Scaling polices
    • Política de escalabilidade, que define quando irá escalar para cima ou para baixo.
      • Dynamic scaling police
        • É possível usar métricas geradas pelo CloudWatch para definir as políticas (como media de consume de CPU, ou quantidade de requisição).
      • Sheduled scaling police
        • É possível agendar para uma determinado período.
      • Preditive scaling police
        • É possível usa marchine learning (analise do uso anteriores) para criar uma previsão de escalabilidade.
  • Scaling cooldowns - tempo que deve ser esperado após ser lançada uma instância para validar se as métricas delas estão valida, ou se é preciso escalar.

Para a prova

  • Existe uma política de encerramento no auto scaling group:
      1. Encontra a AZ com maior numero de instâncias.
    • 2 . Termina a que tiver o configuração de inicialização mais antiga.
  • Ciclo de vida de uma instancia com o ASG Ciclo de vida de uma instancia Ciclo de vida de uma instancia
  • Diferença entre Configuração de lançamento (Launch configuration) e templates de lançamento (Launch tempalte)
    • Launch configuration é legado, devem ser recriado toda vez que se alterar algum atributo
    • Launch tempalte é nova e:
      • Tem versionamento, que resolve o problema anterior.
      • Pode se cria subconjuntos de configurações que podem ser herdados por outros templates
      • Permite provisionar instâncias on-demand / spot instances ou um mix de ambos.

Amazon API Gateway

api-gateway api-gateway

  • Serveless, usado para criar APIs Rest.
  • Possível conectar a serviços de login para validar token ou coisa do tipo.
  • Tipos de API
    • APIs RESTful - Para servidores Http ou Lambdas.
    • APIs WEBSOCKET - Para aplicações bidirecionais com webSocket.
      • Usado pra chats, games ou aplicações que precisa manter conexão abertas.
    • AWS Service - Para expor APIs de serviços AWS, (post a message on SQS, ou iniciar um step function, S3)
  • Recursos:
    • Versionamento de APIs.
    • Gerenciamento de tráfego (API keys e Throttles)
  • Limitações
    • Timeout de 29 segundos.
    • Tamanho do payload de no máximo 10 MB.
  • Deployment stages
    • Permite criar vários estágios de deploy e através dele é possível fazer rollback.
    • Além de controlar o direcionamento do tráfego.
  • LOGs
    • Possivel enviar os logs para o Cloud Watch com os niveis ERRO e INFO
    • Pode logar o request e response completos.
    • Pode enviar os logs de acessos de forma customizada
    • Pode ser enviados diretamente para o Kinesis Data FireWhose como alternativa.
    • Metricas
      • São envidas com base nos stages, há possibilidade de envio de métricas detalhadas.
    • X-Ray
      • Pode se habilitar o tracing para recuperar informações sobre as requisições.
      • Pode se cria um desenho da requisição até o destinário.
  • Tipos de endpoints
    • Edge-Optimized (default) - Para clientes Globais (melhora a latencia).
    • Regional - Para apenas uma região.
    • Private - Acesso apenas pela maquinas dentro de uma VPC.
  • Caching
    • Permite o uso de caching para reduzir a quantidade de chamadas ao Backend.
    • Por padrão tem um TTL de 300 segundo, mas pode ser configurado até 0 a 3600 segundos.
    • Definidos por Stages, mas é possível aplicar para cada métodos (endpoint).
    • O cliente pode invalidar o cache enviando o header Cache-Control:max-age=0 (precisa de uma IAM que autorize).
    • Pode ser criptografado.
    • Tem um tamanho que varia de 0.5GB a 237GB.
  • Plano de uso
    • Defini quem pode usar o API Gateway. o quão rápido pode se usar.
    • Pode se configurar limites de Throttling (TPS por segundo) e cotas (quantidade máxima de requests) para clientes individualmente.
    • API Keys
      • Identifica um cliente no API Gateway, usado para aplicar as configurações acima.
  • IAM Permissions
    • Há duas coisa pra se ter acesso:
      • Autenticação -> Diz que o usuário está logado. -> feito com IAM.
      • Autorization -> diz que o usuário tem permissão. -> feito com IAM Policy.
    • O API Gateway usa uma política para verificar quem tem acesso as APIs para “usuarios” da sua organização AWS, as credencias são enviadas no Header com Sig 4. iam-police iam-police
  • Lamdba Authorizer
    • Conhecido como autorizador customizado, Se cria uma lambda para validar um Token e essa validação e cacheada por uma hora.
    • Paga pelo quantidade de Lambda infocado.
    • Pode se usar OAuth / SAML … para autorizar. custom-autorization custom-autorization
    • image-20230817062624679 image-20230817062624679
  • Cognito user pools
    • Solução AWS, para cadastro de usuário, através dele é possível da a um usuário qualquer acesso a recurso da AWS.
    • Ajuda apenas na autenticação não na autorização.
    • Fornece um padrão de autenticação.
    • Permite usar autenticação externas (de terceiros , Google, Facebook). cognito cognito cognito cognito

Discução de arquiteturas com o API Gateway

  • Subindo arquivos em um bucket S3.
    • Pode se usar o API Gateway, porém a uma limitação de tamanho de 10 MB.
    • Solução ideal seria gerar um URL assinada e devolver via API Gateway. (não há limites de tamanho de arquivos) image-20230216061952676 image-20230216061952676

Comparando soluções com o API Gateway

  • EC2 com Elastic IP
    • Em caso de falha na instância, se cria uma nova e atacha o Elastic IP.
    • Funcional, barato, porém não é escalável devido ao fato de se ter apenas um IP. image-20230217061653780 image-20230217061653780
  • Api Gateway + AWS Service image-20230217062549339 image-20230217062549339

AppSync

  • Gerenciado pela AWS, Usa GraphQL.
  • Pode recuperar dados de varios lugares (configurados previamente) como Banco de dados, DynamoDB e APIs.
  • Permite recuperar os dados em tempo real usando WebSocket or MQTT on WebSocket
  • Para Aplicativos mobile:
    • Pode se usar para armazenar dados locais e para sincronizar dados. image-20230819135735921 image-20230819135735921
  • Pode ser usado com o Cognito para recuperar autorização (permissões) baseados em grupos de usuários.
    • Exemplo tenho um blog onde configure o que meu usuários podem fazer, em vez de colocar no código posso colocar aqui e validar a ação de acordo como grupo que o cara pertence. image-20230216065240574 image-20230216065240574

Amazon Route 53

  • Serviço gerenciado de DNS.
  • Serviço pago, $0.50 por zona configurada.
  • Gerencia Roteamento da aplicação para regiões de acordo com alguns critérios muito usado como recuperação de desastre, pois identifica falhas e redireciona o tráfego para outros lugares .
  • Dentro do serviço também é possível comprar domínios com no registro.br .
  • Pode se setar TTL nos Records para controlar o tempo de vida. Ele é obrigatório para todos os tipos de records exceto para o tipo Alias. route-53 route-53

Common Records

  • A Record (IPV4) -> www.google.com -> 12.34.56.78
  • AAAA Record (IPV6) -> www.google.com -> 2001::od:b8::7337
  • CNAME -> hostname to hostname -> www.search.google.com -> www.google.com
  • ALIAS -> hostname to aws resource -> www.exemplo.com -> (S3, RDS, ELB, CloudFront …)
    • Na AWS é grátis.
    • Checa a saúde do recurso.
    • Funciona para registo to tipo root ex: -> www.google.com -> www.search.google.com
    • Não precisa setar TTL, pois que senta é o Route 53, no resource.
    • Usado com ELB, Cloud Front, API gateway, Beanstalk, s3 web sites, vpc interface enpoints, global accelerator e Route 53 (na mesma zona).
    • Não é possível setar para um DNS name de uma instância EC2.
  • NS -> Name Server - serve para apontar para outro DNS resolver.
# para verificar use o comando para verificar os valores retornado pelos dns
nslookup <url>
dig <url> 

Routing police

São políticas de redirecionamento que é possível configurar no route 53.

  • Simple routing police (política de roteamento simples).
    • A se chamar um domínio ele devolve o IP do servidor.
    • Não tem health checks.
    • Se cria um recorde e pode se retornar um ou vários valores e o browser decide qual é o melhor para ele.
    • Caso use alias só é possível retornar um item.
  • Weighted routing police (política de roteamento com pesos).
    • É dado um peso para cada servidor, que define a percentagem de requisição que será redirecionado de acordo com o peso.
    • Se cria vários record com o mesmo nome, com retornos diferentes e pesos diferente.
  • Latency routing police (política de roteamento baseado na latência)
    • Redireciona para o servidor de acordo com a menor latência.
    • Se cria vários record com o mesmo nome, com retornos diferentes para cada região.
  • Failover routing police (política de roteamento de falhas)
    • Se defini servidores primários e de failover, caso o primário de algum problema será redirecionado o tráfego automaticamente. Usa health checks.
    • Se cria vários record com o mesmo nome, com retornos diferentes cada um com seu health check e se define quem vai ser o primário e o segundario.
  • Geolocation routing police (política baseada em Geo localização)
    • Redireciona a requisição de acordo com a localização do usuário.
    • Bom para direcionar tráficos para aplicações especificas para países.
  • Geoproximity routing police (política de roteamento por proximidade)
    • Redireciona o usuário para o recurso mais próximo da localização do mesmo.
    • Diferencia se do anterior, pois ele é usado para países enquanto esse seria para locais dentro do pais.
    • Usa o Bias para manipular a proximidade, com ele é possível dizer o quando quer redirecionar do traffico. Como se fosse uma preferência maior. image-20230216203132009 image-20230216203132009
    • Traffic Flow
      • Simplifica a criação de record grandes e com configurações complexas.
      • Tem um editor visual para se montar árvores de roteamento.
      • Suporta versionamento.
  • Multi Value routing police (Política de rateamento de multi valores)
    • Usado para devolver vários retorno e se um dele falhar, se terá outras para redirecionar, se a necessidade de consultar o DNS novamente.
    • Se cria vários record com o mesmo nome, com retornos diferentes cada um. Quanto o browser consulta é devolvido todos os retornos e o browser escolhe o que melhor lhe atende.
    • Pode retornar até 8 record saudável e validados
  • IP-based routing police (Política de rateamento baseado no bloco de ips)
    • Pode se criar um redirecionamento de acordo como bloco de IP que esta chamando (cidr).
    • Usado para diminuir custos de rede.
    • exemplo tudo que for da rede 10.10.10.0/24 vai para o target 1.2.3.4 e tudo que for da rede 19.14.15.0/24 vai para o target 2.8.6.9.

image-20230724070556948 image-20230724070556948

Health check

Pode se configurar health checks para monitora a disponibilidade e a saúde da aplicação.

  • São pagos $ 0.50 para endpoints AWS - $ 0.70 para outros endpoints.
  • Há custos adicionais de outras features (String matching, https, latency measurament).
  • Pode se usar http, https, tcp para se configurar como será a verificação.
  • Disponibiliza 15 diferentes hosts para checagem (em várias regiões)
  • há o modelo de health check calculado, usado para validar o outros health checks e em cima de cada verificação se calcula um valor que diz se esta estável ou não.
  • E possível passar dados customizados (text) no retorno do health check nos primeiros 5120 bytes e com isso configurar para passar ou falhar na verificação. image-20230216204214129 image-20230216204214129
  • Para verificar a saúde de uma maquina numa subnet privado, pode se criar métricas que são envidas para o cloudwatch e dali é possível checa-las com o health check. image-20230216204713686 image-20230216204713686

Hosted Zones

  • É um container de registros para definir como rotear o tráfego para um domínio e seus subdomínios.
  • Tem um custo de 0.50 por zona criada.
  • Podem ser
    • Publicos - contém records que especificam rotas para a internet.
    • Privados - contém records que especificam rotas internas vista apenas nas VPCs.
      • Tem image-20230216203839092 image-20230216203839092 image-20230216204051519 image-20230216204051519

Exemplo de uso para soluções resilientes

image-20230216204823838 image-20230216204823838

Hybrid DNS e Resolvers

  • Hybrid DNS
    • Permite que se use Outros DNS em conjunto com o Route 53, O Route 53 fica como root DNS resolver e ele pode delegar a resolução de nomes para os outros Servidores de DNS.
    • Usado quando se tem uma rede local em on-premises (ou em redes privadas Peered VPC) que já tem um servidor de DNS e se precisa conectar ao AWS, para resolver os nomes entre as redes.
  • Resolvers
    • O Resolver endpoint é um ponto de extremidade em sua Virtual Private Cloud (VPC) da AWS que permite que os recursos em sua VPC resolvam nomes de domínio em outros VPCs.
    • Podem ser associados a uma ou mais VPC na mesma região.
    • Pode se criar em duas AZ para ter alta disponibilidade.
    • Cada endpoint suporta até 10000 queries por segundos por IP.
    • São divididos em :
      • Inbound endpoint
        • Permite que a rede envie DNS Queries para o Route 53 Resolver.
        • Permite resolver DNS da AWS e de Recursos na Zona DNS Privada configurada na VPC. image-20230217055352111 image-20230217055352111
      • Outbound endpoint
        • Permite que o Route 53 envie DNS queries para os DNS resolver que não seja do Route 53. (para o servidor de DNS no On-premises).
        • Usa Regras de resolução para encaminhar as queries de DNS.
          • pode se configurar o target image-20230217055436932 image-20230217055436932

AWS Global Accelerator

Serviço que melhora a disponibilidade de um serviço usando os ponto de presença, melhora a disponibilidade em cerca de 60%.

  • 2 Anycast IP são criado para redirecionar o tráfego para os pontos de presença.
  • É usado como proxy para as aplicações do AWS.
  • Recomendado para servidores http, com conteúdo não estático.
  • Funciona com Elastic IP, ALB, NLB, EC2 Instances
  • Suporta preservação do IP do cliente, exceto para NLBs e Elastic IPs image-20230217055915316 image-20230217055915316
  • Diferença entre CloudFront e Global Accelerator
    • Ambos usam a rede Global da AWS e pontos de presença.
    • Ambos tem integração com AWS Shield para proteção contra DDOS.
    • CloudFront
      • Usado para conteúdo estático que precisa ser cacheado.
      • Guarda o conteúdo estático no ponto de presença.
    • Global Accelerator
      • Melhora o desempenho de aplicações que usam TCP e UDP. Tipo chats, games, VoiP ….
      • Mais adequado para aplicativos em tempo real e serviços que exigem comunicação bidirecional, como jogos online e aplicativos de negócios.
      • Faz proxy dos pacote entre os pontos de presenças em uma ou mais regiões.
      • Bom para aplicações que usam IP estático.

AWS Outposts

  • Permite implementar o que se chama de cloud hibrida.
  • Ou seja, permite executar a AWS nos servidores on-premises.
  • A AWS disponibiliza racks de servidores para executar no datacenter da empresa.
  • Agora a empresa é responsável pela segurança física do rack disponibilizados.
  • Vantagens:
    • Baixa latência.
    • Residência dos dados, ou seja fica no datacenter da empresa.
      • Com isso reduz a transferência de dados entre regiões.
      • Ou por questão de governança.
  • Executa
    • EC2, EBS, S3, EKS, ECS, RDS, EMR image-20230218125409314 image-20230218125409314

AWS WaveLength

  • Oferece baixa latência e alto desempenho para aplicativos móveis e de Internet das coisas (IoT) por meio da integração com as redes de 5G das operadoras de telecomunicações.
  • Pode se implantar e executar aplicativos e serviços em instâncias de computação nos pontos de presença.
  • O que reduz o tempo de resposta e aumenta a qualidade do serviço.
  • Para entender imagine que a AWS disponibilize nos datacenter da VIVO (ISP) racks outposts que conseguem executar AWS próximo ao cliente para requisições envolvendo 5G.
  • Serviços que podem ser implantados:
    • EC3, EBS, VPC …
  • Uso:
    • COneção de veiculos inteligentes, Lives interativas, AR/VR, games e tempo real.

AWS Local Zones

  • Permite executar alguns serviços AWS, mais próximos do clientes, diminuindo assim a latência.
    • EC2, EBS, RDS, Elastic Cache , Direct Connect.
  • Imagine que local zones seria datacenter onde a AWS disponibiliza racks Outposts com parceiros para oferecer esses serviços mais proximo ao cliente.
    • Exemplo, a única Region que temos na América do Sul e em São Paulo, caso esteja no Chile teria que se conectar aqui, ou poderia habilitar Zonas Locais no Chile através de um parceiro AWS e ela se conectaria a Region de São Paulo. image-20230218130317935 image-20230218130317935

Storage

storage storage


EBS - Elastic block storage

  • Serviço de armazenamento de instâncias EC2.
  • Nativamente replicado dentro da Zona de disponibilidade.
  • Backup e feito usando snapshot.
    • Pode ser feito de forma incremental.
    • Consome I|O, por isso é recomendado ser feito quando há baixo uso.
    • Não é necessário parar o volume para fazer o backup mas é recomendado.
    • É armazenado no S3. Pode se copiar-los entre regiões (uso Recuperação de disastre).
    • Pode se criar AMI com os Snapshot.
  • E possível criar uma novo volume com o snapshot criado.
  • Possível encriptar, dados em repouso em transporte e snapshots.
  • Volume pode ser aumentado ou reduzido.
  • O processo de encriptação é transparente ao usuário.
  • Para se encriptar um volume já criado sem encriptação e necessário criar um snapshot e depois criar uma copia desse snapshot e marcar a opção de encriptação e depois criar um volume a partir desse novo snapshot e conecta-lo na instância.
  • É possível usar o EBS com RAID (apenas o Raid 0 e o Raid 1) sendo:
    • RAID 0 - os dados são dividos entre os discos (melhora o desempenho).
    • RAID 1 - os dados são espelhados entre os discos (tolerante a falha).
    • Precisa ser feito dentro do SO, não há ferramentas dentro do console para isso
  • Tipos Tipos ebs Tipos ebs tipos-ebs tipos-ebs os tipos io1 / io2 permitem conectar o mesmo em mais de uma instância, isso é usado em aplicação de alta disponibilidade, ex Cassandra … image-20230219071352401 image-20230219071352401
Exemplo de restore snapshot

ebs-snapshot ebs-snapshot


Data Lifecycle Manager

  • Automatiza a criação, retenção e deleção de snapshot EBS e AMIs.
  • Permite agendar backups, snapshots de outras regiões, e delete dados antigos.
  • Permite usar tags para identificar os recursos ao qual se aplicará ação. (EBS e ECS).
  • Não gerência snapshots/AMI criados fora do DLM (Data Lifecycle Manager).
  • Não pode ser usado para gerência armazenamento de instâncias, apenas EBS e AMI.
  • Qual a diferença dele para o AWS Backup.
    • O AWS Backup permeite gerenciar o Backups de todos os serviços incluindo o EBS num unico lugar.
    • Enquanto o DLM só permite gerenciar o Backup de EBS e AMIs.

Instance store

  • O Instance Store são os volumes em bloco armazenados diretamente no host físico, dentro do servidor físico na AWS onde está rodando sua instância EC2.
  • Diferente do EBS, que fica fora do servidor, mas ainda assim dentro do Datacenter.
  • Não permite o aumento ou redução do
  • Algumas instâncias EC2 podem ter discos diretamente conectado ao servidor onde são virtualizadas.
  • Armazenamento com melhor I/O.
  • Dados guardados dentro da instância, e perdido ao se parar a instância
  • Excelente para guardar cache / dados temporários.
  • Existe um recurso de hibernação que preserva os dados. image-20230219071547162 image-20230219071547162

EFS - Elastic file system

image-20230219074924856 image-20230219074924856

  • NFS (network file system) que pode ser montado num EC2. (usa o protocolo NFSv4.1)
  • Diferente do EBS que só pode sem usado em apenas uma AZ, o EFS pode ser montado e AZs diferentes
  • Pague por uso.
  • Usa um security group para se linkar as instâncias.
  • Usados quando se quer compartilhar arquivos com várias instâncias ex. arquivos wordpress.
  • Usados apenas com Linux (AMI), não compatível com Windows.
  • Pode ser encriptado usando KMS.
  • Pode se usar o AWS Access Point para restringir o acesso aos usuários.
    • image-20230219075953769 image-20230219075953769
  • Suporta milhares de clientes, e pode ter até 10gb+ de thoughput .
  • Permite realizar a replicação cross region.
  • O tipo de performance pode ser definido na criação podendo ser:
    • General purpose (default) - (web server - cms, etc…)
    • Max I/O - Big data, processamento de vídeo.
  • Throughput mode
    • Bursting - Inicia com 1 TB = 50MiB/s e pode ter um bust de até 100MiB/s;
    • Provisioned - Possível definir um nível.
    • Elastic - Escala de acordo com carga de trabalho.
  • Storages Ties (lifecycle management feature - Move os arquivos após 30 dias)
    • Standard - para arquivos acessados frequentemente
    • Infrequent access (EFS-IA) - Arquivos que não são acessado com muita frequência, tem preço menor, pórem e cobrado por recuperação de arquivo.
    • image-20230219075605555 image-20230219075605555
Uso

efs-uso efs-uso


Amazon FSx

  • Semelhante ao EFS (usado para Linux).
  • Permite configurar sistema de arquivos de terceiros como:
    • FSx For Lustre
      • Lustre (linux + cluster) é um sistema de arquivo distribuído e paralelo para computação em escala.
      • Usado em marchine learning e Computação de alta performace (HPC)
      • Usado para sistema de arquivos distribuidos, para computação de alta performace e escala.
      • Permite ler e escrever no S3 através dele.
        • Possivel usar uma funcionalidade de carregamento preguiço, que so irá carregar os dados do S3, quando for solicitados evitando gasto carregando milhares de dados.
      • Tipos de sistemas de arquivos
        • Scratch File System
          • Usado para armazenamento temporario, e não há replicação.
          • Tem uma velocidade muita alta (6x faster, 200MBps)
          • Usado para ligar se ao S3
          • image-20230219091942131 image-20230219091942131
        • Persistente File System
          • Usado para armazenamento de longo periodos.
          • Os dados são replicados na mesma AZ.
          • image-20230219092102564 image-20230219092102564
    • Fsx for Windows File System.
      • Tem suporte para os protocolos SMB e NTFS.
      • Tem suporte para o Active Directory da Microsoft.
      • Suporta o sistema de arquivos distribuido do Windows DFS.
      • Permite agrupar Filesystem utilizando o DFS Namespaces.
    • FSx NetApp ONTAP
      • Permite criar sistema de arquivo do tipo NetApp ONTAP. (sistema compativel com linux, mac e linux)
      • Compativel com os protocolos NFS, SMB,ISCSI
    • FSx for OpenZFS
      • Compativel com NFS (V3, v4, v4.1, v4.2)
      • Usado para rodar sustema de arquivo ZFS na AWS.
  • Gerenciado pela AWS.
  • Na criação se diz se vai ser single AZ ou Multi AZ.
    • Não é possivel converter de um para outro
    • Caso precise migrar de single para multi AZ, é necessário criar um Multi AZ e usar um AWS DataSync.
    • Tambem é possivel realizar um backup da Single e restorar no Multi, seria mais rapido que usando o AWS DataSyng.
  • Não é possivel reduzir o tamanho de um file system, apenas aumentar, caso precisa o remcomendado e criar um novo e usar o AWS DataSync para copiar os dados.

Amazon S3

  • Serviço regional com visibilidade global.
  • E totalmente gerenciado pela AWS.
  • Tem que ter o nome único em todo mundo para o nome do bucket. Pois será usado na URL do arquivo armazenado. De 3 a 63 letras, sem caracteres especiais.
  • Repica os dado em 3 AZ.
  • Tem uma durabilidade de 99,999… (11 noves).
  • E possível definir as permissões de acesso.
  • É possível subir qualquer arquivo de até 0 bytes até 5 terasbytes de tamanho.
  • Multi Part é o processo de subir um arquivo em vários pedaços menores paralelamente.
  • O upload de Multi Part também é recomendado assim que o arquivo tiver mais de 100 MB
    • E possivel remover partes de imcompletas via lifecycle police, no caso de uploads cancelados.
  • Pode ser recuperar o objetos utilizando a recuperação em paralela, onde o arquivo e quebrado em partes e pode ser recuperado em paralelo.
    • Tambem é possivel só recuperar o caberçario do arquivo, o que evitaria gastar banda.
  • É armazenado como Object level storage.
  • As ações dentro do S3 geram eventos.
  • Como segurança tem ACL (acess control list), referece a regras de acesso ao bucket, para dar acesso aos arquivo e preciso torna-lo publico
  • Como segurança tem o Bucket police, onde é possível definir as regras de acesso
  • Caso de uso mais comuns
    • Backup and storage.
    • Application hosting (site estático).
    • Media Hosting.
    • software delivery.
  • Glacier Vault Lock - Permite configurar para que arquivos nunca seja deletados, usado em complience.
  • S3 Object Lock - Semelhante ao anterior, mas permite configurar a retenção do objeto, por exemplo o arquivo não pode ser modificado por 30 dias, o a nota fiscal não pode ser apagada por 5 anos
  • S3 events integra apenas com SNS, SQS e Lambda.
  • Contém metadados e tags, porém não é possível buscar objetos por eles, caso preciso é necessário colocar esses metadados no DynamoDB e usa-lo para criar filtros.

Precificação

  • GBs por mês.
  • Transferência para fora da região do bucket.
  • Requisições via api (put, get, copy,list, post).

Classes de S3

  • Standard S3: o Standard S3 é uma plataforma de armazenamento de objetos de uso geral projetada para dados de aplicativos que devem estar disponíveis instantânea e constantemente.
  • Intelligent-Tiering: Muitos aplicativos têm grandes conjuntos de dados com uma variedade de padrões de acesso. Esses padrões dependem de fatores como o tipo de dados, mudanças sazonais e necessidades internas de negócios. O Intelligent-Tiering identifica e move automaticamente os dados acessados com pouca frequência - dados que não foram acessados por 30 dias - para uma infraestrutura de baixo custo. Quando um objeto na camada não frequente é acessado, ele é automaticamente movido de volta para a camada de alto desempenho e o relógio de 30 dias é reiniciado.
  • Standard-Infrequent Access (IA): alguns dados raramente são acessados, mas exigem desempenho rápido quando os usuários precisam. A camada Standard-IA visa esse cenário e oferece desempenho semelhante ao S3 padrão, mas com menos disponibilidade.
  • One Zone-IA: Ao contrário do Standard-IA, esta camada não distribui dados automaticamente em pelo menos três AZs. No entanto, os dois níveis de IA fornecem a mesma latência de milissegundos para os dados que o S3 padrão.
  • Glacier Instant Retrieval:
    • Recupera os dados em milissegundos, bom para dados acessados uma vez ou outra.
    • A duração mínima de armazenamento é de 90 dias.
  • Glacier Flexible Retrieval:
    • Aqui cada arquivo é chamado de Archive e são armazenados em vaults que é a mesma coisa que buckets.
    • Formas de recuperar os arquivos
      • Expedited - (1 a 5 minutos) - custa $10
      • Standard - (3 a 5 horas) - custa $0.05
      • Bulk - (5 a 12 horas) - free
    • A duração mínima de armazenamento é de 90 dias.
  • Glacier Deep Archive: Deep Archive é projetado para arquivamento de longo prazo - pense em anos - com acesso raro e lento aos dados em 12 horas.

S3 - Encryption for Objects

  • SSE-S3 - Criptografa os objetos do S3 usando chave gerenciada pela AWS (AES-256).
    • Usada para todos os dados no Glacier.
    • Usa o header “X-amz-server-side-encryption”: “AES256”.
  • SSE-KMS - Criptografa os objetos do S3 usando chaves criadas no KMS.
    • As chamadas de uso do KMS é logado no cloudtrail.
    • Usa o header “X-amz-server-side-encryption”: “aws:kms”.
    • Caso esteja usando essa criptografia, se o bucket for publico, o usuário não vai conseguir ver os objetos, pois ele não vai ter acesso a chave.
    • Para conseguir realizar uploads no bucket, precisa ter acesso a permissão (kms:GenerateDataKey) caso contrario não vai conseguir.
  • SSE-C - Criptografa os objetos do S3 usando a chave gerenciada pelo usuário, quando se usa por exemplo o Cloud HSM.
  • Criptografia Client-Side - Quando o usuário criptografa os dados antes de enviar ao S3. Encryption Encryption
  • É possível criar uma bucket police para forçar o uso do SSL nas requisições com a condição aws:secureTransport.
  • Caso o bucket tenha uma encriptação habilitado por default, e se criptografe o arquivo durante o upload, esse arquivo não será encriptado de novo pelo encriptação default.
  • Criptografia em transito (SSL / TLS)
    • S3 expõe os endpoints:
      • http - sem criptografia. - Não recomendado
      • https - com criptografia em vôo.
        • Obrigatório quando se usa criptografia SSE-C.

S3 - Data consistency

Data consistency Data consistency

S3 - Replication

  • O S3 - Versioning deve esta habilitado em ambos os buckets.
  • Pode ser feito usando contas diferentes.
  • Não replica regras do lifecycle manager.
  • Há dois tipos
    • SRR - Same region replication
      • Usado para agrupamento de logs, replicação de dados entre ambientes (dev e hml).
    • CRR - Cross region replication
      • Usado para compliance, baixar a latência de acesso, replicação em diferentes contas.
    • S3 RTC - Replication Time Control
      • Garante que a maioria dos objetos do S3 seja replicado em segundo e que 99,99% seja replicado em no máximo 15 minutos.
      • Usado para complienve e Disatre Recovery. Cross region replication Cross region replication
  • Após habilitado só irá replicar novos objetos, os antigos não serão replicados.
  • Para deletar, se deleta da origem e é replicado a delação, mais isso é opcional, se não for habilitado não será replicado o marcador de delete para o outro bucket.

S3 - Versioning

Versioning Versioning

S3 - lifecycle management

lifecycle management lifecycle management

  • Ações de transição - Permite definir quando o objeto será movido.
  • Ações de expiração - Permite definir tempo de expiração dos objetos e regras para deletar.
  • Também é possível definir regras por prefixos ou tag , para, por exemplo, mover apenas objetos de uma pasta X.

S3 - Transfer acceleration

Transfer acceleration Transfer acceleration

S3 - Security

  1. Forma de acesso ao bucket e aos objetos contido nele.
  • Baseada em usuários (user based) - diz-se que para ter acesso precisa ter permissão via IAM Console, ou seja toda chamada de API é validada junto ao IAM.
  • Baseada em recurso (Resource based)
    • Bucket Polices
      • Regras de acesso ao bucket, permite outros recurso e outras contas a ter acesso.
      • Escrita em json.
      • Pode ser usada para dar acesso publico ao bucket.
      • Pode ser usada para foçar o uso de criptografia,
      • Pode ser usada para dar acesso a cross account.
      • Pode se usar as condições:
        • SourceIP - Para validar se o IP é publico ou elástico
        • VpcSourceIp - Para validar se o IP é privado (isso considerando um VPC endpoint)
        • Source VPC ou Source VPC Endpoint - permite trabalhar com VPC endpoints
          • Permite filtrar o acesso para apenas aqueles que usaram um determinado VPC endpoint ou range de IPs.
        • ClouldFront Origin Identity - Permite que apenas o cloudFront acesso a bucket.
        • MFA - Permite usar para exclusão de dados
    • Object Access Control List (ACL) - Define a lista de acesso de cada objeto armazenado (nível mais baixo).
    • Bucket Access Control List (ACL) - Define a lista de acesso de cada bucket (menos comum de ser usado); De forma geral se deve ter acesso concedido via IAM OU via Resouce police para ter acesso, senão tudo será negado. AWS IAM Security Part 1: S3 Access Control Tools AWS IAM Security Part 1: S3 Access Control Tools
  1. Para segurança e auditoria o S3 disponibiliza:
  • S3 Access Logs, que pode ser armazenado em outro S3.
  • API que pode loggar essa informações no AWS CloudTrail.
  • Também é possível implementar o MFA para deletar de objetos específicos.

S3 - Access logs

  • É possível usar um bucket de logs para guardar os server access logs de um bucket S3.
  • É usado para auditoria, ou para analise com o Athena.
  • Os logs devem ser armazenados em um bucket diferente (senão geraria um loop).

S3 - Select e Glacier Select

  • Permite usar SQL para melhorar a recuperação de dados por meio de filtros
  • É possível realizar filtros por linhas e colunas (consultas simples de SQL)
  • Usa menos banda de rede pois as queries serám executado do lado do S3 e só retornará o resultado. select-s3 select-s3

S3 - Storage Class Analysis

  • Analise as classes de armazenamento e mostra o uso. image-20230219083635525 image-20230219083635525

S3 - Storage Lens

  • Usado para analisar e entender e otimizar o uso do S3 na organização.
  • Mostra no dashboard dados de multipas regiões e multipas contas. image-20230219083841776 image-20230219083841776
  • Permite configurar métrica customizadas image-20230219084109555 image-20230219084109555

S3 - Eventos

Access logs
  • É possível usar um bucket de logs para guardar os server access logs de um bucket S3.
  • É usado para auditoria, ou para analise com o Athena.
  • Os logs devem ser armazenados em um bucket diferente (senão geraria um loop).
  • Podem demorar horas para ser entregue.
  • Podem ser incompletos.
Events Notifications
  • Envia notificação de ações ou eventos ocorridos no bucket. ex: criação de objetos, delete etc…
  • Podem ser enviados para o SNS, SQS, Lambda.
    • Para isso é necessario criar uma resource police que permite ao enviar ao SNS, SQS ou lambda.
    • A police deve ser atachada o SNS, SQS, ou a Lambda.
  • São enviados em geral em segundos, mas podem demorar minutos.
  • Como o versionamento, em situações raras onde duas pessoal estão editando ao mesmo tempo, pode ser receber ao invés de dois eventos apenas um.
Trust Advisor
  • Permite checar as permissões dos buckets, para verificar se estão como publico. Ou se foram alterados e tomar ações.
EventBridge
  • Necessita que o log em nivel de objeto esteja habilitado, para funcionar.
  • Pode acionar um Lambda, SNS, SQS e outros, diferente do eventos notifications do S3 que só permite nos 3 primeiros.

image-20230726193905599 image-20230726193905599


S3 - Presigned urls

  • Gera uma url da acesso temporário a um recurso no S3.
  • Pode se usar o CLI ou o SDK para gerar urls.
    • Para download (fácil, use CLI)
    • Para upload (complidado, use SDK)
  • Tem um tempo de expiração padrão de 3600 segundos, mas e possível alterar.
    • S3 console - pode ter de 1 minuto a 12 horas (720 minutos)
    • AWS ClI - pode ter até 604800 (168 horas)
  • Permite gerar url assinadas tanto para get (download) quanto post (upload). Presigned urls Presigned urls

S3 - MFA - delete

  • Impede que o usuário deleta permanentemente um objeto versionado no S3.
  • Deve ser habilitado pelo dono do bucket (root account).
  • Só pode ser habilitado via CLI com o profile de root account.
  • Para usar essa funcionalidade é necessário ter o S3 - Versioning habilitado.
  • Será usado quando:
    • For deletar um arquivo permanentemente.
    • For desabilitar o versionamento.
  • Não precisa usar quando:
    • For deletar uma versão qualquer.
    • For habilitar o versionamento.

VPC Endpoint para o S3

  • Permite criar uma acesso sem passar pela internet para buckets publico ou cross account.
  • Isso para instâncias que não tem acesso a internet. image-20230207061400269 image-20230207061400269

Vault Lock e S3 Object Lock

  • Vault Lock -
    • Adota o WORM (Write Once Read Many)
    • Permite configurar para que arquivos nunca seja delatados ou alterados, usado em compliance.
  • S3 Object Lock
    • Semelhante ao anterior, mas permite configurar a retenção do objeto, por exemplo o arquivo não pode ser modificado por 30 dias, o a nota fiscal não pode ser apagada por 5 anos.
    • Adota o WORM (Write Once Read Many)

S3 Access Points

  • Permite criar pontos de acesso para buckets para cenários onde se tem dados compartilhados.
  • Permite restringir o acesso via VPC e configurar o acesso ao bucket via tags o nomes de buckets.
  • o S3 gera um novo pseudônimo de ponto de acesso. (DNS Name).
  • Na pratica, em vez de criar uma police com várias regras para cada usuário, cria se um access point onde quem tiver acesso acessa aquele S3. image-20230208035923878 image-20230208035923878

S3 Multi-Region Access Points
  • Permite criar um access point global, que redireciona o tráfego de acesso para o bucket na região mais proxima.
  • A ideia é se ter buckets replicados em cada região e através de um Access Point acessa-lo, assim diminuindo a latência.
  • Usado em cenários de faillover, (ativo-ativo ou ativo-passivo). image-20230208040542497 image-20230208040542497

S3 Object Lambda
  • Permite criar endpoint para alterar ou enriquecer os dados dados após ser recuperados por uma aplicação consumidora.
  • Caso de usos:
    • Converter de xml para json.
    • Ocultar informações pessoais para ambientes não produtivos.
    • Adicionar marca d’agua em fotos e redimensionar o tamanho. image-20230208041324542 image-20230208041324542

S3 Well Architected

s3-well-arch s3-well-arch


AWS DataSync

dataSync dataSync

  • Usado para mover grades quantidade de dados do on-primises para AWS. e de AWS para AWS.
  • Permite sincronizar dados com S3 , FSx, EFS. A cada hora / dia/ semana (ou seja agendado.)
  • Usa os protocores SMS , NFS e outros para mover os dados do NAS (network attached storage) para AWS.
  • Preserva os permissões e metadata dos arquivos migrados.

AWS Transfer Family

image-20230219094730037 image-20230219094730037

  • Usado pra transferir dados via FTP, FTPS, SFTP.
  • Pode se usar um DNS para o serviço, pois em endpoint public, o ip pode mudar.
  • image-20230219095015298 image-20230219095015298

Storage Services Price Comparison

image-20230219095338480 image-20230219095338480


Caching

Amazon CloudFront

  • Serviço de CDN (content delivery network).
  • Cachea um conteúdo estático de uma aplicação em um edge location (ponto de presença).
  • Suporta HTTP,HTTPS, WebSocket.
  • Diminui a latência de entrega de um conteúdo.
  • Tem mais de 216 pontos de presença.
  • Projete contra ataque DDOS.
  • Possível bloquear um pais de acessar via Geo Restriction.
    • Para isso o CLoudFront adiciona o cabeçario cloudFront-Viewer-Country.
  • Preço varia de região para região, é cobrado por quantidade de dados trafegados quanto mais mais barato será.
  • Permite adicionar pagina de erros caso não encontre o item, e caso tenha se essa pagina no servidor, pode se cacheá-la com um tempo de vida, para evitar que seja chamado toda vez.
  • CloudFront Signed URL - são comummente usados para distribuir conteúdo privado por meio da geração dinâmica de CloudFront Signed URL (uma para cada conteúdo).
  • CloudFront Signed cookies - são comumente usados para distribuir vários conteúdo privados com uma única URL.
  • Diferença entre CloudFront Signed URL e S3 Signed URL
    • image-20230219110601605 image-20230219110601605
  • É possível usar múltiplas origens no CDN, baseando em padrão da URL. multi-origin multi-origin
  • uso:
    • S3
      • Para distribuição de arquivos.
      • Facilita o upload de arquivos
      • Protege com ataque de negação de serviço.
      • Pode se usar o Origin Access Identity (OAI) para que apenas CDN acesse o bucket e não redirecione para o bucket. Nesse caso o bucket pode continuar privado e acessando pelo CDN vai aparecer os arquivos, pois eles são acessado por um “usuário cdn” liberado.
        • A evolução do OAI e o OAC (Origins Access control) OAI OAI
    • Origem customizada
      • Como aplicação customizada / site estático
      • Servidor http num EC2
      • Para entregar video sobre demanda.
  • Beneficio de usar um cloudFront em vez de S3 Cross Region replication.
    • CloudFront
      • Rede de pontos de presença.
      • Arquivos cacheado com tempo de vida de um dia.
      • Recomendado para arquivos estáticos.
      • Mais barato as requisições.
    • S3 Cross Region replication
      • É necessário configurar em o bucket em todas as regiões.
      • Recomendado para arquivos dinâmicos.
      • É possível escrever no bucket original, os outro são apenas de leitura.

Origin Groups

origin-group origin-group

Field level Encryption

field-level field-level


Edge Function

What is Cloudfront? | When to use CDN in AWS? - YouTube What is Cloudfront? | When to use CDN in AWS? - YouTube

  • É possível executar Lambdas em ponto de presenças, para auxiliar itens relacionados ao CDN , Route 53 ….
  • Usado para:
    • Manipular as requisições.
    • Implementar filtros.
    • Adicionar autenticação e autorização.
    • Para gerar html direto no ponto de presença.
    • Teste A/B.
  • Pode ser de tanto Lambdas@Edge e CloudFront Function image-20230219113018202 image-20230219113018202 Introducing CloudFront Functions – Run Your Code at the Edge with Low  Latency at Any Scale | AWS News Blog Introducing CloudFront Functions – Run Your Code at the Edge with Low  Latency at Any Scale | AWS News Blog image-20230219111932005 image-20230219111932005
  • CloudFront Function
    • Leves escritas em javascript, para CDN de alta escalabilidade e sensível a latência.
    • Roda no pronto de presença, tem o processamento isolado.
    • Usado para mudar dados de request e response.
    • Não recomendado para chamar funcionalidade externas.
    • Recomendado para pequenas alterações no request e response.
    • Não tem acesso ao request body.
  • Lambdas@Edge
    • Podem ser escritas em NodeJs ou Python.
    • Escala em 1000 por request por segundo.
    • Roda no ponte de presença da região (Reginal Edge Cache).
    • Usado para mudar dados de request e response.
    • Usado :
      • Quando se tem um tempo maior de execução.
      • Para chamar serviços externos e ter acesso a rede. Podem ser usado em conjunto image-20230219112800163 image-20230219112800163 Ou separados image-20230219112844062 image-20230219112844062 Usos: image-20230219113236439 image-20230219113236439 image-20230219113438721 image-20230219113438721
  • Para reduzir latência da primeira requisição. image-20230219113750792 image-20230219113750792

ElastiCache

  • Banco de dados em memória, Redis o MemCached.
  • Serviço gerenciado pela AWS.
  • Caso de uso:
    • Pode ser usado como cache do banco de dado, para aliviar o acesso ao RDS.
    • Pode ser usado para guarda dados de sessão do usuário, permitindo assim criar aplicações sem estado (aplication stateless)
  • well architected elastic-cache-well-arch elastic-cache-well-arch

Redis

  • Deploy em multi AZ.
  • Tem replicas de leitura para escalar a leitura, tem alta disponibilidade.
  • Persiste os dados, o que permite realizar restores features.
  • Permite encriptar os dados em:
    • Repouso com KMS.
    • Em transito com Redis AUTH. redis redis

MenCached

  • Multi node para partição dos dados (compartimento - Sharding)
  • Não tem alta disponibilidade (replicação).
  • Não persiste dados e não tem backups.
  • Usa arquitetura de multi-thread. mancached mancached

Comparação

comparação comparação

Para Prova

  • Caches no ElastiCach:
    • Não suportam autenticação com IAM.
    • As políticas criada usando IAM, só são usadas em nível de API AWS, não do banco em si.
  • Autenticação:
    • Redis
      • Usa se o Redis Auth, onde se cria uma token de acesso quando se cria o cluster.
      • Isso e algo a mais, pois a segurança mesmo deve ser feita usando Security Groups.
      • Permite usar SSL para os dados em transito. redis-access redis-access
    • MemCached
      • Suporta autenticação baseada em SASL.
      • Lazy load feature lazy-load lazy-load

Lidando com Taxas Extremas

  • limites dos serviços. image-20230219115007181 image-20230219115007181

Databases


DynamoDB

  • NoSql do tipo chave e valor.
  • Alto volume de dados (1 milhão de requisição por segundo).
  • Similar ao apache Cassandra (há a possibilidade de migrar para DynamoDB)
  • Tamanho máximo de objeto (registro aceito 400 KB), para objetos maiores se armazena no S3 e guarda a referência no DynamoDB.
  • Escala horizontalmente automaticamente de acordo com número de requisição.
  • Permite usar o DAX (DynamoDB Accelarator) para melhorar o IO para milissegundos.
    • Cachea em memória registos muito acessado, por 5 minutos (TTL).
    • Resolve o problema de Hot Key, ou seja registros muitos acessados (muitas leituras).
    • Pode se ter até 11 nodes de cache.
  • Replica em 3 AZ (Zona de disponibilidade).
  • Tem um scopo regional.
  • Responde em milissegundos.
  • Permite criar tabela global, que replica os dados em diferentes regiões (Brasil, EUA, Europa por exemplo) para isso é necessário ativar o DynamoDB Streams.
  • É schemaless (não tem schema forte).
  • Dispara eventos para o Event Bridge via DynamoDB Streams.
  • DynamoDB Streams permite conectar ao Kinesis para enviar os dados para armazenamento em outros lugares ou para processamento posterior
  • image-20230220104955096 image-20230220104955096
  • Suporta ACID (Transações sobre múltiplas tabelas) via DynamoDB Transactions.
  • Consistências na leitura.
    • eventual (eventually) -> Pega a informação de qualquer uma das replicas é 5 vezes mais rápido, pois não valida se a informação é a mais recente.
    • forte (strong) -> valida se a informação é mais recente e para isso antes de retorná-la, valida em todas as replicas.
      • Para usar seta o parameter ConsistentRead como true na APIs (GetItem, BatchGetItem, Query, Scan).
  • Quando criado pode se escolher entre provisionado e on-demand (paga por requisição feita).
    • Caso provisionado é preciso definir a:
      • Unidade de capacidade de leitura (RCU - Read Capacity Units), sendo cobrado ($0.00013) por RCU.
        • 1 RCU - 1 leitura consistente (strong) lendo até 4KB por segundo.
        • 1 RCU - 2 Leitura Eventual (eventually) lendo até 4KB por segundo.
          image-20230814194037758 image-20230814194037758
      • Unidade de capacidade de escrita (WCU - Write Capacity Units), sendo cobrado ($0.00065) por WCU.
        • 1 WCU - 1 escrita de até 1KB
          image-20230814194136079 image-20230814194136079
    • on-demand
      • Read Request Units (RRU) -> igual ao RCU.
      • Write Request Units (WRU) -> igual ao WCU.
      • 2.5x mais cara que o modo provisionado.
    • Há duas classes de tabelas, Standard e Infrequent Access .
  • Tipos de chaves - por ser um banco nosql a unica coisa que precisa ser definida na criação da tabela é a chave primaria e ela pode ser de dois tipos:
    • Unica - PK unica do tipo Hash - Unica e não se repete na tabela
    • Composta - PK (Hash) + SK (Range) - A PK pode se repetir mas em conjunto com a SK não se repete.
  • Indexes - Há dois tipos
    • LSI - Local Segundary Index - Se mantem a PK e se cria uma nova SK. (criado em tempo de criação)
      • Pode se ter até 5 por tabela.
      • Pode se definir os atribuitos que vão ficar na tabela, se não definidos ficam todos.
    • GSI - Global Segundary Index - Se cria uma nova PK, podendo ser única ou composta pelas SK. (É criada após a criação da tabela)
      • Pode se definir os atribuitos que vão ficar na tabela, se não definidos ficam todos.
      • Se houver throttle no GSI (numa leitura intensa por exemplo) na tabela também haverá.
      • Pode se definir os WCU e RCU proprios. Por default copia o que esta na tabela.
  • TTL
    • Permite definir um periodo para deletar os itens.
    • Não consome nenhum WCU. (Não tem custo).
    • Tem o formato unix epoch timestamp
  • Soluções com o DynamoDB
    • Indexador de objetos image-20230220105121790 image-20230220105121790
    • Devo usar DAX ou ElasticCache
      • Se a cliente acessar a tabela diretamente usa se DAX, Cache de objetos individuais (exemplo buscar um resultado pela PK).
      • Mas se a consulta for resultado de uma computação então deve se usar o ElasticCache (exemplo resultado de uma media dos registo).

AWS OpenSearch

  • Usado para buscas de qualquer campo, muito usado em conjunto com aplicações big data.
  • Fork do projeto ElastichSearch, que mudou de licença, por isso a AWS criou o seu proprio.
  • Pode se disponibilizar um cluster com várias instâncias. Ou pode se usar no modo serverless.
  • Tem integrações com Kinesis Data FireHose, AWS IoT, Cloud Watch Logs.
  • Seria o ELK stack da AWS.
  • É subsistuto do ElasticSearch
    • O kibana chama se OpenSearch Dashboards.
  • Solução de arquitetura com OpenSearch.
    • Buscador usando DynamoDB image-20230220110750178 image-20230220110750178
    • Dados vindo do kinesis
      image-20230820102813438 image-20230820102813438

RDS

image-20230220111311099 image-20230220111311099 Serviço de banco de dados relacional da AWS.

  • Escala automaticamente em minutos.
  • Serviço totalmente gerenciado pela AWS.
    • Provisiona SO, faz os bkps e restores, monitora desempenho, faz manutenção.
    • Usa armazenamento do tipo EBS (gp2 ou io1), permite auto-scale.
    • Não temos acesso ao SSH da maquina onde esta o banco.
  • Permite criptografia.
  • Segurança image-20230220111829023 image-20230220111829023
  • Replica em mais de uma AZ, para segurança e recuperação de desastres (quando habilitado é gerado um DNS name e o chateamento em caso de falha é automático.).
  • Executado em uma VPC, se for acessar via Lambda lembre-se que deve estar na mesma VPC.
  • Permite replicas de leitura (read replicas) para melhorar a performance. Pode se criar replicas em outras regiões para diminuir a latência. Para se distribuir o acesso de leitura entre essas replicas usa-se o Route 53, onde pode se configurar uma política de peso para encaminhamento (Weighted Record Set)
  • Tipos
    • Postgres
    • Mysql
    • MariaDB
    • Oracle
    • Aurora
  • RDS para Lamba
    • Caso use Lambda, como é serveless, pode se ter um problema de TooManyConnections.
    • Para evitar isso usa-se o RDS Proxy, que fica responsável por gerenciar o pool de conexões, liberando sempre que se encerra uma lambda.

image-20230220112418563 image-20230220112418563

  • RDS para ORACLE

image-20230220112048190 image-20230220112048190

  • Pilares da well architecture well-arch well-arch

Aurora

  • DB proprietário da AWS.
  • 5 vezes mais performatico que o mysql.
  • 3 vezes mais performatico que o postgres.
  • Serviço de escopo regional, porém é possível usar em multi regiões podendo criar uma instalação o global, mas o que será uma master numa região e replicas de leituras nas outras.
  • Faz replicação (6 copias) em 3 AZ.
  • Pode se adicionar até 15 replica de leituras, para melhorar o uso.
  • Tem a opção serveless, não se preocupando com gerenciamento.
  • Cresce de 10GB em 10GB podendo chegar até 128TB de dados.
  • Tem uma funcionalidade chamada encaminhamento de escrita, que permite que uma replica de leitura receba uma requisição de escrita e encaminhe para o node de escrita, e via replicação o dado e inserido ou atualizado na replica de leitura.
  • 20% mais barato que o RDS comum.
  • aurora aurora
  • aurora-cluster aurora-cluster
Auroral - well architected

aurora-well-arch aurora-well-arch

Conceitos avançados aurora

image-20230220114134315 image-20230220114134315

Aurora Replica - auto scaling

aurora-auto scaling aurora-auto scaling

Custom endpoints

custom-endpoint custom-endpoint

Serveless
  • Scala automaticamente o banco de acordo com o uso.
  • Bom para carga de trabalho que não são muito frequente.
  • Não e necessário planejar, pois ele auto escala para atender a demanda.
  • Pago por segundo de uso. image-20230220114609406 image-20230220114609406
Multi Master
  • Caso queira alta disponibilidade, nesse caso caso haja falha, todos os nós de leitura passa a escrever também.
  • multi-master multi-master
Global aurora
  • Cross region read replica - útil para desastre recover .
  • Global database
    • Se tem 1 região primaria (read/write) e 5 outras regiões segundarias, com replicação de menor que 1 segundo.
    • há 16 replicas de leitura por região segundaria.
    • Caso de desastre, promove-se outra região como primaria em menos de 1 minuto.
    • global global
Marchine Learning
  • Aurora permite usar marchine learning nos dados através de interação com os serviços Amazon SageMaker e Amazon comprehand.
  • Não há necessidade de ter experiência em marchine learning para usar essa funcionalidade.
  • Caso de uso:
    • Deteção de fraude, propaganda localizada, recomendação de produtos. aurora-ml aurora-ml

Backups

  • São habilitado automaticamente no RDS.
  • São realizados automaticamente.
    • Backup diário.
    • Logs de transações são feito backup a cada 5 minutos, o que permite que seja restaurado a qualquer ponto de 5 em 5 minutos.
  • Tem uma retenção default de 7 dias, que pode ser estendido para 35 dias.
  • Também é possível realizar snapshot do banco (db snapshot).
    • Isso permite uma maior tempo de retenção.

Storage auto scale

Quando se cria um banco no RDS se passa quando ele deve ter, com essa funcionalidade ele aumenta o tamanho da banco ao se aproximar de limite de uso do espaço.

  • Ajuda a aumentar o armazenamento dinamicamente. Quando detetado que esta próximo do limite.
  • Necessário setar um threshold de limite máximo de alocação de armazenamento.
  • Automaticamente modifica o armazenamento se:
    • Tiver menos que 10% de armazenamento alocado.

Read replicas

  • Ajuda a escalar na leitura dos dados do banco.
  • Podem ser criada em:
    • Na mesma AZ onde esta o banco..
    • Em outra AZ.
    • Em outra Região.
  • Após criado, é realizado replicação dos dados de forma assíncrona ( por isso a consistência eventual)
Caso de uso
  • Imagine que se tenha uma aplicação em produção que armazena informação num banco, ai surgi outra aplicação que gera relatório, e que ler varia tabelas, nesse cenário se cria uma replica só de leitura para essa nova aplicação read-replicas read-replicas
Precificação
  • Custo de rede (replicação).
    • Não há se a replica estiver na mesma região.
    • Caso seja em regiões diferentes há um custo adicional de transferência price price

Multi AZ (disastre recover)

  • E criado uma replica do banco de dados em outra AZ, e os dados são sincronizados.
  • E gerado um único DNS name para apontar para o banco tido com “master”.
  • Caso falha ele auto eleva o outro para “master” e não e necessário intervenção manual.
  • Não é usado para escalar, apenas como medida de disastre recover.
  • Caso já tenha um banco que seja Single AZ e queira converte-lo para multi AZ, será criado por debaixo dos panos um snapshot do banco, que será restaurado no novo banco em outra AZ, e então iniciara o processo de sincronização entre os bancos. new db multi az new db multi az

Encryption

  • Para encriptação em repouso.
    • Tanto do master quanto das replicas de leitura com AWS KMS - AES-256.
    • Define a encriptação durante a criação, se o master não for encriptado as replicas de leitura não poderão ser.
    • Para Oracle e SQL Server há o TDE (Trasparent Data Encryption) que é outra maneira de fazer a encriptação do banco.
  • Para encriptação de a bordo (in-flight / durante as transferência).
    • Pode se usar certificados SSL para realizar a encriptação.

Autenticação

  • Pode ser feita usando usuário e senha.
  • Para os bancos postgres, aurora e mysql, há a opção de IAM Autetication que gera um token para se acessar o banco.
    • Centraliza os usuários, controla acesso via roles.
    • Todo o tráfego seria feito usando SSL. iam-autatication-rds iam-autatication-rds

Service Communication

AWS Step Functions

step-function step-function

  • Permite criar uma workflow para orquestrar Lambdas functions.
  • O Fluxo (flow) é representado o com maquina de estado Json.
  • Pode configurar para executar Lambda sequencialmente, paralelas, com condições, e timeouts ..
  • O workflow pode ser executado por no máximo 1 ano, após isso é necessário aprovar por mais 1 ano.
  • Pode se integrar com: image-20230220120258941 image-20230220120258941
  • Pode ser acionado via: image-20230220120340225 image-20230220120340225
  • Tipos image-20230220120628216 image-20230220120628216

image-20230819135158308 image-20230819135158308

  • Exemplo de arquitetura image-20230220121021456 image-20230220121021456

Amazon SQS

SQS SQS

  • Amazon Simple Queue Service.
  • Tem escopo regional. Gerenciado pela AWS.
  • Produtor -> envia > fila < recupera <- consumidor.
  • O consumidor da um pull na fila para recupera a mensagem.
    • Pode receber até 10 mensagem por vez.
    • O consumidor deve deletar a mensagem, pois não há um delete após a leitura.
  • Auto escalável vai de 1 mensagem por segundo a 10000 por segundo.
  • Retém as mensagem de 4 (mínimo) a 14 (máximo) dias.
  • Não há limites de quantidade de mensagens na fila.
  • Mensagem de até 254Kb de tamanho, é possível usar o S3 para guardar mensagem maiores.
  • Possível usar métrica da SQS para dispara o Auto Scaling Group via CloudWatch metrics (approximateNumerofMensages).
    • Isso serve para escalar os consumidores.
  • Política de acesso. image-20230812075815579 image-20230812075815579
    • Permite definir uma politica de quem pode enviar mensagens e consumir da fila.
    • Usada para dar acesso de cosumer cross account.
    • Pode ser usada para permitir um producer ser os eventos do S3.
  • Pode ser consumida por um Lambda com as mensagens em Batch.
  • Encriptação
    • Em transito vem habilitado por padrão (HTTPS).
    • Do lado do servidor, usa a SQS Key (SSE-SQS), mas é possivel usar uma chave criada no KMS (SSE-KMS).
  • Message visibility timeout
    • Quando uma mensagem é recuperado por um consumidor, ela fica invisível para os outros, esse tempo que invisibilidade é definido por esse campo.
    • O valor default e 30 segundos.
    • Caso seja necessário (por ainda esta em processamento) é possível mudar essa visibilidade via API (ChangeMensageVisibility) do SDK.
  • Delay Queues - Permite definir uma atraso na disponibilização da mensagem para leitura.
    • Default é 0 segundos. Mas na criação da fila pode se definir um novo default para a fila.
  • Dead letter queue
    • Fila onde pode ser enviada mensagens não processada, ou processadas com erro por várias vezes. Exemplo a mensagem foi processada 5 vezes sem sucesso, mova ela para DLQ para debug futuro.
    • Para que seja enviada para a DLQ é necessário setar o threshold maximumReceives, que define quantas vezes a mensagem será disponibilizada para processamento. Quando atigir esse threshold ela será movida para a DLQ.
    • Usado para debug de problemas, onde se pode colocar uma alarme que notifica a ocorrência de problemas.
    • Uma DLQ deve respeitar o tipo da fila, ou seja se for uma fila FIFO a DLQ deve ser uma fila FIFO.
    • Possui uma funcionalidade chamada Redrive to source que permite reenviar as mensagem contida em uma DLQ para a fila de processamento. É usada quando de descobriu o motivo do não processamento e ajustou o código e deseja tentar processar as mensagens na DLQ.
  • Request-Response System
    • Ao postar na fila, é informado um correlationID e a fila de retorno da reposta. Assim que for processar a mensagem devolver o resultado na fila de retorno.
    • request-response-system request-response-system

SQS x SNS x Kinesis

  • Apesar se serem serviços de mensageira, há diferenças sobre o funcionamento deles. SQS x SNS x Kinesis SQS x SNS x Kinesis

AWS MQ

  • Permite usa mensageira com os protocolos tradicionais do mercado MQTT, AMQP, STOMP, WSS, Opemwire na AWS.
  • E um serviço referênciado pela AWS para rodar RabbitMQ e ActiveMQ.
  • Não escala como o SQS ou SNS.
  • Pode ser usado numa configuração de Multi-AZ para failover.
  • Usado para migra soluções criadas nessa plataforma

Amazon SNS

  • Simple Notification Service.
  • Tem escopo regional. Gerenciado pela AWS.
  • Produtor -> envia > topico -> envia > assinante (pub/sub pattern).
  • O tópico da push na mensagem para os assinantes.
  • Usado quando se precisa notificar varios sistemas.
  • Cada tópico pode ter mais 12 milhões de assinantes.
  • Limite de 100000 tópicos. (soft Limit)
  • Não retém mensagens, após notificar o assinante é descartada.
  • Assinantes (http, email, lambda, mobile, kinesis data firehose).
  • Caso garantir a ordem de entrega use a SQS FIFO.
    • Serve para ordenar as mensagens.
    • Usado para Deduplicação de mensagem
  • Politica de acesso.
    • Permite definir uma política de quem pode enviar mensagens para o tópico.
    • Semelhande a do SQS.
  • Encriptação
    • Em transito vem habilitado por padrão (HTTPS).
    • Do lado do servidor, usa a SQS Key (SSE-SNS), mas é possivel usar uma chave criada no KMS (SSE-KMS).
  • SNS + SQS - Fan Out pattern
    • A ideia é usar um tópico SNS na frente de N fila para garantir que aquela mensagem possa se processado por N sistema, seja para evitar perda de dados ou por causas de serviços que só permitem notificar um único tópico (ex: S3 events).
    • Pode usar em várias regiões. fan out fan out
    • Message Filtering - permite filtrar as mensagem e notificar os assinantes de acordo com os filtros.
      • Uma json policy para filtragem. image-20230221054138361 image-20230221054138361
  • Tem integração com o Kinessis data firehose. image-20230221055222919 image-20230221055222919
  • Retry
    • Caso o subscrito do tópico esteja fora há um processo de retry definido via policy.
    • Caso não seja um serviço AWS, tem que se configurar uma política de retry. image-20230221060719941 image-20230221060719941
    • Em ultimo caso pode se uma uma DLQ.
      • E adicionado junto a subscrição image-20230221061229092 image-20230221061229092

Data Engineering

AWS Kinesis

Amazon Kinesis Amazon Kinesis

  • Facilita coletar e processar e analisar fluxos (steams) de dados em tempo real.
  • Opção ao kafka da AWS. Ou seja serviço de stream de dados em tempo real.
  • Bom para Logs, metricas e IOT. Bom para projetos de tempo real com bigdata (uso com SPARK, NiFi).
  • Dados são sincronizados em 3 AZ.
  • Tem um produtor > enviar um record > kinesis data stream > repassa o record > ao consumidores.
  • A ordenação dos dados pode ser feita passando a mesma chave de partição, pois assim os dados serão enviado para o mesmo shard. chave-partição chave-partição
  • Tipo de aplicação
    • Kinesis Data streams - Captura, processa e armazena fluxos de dados.
    • Kinesis Data Firehose - Carrega dados para armazenamentos no AWS.
    • Kiness Data Analytics - Analisa fluxos de dados com SQL e Apache Flink.
    • Kinesis vídeo streams - Capture, processa e guardar fluxo de dados de vídeos.

Kinesis Data streams

  • Captura, processa e armazena fluxos de dados.
  • Usado para ingestão de grande quantidade de dados com baixa latência. data-streams data-streams
  • É cobrado por shard provisionados.
  • Cada fragmento (shard semelhante as partições do kafka) permite entrada de 1 MB/s e saída de dados de 2 MB/s.
  • Tem um período de retenção de 1 (padrão) a 365 dia.
  • Multipos consumers pode ler do mesmo Shard.
  • Os dados não podem ser deletados (são imutáveis).
  • Consumers
    • Kinesis client library (KCL, usado para leitura em paralelo, checkpoint e leitura coordenada)
    • AWS SDK. Lambda
  • Producer
    • Lambda, Kinesis data firehose, kinesis data analytics.
    • AWS SDK , Kinesis Producer Libary (KPL - permite usar batch, compressão, retry)
    • Kinesis Agent - Usado para monitorar logs, e enviá-los ao Kinesis Data Streams ou Kinesis Firehose.
  • Pode ser usado como Streaming ETL que permitem que você limpe, aprimore, organize e transforme dados brutos antes de carregar seu data lake ou data warehouse em tempo real.
  • Modos de operação
    • Sobe demanda - Não é necessário planejar. o Kinesis escala de acordo com a demanda.
      • Se pagar shard provisionado por hora.
    • Provisionado - Se define a quantidade de shards e gerencia para atender a demanda.
      • Nesse se paga por hora de stream e por I/O por GB.
  • O Shards podem ser consumidos em modo batch ou mensagem por mensagem.
  • Limites
    • image-20230221064945510 image-20230221064945510

Kinesis Data Firehose

  • Carrega dados para armazenamentos no AWS (Como S3, ReadShift, OpenSearch e Splunk). image-20230812130828759 image-20230812130828759
  • Serviço totalmente gerenciado pela AWS (Auto Scale, Serveless).
  • Pague apenas pelos dados processados.
  • Serviço próximo do tempo real.
    • Próximo devido a uma escolha de uso de buffer para melhorar o processo de armazenamento.
    • Pois os dados são acumulados num buffer e são inserido via batch.
    • O tamanho do buffer varia em tempo ou tamanho.
      • Caso seja tamanho ao alcançar o tamanho ou tempo limpa o buffer e ele insere,e aguarda um novo preenchimento.
      • Ele automaticamente aumenta o tamanho do buffer ou o tempo de acordo com a demanda.
    • Caso precise de algo em tempo real use o Lambda para realizar a operação.
  • Exemplo do processo de entrega image-20230221065515012 image-20230221065515012
  • Diferença entre Data Stream e o Firehose. image-20230221070204566 image-20230221070204566

Kinesis Data Analytics

  • Analisa fluxos de dados com SQL e Apache Flink. data-analytics data-analytics
  • Executa os processos em tempo real.
  • Totalmente gerenciado pela AWS.
  • Pagos por volume de dados consumidos.
  • Permite criar fluxo consulta em tempo real.
  • Permite usar Lambda para pre-processar os dados.
  • Tem um Schema discovery.
  • Usa o IAM para acessar o origem e o destino dos dados processado.
  • Uso:
    • Analise de período de tempo.
    • Dashboard em tempo real.
    • Métricas em tempo real.

Arquiteturas com Streams (Kinesis)

  • Pipeline em tempo real image-20230221071407686 image-20230221071407686
  • Soluções em tempo real com melhor custo image-20230221071638191 image-20230221071638191
  • Comparação com outras soluções image-20230221072024210 image-20230221072024210

MSK

image-20230221072716148 image-20230221072716148

  • Kafka manager service, serviço de kafka da AWS.
  • Alternativa ao Kineses.
  • Dados são armazenados nos EBS, por quanto tempo o cliente quiser.
  • Permite implantar o cluster nas VPC ou em Multi AZs (3 para HPA)
  • Tem a opção de ser serveless, não sendo necessário provisionar um cluster.
  • Os consumer podem ser:
    • Aplicação que lê do topico.
    • Kinesis Data Analytics.
    • AWS Glue.
    • Lambdas.
  • Diferença entre MSK e Kinesis image-20230221072810544 image-20230221072810544

AWS Batch

  • Permite batch job como imagens docker.
  • Paga pelos recursos usados (Ec2, Fargate, Spot).
  • Há duas opções:
    • Rodar usando o fargate (Não há necessidade de um cluster).
    • Rodar usando um instância provisionada (EC2 e Spot) na VPC. image-20230221174406433 image-20230221174406433
  • Caso de usos:
    • Processamento de imagens em lote, Execução de jobs concorrents.
  • Pode se usar o EventBrigde para agendar a execução.
  • Pode ser acionado usando Step Funtions.
  • Caso precise executar com alta performance (HPA) pode se usar o modo Multi Node
    • Disponibiliza várias instâncias para execução dos Jobs.
    • Não é possível usar instâncias spot.
    • Trabalha bem com Placement Group.
  • Diferença entre Batch e Lambda image-20230221174255199 image-20230221174255199
  • Soluções de arquitetura
    • Criação de Tumbmails image-20230221173936781 image-20230221173936781

EMR

  • Elastic MapReduce.
  • Ajuda a criar clusters Hadoop (Big data), para analise de grande quantidade de dados.
  • Pode ser construido em cima de centenas de instâncias EC2.
  • Suporta Apache Spark, HBase, Presto, Flink.
  • Usa Spot Instances para Auto Scale (que reduz os custos).
  • Uso: Big Data, Marchine Learning e Web Indexing.
  • Usando em Single AZ.
    • Para se ter a melhor performance, devido não ter transferência de dados entre AZ.
  • Usa EBS do tipo HDFS (Hadoop FileSystem) para arquivos temporários.
  • Caso precise de armazenamento de longo prazo, pode se usar o S3 (EMRFS) que tem uma integração nativa.
  • Integrações:
    • S3
    • DynamoDB
  • Tipos de nodes e preços image-20230221175637124 image-20230221175637124
  • Configuração das instâncias
    • Uniforme Instance Group
      • Seleciona um único tipo de instância (ou on demand ou spot) para rodar os tipos de nodes.
      • Tem Auto Scale
    • Instance Fleet
      • Se define a quantidade e tipo de cada node, podendo distribuir entre on-demand ou instância Spot.
      • Não tem Auto Scale

Executando Jobs na AWS

  • As soluções são várias de variam de acordo com a demanda.
    • 1 - Bom para longas execuções, mas não escala, há necessidade de gerenciamento de infraestrutura.
    • 2 - Escala bem, porém tem as limitações do Lambda (tempo de execução).
    • 3 - Reativo a diversos tipos de eventos, porém tem as limitações do Lambda (tempo de execução).
    • 4 - Bom para jobs longos um custo maior e é mais complexo de implementar.
    • 5 - Bom para jobs longos, não há necessidade de gerenciamento de infraestrutura.
    • 6 - Bom para execução de dados para BigData. image-20230221180929791 image-20230221180929791

AWS Glue

  • Serviço gerenciado de ETL (extract, tranform, and Load).
  • Serviço Serverless, possui 3 serviços:
    • AWS Crawler - Os rastreadores (Crawler) e classificadores examinam dados de fontes diferentes, classificam dados, detectam informações de esquema e armazenam meta-dados automaticamente no AWS Glue Data Catalog.
    • **AWS ETL ** - O núcleo do programa ETL fornece geração de código Python ou Scala para limpeza, enriquecimento, remoção de duplicatas e outras tarefas complexas de transformação de dados.
    • AWS Glue Data Catalog - fornece armazenamento centralizado e uniforme de meta-dados para rastreamento, consulta e transformação de dados usando meta-dados salvos.
  • Permite extrair dados do S3 ou RBDMS e transformar e enviar para o RedShift. glue glue
  • Pode ser usado com Athena, Redshift, EMR para se criar um catalogo de dados (dataSet) reutilizável (GLUE Data catalog). glue-catalog glue-catalog

Redshift

  • Banco para Data warehouse.
  • Baseado no Postgres, mas não e usado para OLTP (online transation processing) e sim para OLAP (online analytical processing).
  • Envia-se os dados em escala (de hora em hora) para data warehouse.
  • 10x melhor que outros OLAP, e escala para PBs (Penta bytes) de dados.
  • Baseado em colunas e permite execução massiva de consultas paralelas (MPP).
  • Pague pelo que usa, baseado em instâncias provisionadas.
  • Tem uma interface SQL pra escrita de querys.
  • Pode se integra com o AWS Quicksight or Tableau para tarefas de BI.
  • Redshit Workload Management (WLM)
    • Permite criar múltiplas filas para tratar as execuções de carga de trabalho (fila super usuário, fila de trabalho curtos, fila de trabalhos longos).
    • Isso garante que um trabalho rápido não fique preso a um trabalho longo.
    • Pode ser feito de forma manual, ou automática pelo RedShift
  • Como é um cluster provisionado para executar a carga de trabalho, caso tenha consulta apenas exporadicas, o ideial seria usar o Athena. Pois esse é usando para consultas massivas e em grandes quantidades.
  • Os dados podem ser carregados do S3, Do DynamoDB ou de qualquer banco via DMS (data migration service) ou via Kinesis firehose. data-importe data-importe
  • Pode escalar de 1 nó até 128 nós com cada nó tendo até 16 TB de espaço.
  • Há dois tipos de nós:
    • Nó líder - usado para o planejamento da queries e agregação dos resultados.
    • Nó de computação - Responsável por executar as queries e enviar o resultado ao líder.
  • Tem uma funcionado chamada Sprectrum que permite executar a queries direto no S3, sem precisar carregar os dados para o RedShift. sprectrum sprectrum
  • Redshift Enhanced VPC Routing - permite copiar e carregar dados através de uma VPC sem passar pela internet.
  • Não é multi AZ, cada nó fica numa AZ, por isso para ter recuperação de desastres é feito Snapshots. incrementais que são internamente armazenados no S3.
    • Permite usar múltiplos Nodes com Multi-AZ mas para alguns tipos de Cluster apenas.
  • Os Snapshots são feitos automaticamente de a cada 8 horas ou a cada 5GB ou podem ser agendados. Mas é possível realizar manualmente. redshit redshit
  • Caso o snapshot seja cripografado, é necessário copiar a chave KMS para o novo cluster. image-20230221182853451 image-20230221182853451

Well architected

well-arch-redshift well-arch-redshift


DocumentDB

  • Implementação da AWS para o MongoDB.
  • Conceitos de deploy similar ao Aurora.
  • Totalmente gerenciado pela AWS e Replicado em 3 AZs.
  • Armazenamento cresce de 10 GB em 10 GB.
  • Escala automaticamente para milhões de requisições por segundo.
  • Preço image-20230221184504405 image-20230221184504405

Amazon Timestream

  • Serviço de banco de dados de Time Series (serie temporais).
  • Totalmente gerenciado pela AWS, rápido, escalavel e serveless.
  • Permite armazenar e analisar trilhões de dados por dia.
  • 1000 vezes mais rapido e 1/10 mas baratos que banco relacionais.
  • Tem compatibilidade com o SQL.
  • Dados recentes são armazenados em memória e depois enviado para armazenamento permanente em um armazenamento mais barato.
  • Permite criar funções de analise de series temporais.
  • Tem criptografia em transito e em repouso.
  • Uso:
    • Dados de IOT,
    • Analise em tempo real. image-20230221185322425 image-20230221185322425

AWS Athena

image-20230221185621707 image-20230221185621707

  • Serviço Serverless, que permite realizar analises em arquivos no S3.
  • Usa SQL para fazer queries nos arquivos.
  • Tem conetores JDBC e ODBC para conectar aplicativos de BI.
  • Suportar CVS, JSON, ORC, Avro, Parquet…
  • Cobrado por uso, queries executadas e mede de dados escaneados.
    • 5$ por TB de dados escaneados.
  • Pode ser usado em BI, Analitics, relatórios e analises de VPC Flow Logs, ELB Log ..
  • Ideal para queries rápidas ad hoc e se integrar com o AWS QuickSight para facilidade de visualização, ele também consegue lidar com análise complexa, inclusive grandes junções, funções de janela e arrays.
  • Usa o Presto com suporte completo a SQL padrão.
  • Permite executar querys em outros serviços de armazenamento (DBs) usando as Queries federadas através de uma lambda, depois pode se armazenar os dados no S3. image-20230221190102755 image-20230221190102755
  • well architected athena-well-arch athena-well-arch
  • Melhorando a performance image-20230221185907561 image-20230221185907561

AWS QuickSight

![Como o Amazon Quicksight funciona](assets/How QuickSight Works_without Q_final.026e51297c1fa18b850ce2ffc1575a9124bbad16.png)

  • Serviço de inteligência comercial (BI) promovido por machine learning, escalável, sem servidor, incorporável, construído para a nuvem.
  • Permite que você crie e publique facilmente painéis interativos que incluem o Insights de Machine Learning.
  • Pago por Sessão.
  • Acesso pode ser feito via Usuários ou Grupos, que não precisam existir no IAM.
  • É baseado no “SPICE”, um mecanismo de cálculo super-rápido e paralelo na memória.
  • Permite configura o CLS (Column-level security) que bloqueia certa colunas para certos usuarios.
  • Conecta se a :
    • Aurora, RDS, Athena, S3. image-20230221191125886 image-20230221191125886

Pipelines para trabalhar com dados

  • Analise de dados image-20230221191437913 image-20230221191437913
  • Ingestão de dados Big Data image-20230221191554977 image-20230221191554977
  • Comparação de tecnologias image-20230221191808657 image-20230221191808657

Monitoring

AWS CloudWatch

Logs

  • Coleta métricas e logs de tudo no AWS. Também é possível enviar logs através do:
    • SDK, Cloud Watch Logs Agent, Cloud Watch Unified Agent.
    • Elastick Beanstalk, ECS, Lambda, VPC Flow Logs, API Gateway, CloudTrail
    • Cloud Watch Logs Agent só pode ser instalado no EC2
    • Route53 - Logs de queries DNS
  • Pode ser exportado para o S3 ou feito um stream para o OpenSearch para analises futuras.
  • LogGroup - Agrupamento de logs, pode ser por exemplo, todos os logs de uma aplicação.
  • LogStream - Fluxo de logs de um recurso.
  • Pode ser definido um período de retenção de logs, e configurado um batch de exportação para o S3.
  • Permite usar criptografia KMS nos logs.
  • Pode-se ter um tail dos logs do Cloud Watch via CLI.
  • Pode enviar os logs para:
    • Kinesis Data Streams
    • Kinesis firehose
    • Lambda
    • OpenSearch
    • S3 (export)
      • Só pode criptografar os logs com AES-256 (SSE-S3), não pode SS3-KMS.
      • Pode levar até 12 horas para exportar.
      • Não é automático, precisa configurar ou usar a API call CreatExportTask.
  • Subscrição de logs: image-20230222054249909 image-20230222054249909
  • A possibilidade de agregar logs de várias regiões. image-20230222054341446 image-20230222054341446
  • A maioria dos problema que se da aqui e por causa de permissões configuradas errado.
  • Permite aplicar filtros através de expressões regulares ou métricas ou IPs. E com isso dispara alarmes.
  • Por padrão nenhum log e enviado das instâncias EC2, caso queira ter os logs é necessária habilitar o CloudWatch Agent e isso fará que o CloudWatch unified Agent nas instâncias envie os logs.
    • Para isso precisa ter uma police que der permissão para enviar logs. unified-agente unified-agente

Metricas

  • São coletadas de todos os serviços da AWS, São úteis para automatizar ações de acordo com status da métrica.
    • Métricas -» thresholds -» actions.
  • Criar alarmes de acordo com as métricas.
  • E com esses alarmes criar ações (posta numa fila do SNS ou acionar o Auto Scale)
  • Existem métricas default com tempos pré definidos (a cada 5 minutos), mas se necessário e por um custo adicional é possível adicionar novas métricas detalhadas e alterar o tempo de coleta.
  • o Free Tier disponibiliza até 10 métricas detalhadas. cloud-metrics cloud-metrics
  • Para criar uma métrica customizada, e só usar a API putMetricaData no sdk/cli.
    • Também é possível definir a resolução da métrica ( “tempo de coleta”) sendo:
      • Standard - 1 minuto.
      • High Resolution - 1|5|10|30 segundos - mas tem um alto custo.
    • Permite enviar métrica antigas (ate duas semanas) e métricas futuras até 2 horas sem que o Cloud Watch reclame.
  • O uso de memória não é monitorada por default, caso queira e preciso usar métricas customizada.

Alarmes

  • Permite definir alarmes para qualquer métrica.
  • tem 3 status:
    • OK , INSUFICIENTE_DATA, ALARM.
  • Os alarmes podem ser disparados através de métricas e filtros.
  • Muito usado em conjunto com Ec2, para auto scale e monitorar saúde.
  • Tem os 3 targets EC2, EC2 Auto Scaling, SNS (permite enviar para os outros).
  • Pode enviar dados para o eventBrigde para conectar ao outros serviços.

Dashboards

  • Com as métricas é possível criar Dashboards, para facilitar a visualização.
  • Os Dashboards são globais.
  • Neles é possível incluir gráficos de diferentes contas AWS e regiões.
  • É possível compartilhar um Dashboard com um terceiro via cognito.
  • até 3 Dashboards são de graça, e demais se paga $3 dólares por mês por Dashboard.

Synthetics Canary

  • Robo que fica verificando a saúde de API e caso encontre problema pode ajustar o ALB ou DNS para redirecionar o tráfego.
  • Permite configurar scripts (nodeJs e Python) para monitorar APIs e URLs, WebSites.
    • Pode agendar a execução da de única vez ou de tempos em tempos.
    • Permite acessos a recursos do Google Chrome.
  • Serve para achar problemas antes de os clientes achem (teste de API).
  • Checa a latência e saúde, da para fazer teste armazenando dados e prints da UI. image-20230222053053925 image-20230222053053925

Eventos

Permite criar eventos, ous seja ações predefinidas ou agendadas que podem disparar alguns serviços AWS (regras que define ações).

  • Padrão de evento - intercepta eventos dos serviços AWS, tipo quando o status estiver pendente.
    • EC2 start, codeBuild Failure, S3
  • Permite criar crons e eventos agendados.
  • Gera json de evento, que pode ser enviado para um target SNS, SQS

EventBridge - (ponte de eventos)

image-20230222055737522 image-20230222055737522

  • Permite criar uma canal que vai receber eventos (event bus) e criar regras para tratar esse eventos postados nesse canal.
  • Permite agendar eventos.
  • É possivel definir uma estrutura para o evento (schema , tipo avro), ou usar algum que já existe, com ele é possivel definir o formato do evento que vai ser diparado por um SDK.
  • A mesma coisa que o Eventos com adicional de que :
    • Permite criar um event bus (Partner) para algums SAAS envie eventos a AWS (Datadog, zendesk).
    • Permite criar um event bus (Custom) para receber eventos da sua aplicação.
    • Permite arquivar os eventos para futuras analises.
  • Para acessar esse Buses precisar ter uma política baseada em recurso.
    • Permitindo até a agregação desses eventos em uma única conta.
  • Vai substituir os eventos.

X-Ray

  • Permite analisar a aplicação visualmente, serviço de tracing distribuido da AWS.
  • integra se com:
    • EC2, ECS, Lambda, BeanStalk, Api Gateway.

Personal Health Dashboard

  • Serviço global que mostras os eventos de manutenção da AWS.
  • Pode mostrar os eventos que podem impactar a sua operação.
  • Lista conjunto de ações para remediação caso tenha algum item fora ou em manutenção.
  • Pode ser acessada via API.
  • Pode se agregar os eventos caso tenha uma organização.
  • Pode se usar o EventBridge para reagir aos eventos de manutenção, para notificação ou para tomar alguma ação. image-20230222061145138 image-20230222061145138

Deployment and Instance Management

AWS Elastic Beanstalk

image-20230312103936578 image-20230312103936578

  • Feito para o desenvolvedor, permite ter uma visão centralizada do ambiente de deployado.
  • Usados para aplicações web, ex: cria toda infraestrutura e só precisa passar o pacote que será usando. ex. (war para o tomcat) .
  • Usa todos os componentes do AWS (ec2, S3 ..).
  • Seria uma PAAS (semelhante ao Heroku).
  • O serviço do Beanstalk é gratis, o uso dele não é cobrado, apenas os componentes usados serão cobrados.
  • Solução para migrar aplicações, sem se preocupar com a infraestrutura.
  • É totalmente gerenciado pela AWS.
  • Usa como base o CouldFormation para criar os recursos.
  • Componetes
    • Aplicação - Aplicação em si.
    • Versão da aplicação - define a versão da aplicação.
    • Ambiente - Ambiente onde a aplicação pode ser disponibiliza.
      • Há dois tier de aplicações
        • Web tier - usa uma balanciador de cargas.
        • Worker tier - usa filas, e workes para processar a carga de trabalho.
      • Há duas formas de deploy
        • Single instânce - Boa para ambiente em dev
        • hige Availibity - Boa para ambientes de produção beanstalk beanstalk
  • Tipos de tier image-20230807075302611 image-20230807075302611
  • Forma de deploy image-20230807075325181 image-20230807075325181
  • Exemplo de arquitetura image-20230222062858389 image-20230222062858389

Code Deploy

  • Usado para realizar deploy de EC2, ECS, Lambda.
  • Pode deployar segundo as estratégias
    • in-place -> mata o antigo e coloca o novo (somente disponível para EC2).
    • blue / green -> criar um novo recurso e roteia os dados em parte.
      • Este por usa vez usa o Traffic Shifted podendo ser:
        • Canary - divide o tráfego entre as duas versões em percentagem até chegar os 100% da novar versão.
        • Linear - divide o tráfego entre as duas versões igualmente.
        • All-at-once - envia todo o tráfego um para uma ou para outra.
  • EC2
    • Usa o AppSpec.yml (definição da aplicação) + estratégia de deploy.
    • O Code deploy atualiza (in place) as instâncias de acordo com a estratégia de deploy.
    • Pode se configurar Hooks para validade como foi o processo de deploy image-20230312110435714 image-20230312110435714
  • ASG
    • há dois tipos de deploy
      • in place - Substitui parte dos das instância de acordo estratégia de deploy.
      • blue - greem - Criar um novo scale group com as novas instância e usa o ELB para controlar o tráfego. Após um tempo o antigo ASG é removido.
  • Lambda
    • Code deploy criar uma nova versão do lambda.
    • Executa uma Lambda de teste (Pre-Traffic) para validar a nova versão.
    • Usa o Traffic Shifting para distribuir o tráfego entre as versões deployadas.
    • Usa o Cloud Watch Alarms para fazer rollback caso necessário.
    • Caso esteja OK, redireciona todo o tráfego para a nova versão e executa uma Lambda de teste (Post Traffic) para validar se o tráfego esta OK. image-20230222065311164 image-20230222065311164 image-20230312110533059 image-20230312110533059
    • SAM Framework usa nativamente o code deploy.
  • ECS image-20230222065605029 image-20230222065605029
  • Após o traffic shifting dinalizado e estando OK, o tasks da versão anteriores são encerradas. image-20230312110703556 image-20230312110703556 image-20230312110804503 image-20230312110804503

AWS CloudFormation

cloud-formation cloud-formation

  • Permite criar qualquer recurso da AWS via código (95%).
  • Usado para criar infraestrutura como código (IAAC).
  • Usa Yaml ou json para declarar os recursos.
  • Ele mesmo se resolve sob a ordem de criação dos recursos.
  • Taggea de forma uniforme os recursos criados.
  • Usando é possível ter uma estimativa de custo da estrutura que se vai criar.
  • Habilidade de se criar infraestrutura em muitos contas, regiões, ambientes com o arquivos do template (StackSets). Permite criar infraestrutura globalmente.
  • Permite criar Recursos customizados usando Lambda, o CF chama a Lambda e ele cria/ deleta/ atualiza. Usado para criar recurso que a CF não da suporte (criar infra no on-premises, limpar buckets).
  • É a base para:
    • BeanStalk
    • Service Catalog
    • SAM (Service application Model) Framework
  • Permite configura uma política de preservar alguns recurso, quando deletado. sendo dos tipos:
    • DeletionPolice=Retain
      • Permite especificar recursos para preservar / realizar backups em caso de delete.
    • DeletePolice=snapshot
      • Permite configurar parar criar um snapshot quando deletar.
      • usado com EBS, ElasticCach cluster, ElasticCache ReplicationGroup,
      • RDS (instância, cluster )
      • RedShift
    • DeletePolice=delete (default)
      • Para custer RDS o default é a police DeletePolice=snapshot.
      • Para deletar o S3, ele precisa esta vazio.

AWS Service Catalog

  • Crie e gerencie catálogos de serviços de TI aprovados para uso na AWS.
  • Na pratica permite que numa organização se controle quais serviços da AWS, possam ser usados pelas contas.
  • Ajuda na governança e compliance.
  • Os administradores define os templates dos produtos utilizando CloudFormation e montam um portfólio de produtos que são controlados via Policy IAM.
  • Os usuários usam esses templates (produtos) e provisionam

SAM - Serveless aplication model

  • Framework para desenvolvimento e deploy de aplicações serveless.
  • Configurações são escritas em YAML.
  • Com ele pode se criar:
    • Lambdas, DynamoDB Tables, Api Gateway.
  • Permite roda os itens acima localmente, o que facilita durante a fase de desenvolvimento.
  • Permite via CodeDeploy realizar o deploy de Lambdas usando Traffic Shifting.
  • Usa o CloudFormation por debaixo dos panos.
  • Arquitetura com SAM. image-20230222104901039 image-20230222104901039

CDK

image-20230222120307732 image-20230222120307732


AWS Systems Manager

ssm ssm

  • Permite criar grupos de recursos para facilitar a visualização de dados operacionais.
    • Pode se executar comandos (scripts nesse grupos).
  • Permite gerenciar EC2 e on-premises em escala.
  • Permite detectar problemas de infraestrutura
  • Permite automatizar patchs de atualizações.
  • Permite conectar as maquinas vias SSM Session Manager.
    • Nesse caso não é necessário SSH, Bastion Hosts e Chaves SSH.
    • É Usado para conectar instâncias via console AWS.
    • Envia para o CloudTrail dados das sessões. image-20230223053512425 image-20230223053512425
  • Trabalha com mac, Windows e Linux e não precisa de SSH.
  • Integrado com Cloud Watch metricas e dashboards. IAM e CloudTrail.
  • É de graça
  • Para usar é só instalar o agente SSM na instância, ou VM.
    • Necessário criar uma role para que o agente tem acesso ao SSM.
  • Patchs image-20230223053242769 image-20230223053242769

Cloud Map

image-20230223054719268 image-20230223054719268

  • Serviço gerenciado pela AWS de descoberta de serviços.
  • Cria se um map de serviços e recursos e se conecta o front end ao Cloud Map.
  • Tem healhcheck e é integrado com o Route53.
  • Pode se usar SDK, API or DNS para realizar querys no Cloud Map

Cost Control

TAGs

image-20230223061135313 image-20230223061135313

Cost Allocation Tags

  • Com tags podemos realizar o tracking dos recursos.
  • Com Cost Allocation Tags podemos habilidar relatorios detalhados de custo.
  • As tags podem ser adicionadas como colunas nos relatorios.
  • há dois tipos de tags
    • AWS Generated
      • Adicionada aos recursos automaticamente uma vez que esteja habilitada.
      • Inicia com o prefixo AWS: (ex AWS:CreateBy)
    • User Tags
      • Definidas pelo usuario
      • Inicia com o prefixo user: .
  • Esses tags aparecem apenas no Billing Console.
  • Após criada uma nova tags e adicionado ao recurso leva 24 horas para aparecer no console.

Tag Editor

  • Serve para gerenciar as tags de multipos recursos em um só lugar.
  • Permite adicionar , remover e atualizar tags.
  • Permite procurar recursos taggeados e não taggeados em todas a regiões.

Calculadora de preços da AWS

  • É uma ferramenta online gratuita que ajuda a estimar o custo mensal dos serviços da AWS.
  • Ela permite que os usuários calculem o custo de diferentes combinações de serviços da AWS com base em suas necessidades específicas.
  • útil para ajudar as empresas a planejar e gerenciar seus orçamentos de TI, bem como para avaliar diferentes cenários de implantação para seus aplicativos e serviços na nuvem da AWS.

AWS Trusted Advisor

  • Traz uma análise em tempo real dos serviços baseados nas boas práticas AWS.
  • Fornece orientação que ajuda a reduzir custos e aumentar o desempenho e melhorar a segurança.
  • Analisa e gera recomendações sobre:
    • Custo.
    • Performance.
    • Segurança.
    • Tolerança a falha.
    • Limites de serviços.
  • Permite a configuração de email semanal com notificações.
  • Há dois tipos de planos
    • Comum - Faz checagem e recomendações comuns
    • Completo - Disponivel para planos de suportes Bussiness & Enteprise.
      • Da acesso programático via APIs
      • Permite seta alarmes quando encontrar limites de serviços.
  • Suports image-20230223061608471 image-20230223061608471
  • Bom saber
    • Pode checar se o bucket S3 é publico. Mas não checa se os objetos dentro são publicos.
    • Pode checar os limites de serviços, porém para aumenta-los precisa abrir solicitação no AWS Suport center ou usar AWS Service Quotas.

Service Quotas

  • Permite definir threshold para os serviços.
  • Envia notificações quando o serviço esta próximo ao limite de contas.
  • Para isso cria se CloudWatch Alarmes no console do Service Cotas.

EC2 Launch Types & Savings Plan

  • Ver Compute & Load Balancing > EC2 > Precificação

S3 Storage Classes

  • Ver Storage > Amazon S3 > Classes de S3

AWS Budget

  • Pode definir um orçamento que o alerte quando você exceder (ou estiver previsto para exceder) seu custo orçado ou valor de uso.
  • Usado para gerenciamento de custo antes de uma demanda, ou seja definir orçamento para determinada demanda.
  • Pode ser usado para saber quanto se usou daquele planejamento inicial.
  • Através das tags permite ver onde se está gastando seu dinheiro.
  • Pode gerar alarmes de gastos, enviar email, postar em tópicos SNS (até 5 topicos) e configurar ações (Lambdas).
  • Pode criar até 20.000 orçamentos. (soft Limit)
  • O 2 são de graça, mas os demais se paga 0.02 $ por dia por Budget.
  • Há 4 Tipos de Budget que podem ser criados:
    • Usage
    • Cost
    • Reservation
    • Savings Plan

Budget Actions

  • Permite configurar ações para quando o budget atingir um certo custo ou uso de um determinado threshold.
  • Suporta 3 tipos de ações:
    • Aplicar IAM Policy a Users, Groups e Roles. - Permite restringir nova criações de recurso
    • Aplicar SCP a OUs. - Permite restringir nova criações de recurso
    • Parar Instâncias do EC2 ou RDS.
  • Podem ser executadas automaticamente, ou pode se ter um workflow de aprovação para execução.

Centralized Budget Management

  • Permite gerenciar os Budget em um conta centralizada.
  • Para cada conta que existir na organização deve haver um Budget para ela e depois esse budget pode se gerenciado pela conta centralizada.
  • Pode se ter dois tipos de OU, uma mais restritiva e outra não.
  • Caso uma conta dessa não restritiva exceda o limites definidos no Budget, pode se mover-la para a OU mas restritiva e pode-se enviar um e-mail para notificar os administradores da conta. image-20230223071637464 image-20230223071637464

Cost Explorer

cost-explorer cost-explorer

  • Serviço usado para ver, entender e gerenciar os gastos (com várias granularidade mês, ano , dia).
  • Permite que você explore seus custos e uso da AWS em um nível alto e detalhado de análise, e permite que você mergulhe mais fundo usando uma série de dimensões de filtragem (por exemplo, serviço da AWS, região, conta de membro, etc.)
  • Contem vários relatórios para analisar os gastos, e permite criar outros customizado.
  • Tem um recurso que prever o uso com base nos últimos 12 meses.
  • Quando devo usar o AWS Compute Optimizer e quando devo usar o AWS Cost Explorer?
    • AWS Cost Explorer se quiser identificar instâncias do EC2 subutilizadas e quiser entender o impacto potencial em sua fatura.
    • AWS Compute Optimizer se quiser ver as recomendações de tipo de instância além do downsizing. Faz o uso de aprendizado de máquina para identificar tipos de carga de trabalho e escolher automaticamente a metodologia de recomendação específica de carga de trabalho para eles.

Compute Optimizer

  • Usa Machine Learning para analisar os recurso e prever recomendações para os mesmos.
  • Ajuda a reduzir custos recomendando os recursos ideias para as cargas de trabalhos executadas.
  • Ajuda na configuração desses recursos de forma a reduzir o desperdício e o custo.
  • Suporta EC2, ASG, EBS, Lambdas.
  • Reduz até 25 % dos custos e as recomendações podem ser enviadas para o S3.
  • Uso:
    • Analisa uso de RAM, e faz recomendações

Migration

Cloud Migrations - The 6R

image-20230223203920041 image-20230223203920041

  • 6 estratégia para migra para a cloud.
    • Rehosting - “lift-and-shift.”
      • Apenas mova do on-premises para AWS (a aplicação inteiramente).
    • Replatforming  - “lift-tinker-and-shift.”
      • Migra por exemplo de um banco on-premises para o RDS.
      • Ou seja migra a plataforma, estava Weblogic muda para Tomcat.
      • Não muda o core da aplicação.
    • Repurchasing — “drop and shop”
      • Muda para um nova solução, ex muda de CRM para Salesforce.
    • Refactoring / Re-architecting
      • Reescreve a aplicação em uma nova arquitetura.
      • Mas demorado, e mais caro, porém pode se tirar o máximo da cloud.
      • Facilita novas features.
    • Retire   - Livrar-se
      • Livra se do que não se usa, ou que usa muito pouco.
    • Retain
      • Deixa no on-premises e se conecta aos AWS.
      • Se mantém, pois é muito complexo a migração o não vale o esforço.

AWS Storage Gateway

  • Usado e cloud híbrida. Permite fazer uma ponte entre os dados da nuvem e o ambiente local (on-premises).
  • Conecta um dispositivo de software local a um armazenamento em nuvem para oferecer uma integração perfeita e segura entre um ambiente de TI local e a infraestrutura de armazenamento da AWS.
  • Você pode usar esse serviço para armazenar dados no AWS para armazenamento escalável e econômico que ajuda a manter a segurança dos dados.
  • Oferece Gateways de arquivo baseados em arquivo (S3, EFS, FSx ), volumes (armazenados em cache e armazenados) e soluções de armazenamento em fita.
  • Tipos de armazenamento que é possivel configurar:
    • S3 File Gateway - Usado para armazenar arquivos. image-20230223205533718 image-20230223205533718
    • FSx File Gateway - Bom para cache de dados de arquivos muitos acessados. image-20230223205704041 image-20230223205704041
    • Volumes Gateway (EBS) - Usados para armazenar dados de backups, ou volumes. image-20230223205806554 image-20230223205806554
    • Fitas (TAPE) Gateway (S3 Glacier) - Usado onde há processos semelhantes fitas. image-20230223205915002 image-20230223205915002
  • Pode se usar autenticação integrada com o Active directory.
  • AWS, também oferecer hardware para disponibilizar essas funcionalidade. Onde não há própria estrutura de virtualização para implementar o AWS Gateway Storage.
  • Uso:
    • Recuperação de desastre.
    • Backup e Restauração.
    • Armazenamento.
    • Redução de latência e cache no ambiente on-premises. Arquitetura com Storage Gateway
  • Usado para migrar dados do on-premises para AWS, ou para conectar aplicação migrada no modo Rehosting. image-20230223210344227 image-20230223210344227
  • Usado como replica de leitura entre ambientes de on-premises image-20230223210608224 image-20230223210608224
  • Para processo de backup, para economia image-20230223210652331 image-20230223210652331

AWS Snow Family

  • Dispositivo offline que permite realizar migração de grande quantidade de dados. Muito usado para levar dados para AWS sem usar a rede.
  • Podem rodar instâncias EC2 ou lambdas, para processamentos de dados em áreas remotas, onde não se tem acesso ao recursos da AWS.
    • Pode se contratar por um log período de 1 a 3 anos o que gera desconto.
  • Há um software chamado OpsHub que fornece uma interface gráfica para os dispositivos.
  • Há 3 tipos:
    • Snowball edge - Usado para transportar TBs e PBs de dados, semelhante a uma maleta.
      • Storage otimized
        • (40vCpu 80Gb Memória) - com 80 TBs compatível com S3.
      • Compute otimized
        • (52vCpu 208Gb Memória) com 42 TBs compatível com S3.
        • Caso necessário pode vir com placa de vídeo.
    • SnowCone - Dispositivo menor espaço, pesa cerca de 2,1 kg, com bateria opcional.
      • HDD - 2 vCPUS, 4 Gb de memória, 8TBs de espaço, USB tipo c.
      • SSD - 2 vCPUS, 4 Gb de memória, 14 TB of SSD
    • SnowMobile - Caminhão, usado para transporta dados acima de 10 PBs para AWS. snow-family snow-family
  • Não é possível importar os dado do Snowball diretamente para o Glacier, primeiro se importaria para o S3 e com uma política de ciclo de vida se moveria para o Glacier.
  • Melhorando a transferência para os dispositivos.

AWS DMS

aws-dms aws-dms

  • Serviço de migração de dados para a AWS.
  • Permite migrar dados para o RDS (a nuvem) de um banco relacional on-primeses.
  • Permite que o banco fique ativo durante a migração, pois usa os logs para a migração.
  • Utiliza o CDC (Change Data Capture) para Continous Data Replacation.
  • Roda numa instância EC2.
  • Permite migrações:
    • homogéneas - de um de um tipo (oracle) para um bando do mesmo tipo (oracle) na nuvem.
    • heterogéneas - de um banco de um tipo (oracle) para outro de outro tipo (mysql)
      • Usa o SCT (Schema conversion tool) para migrar DB diferentes
  • Origem e destino image-20230224054253994 image-20230224054253994
  • É bom saber sobre DMS
    • Trabalha com VPC Peering, VPN, Direct Connect.
    • modos:
      • Full Load - Carrega tudo e pronto.
      • CDC only - migração continua
      • Full Load + CDC - Carga Inicial mais integração continua de novos registos.
    • Oracle
      • Suporta TDE na Origem usando “BinaryReader
      • Suporta TDE, BLOBs in tables que tenha PK no destino
    • Possível combinar SnowBall com o DMS.
      • Pega os dados so banco e usa o SCT para extrair os dados e mover para o SnowBall
      • Pega o SnowBall e move os dados para o S3.
      • Usa se o DMS com o CDC para colocar os dado no banco.

Disaster Recovery in AWS

  • DR é um modelo de arquitetura que visa prevenir desastres que possam afetar sua operação.
  • A ideia e “ter uma copia de sua solução” em uma região afastada, que seria “acionada” quando sua região principal ficasse fora.
  • Na AWS a ideia e semelhante, mas propõe que seus serviços e recurso sejam distribuído / replicados em mais de uma região.
  • Tipos
    • on-primeses -> on-primeses -> tem um datacenter em SP e outro em Fortaleza. -> Solução bem cara de manter.
    • on-primeses -> AWS - uma estrutura Híbrida.
    • AWS Região A -> AWS Região B - Replica ou distribui os serviços e recurso em mais de uma região
  • Termos importante
    • RPO - Recover point objective - está relacionado com a frequência de backup.
    • RTO - Recover time objective - está relacionado a tempo de recuperação de desastre. rpo-rto rpo-rto

Estratégias de DR

dr-estrategias dr-estrategias

  • Backup e Restorebkp-restore bkp-restore
    • A ideia aqui e realizar backups com uma certa frequência (RPO) e quando dá um problema se recuperar os dados do backup (RTO).
    • Tem uma alta tempo de recuperação (alto RTO).
    • Muito barato comparado as outras.
  • Pilot Lightdr-pilot dr-pilot
    • A ideia aqui é usar versões pequenas das aplicação (apenas para Apps Core) em outra regiões, e continuamente, sincronizar os dados entre elas. Caso ocorra um desastre seria só redirecionar os tráfego para nova região e escalar a aplicação.
  • Warm standbydr-warm-standby dr-warm-standby
    • A ideia aqui seria ter toda a infraestrutura replicada só que em escala menor, caso haja um desastre, se redirecionaria o tráfego e escalava as aplicações.
  • hot site / multi site approach hot-site hot-site DR-muilt-site DR-muilt-site
  • A ideia aqui e se ter as aplicações e recurso distribuídos entres as regiões, e os dados sincronizados assim se ocorrer um desastre o tráfego seria redirecionado quase que instantaneamente.
  • Tem o menor tempo de recuperação (RTO), porém é uma solução mas cara.

Dicas

dicas dicas


AWS FIS - Fault Injection Simulator

image-20230224062326078 image-20230224062326078

  • Permite Injetar falhas nas cargas de trabalho na AWS a fim de validar a capacidade de resiliência das soluções.
  • Baseado na engenharia do chaos, stressa as aplicações criando eventos disruptivos, permitindo que eles sejam observados e que se crie soluções para responde-los.
  • Ajuda descobrir novos bugs e lacunas de performance.
  • Suportas os serviços: EC2, RDs, EKS, ECS ….

VM Migration Service

image-20230224064834394 image-20230224064834394

Application Discovery service

  • Permite planejar migração dos projetos com base nas informações coletadas de data centers.
  • Utilização do servidor e e dependências são mapeados como itens importantes para migração.
  • Agentless discovery (Connector)
    • OVA (open virtual Applieance) que pode ser deployada numa VM.
    • Realiza o inventário das VMS, (CPU, Memory, Uso de disco).
    • Funciona em todos os sistemas
  • Agent Based Discovery
    • Agente que pode ser instalado e que recuperar informações sobre a configuração dos sistemas, performance, processo em execução e detalhes de rede.
    • Pode ser instalado em:
      • Microsoft Server, Amazon Linux, Ubuntu, RedHat, CentOs, Suse….
    • Os dados podem ser exportados via CSV, ou podem ser enviados para o Migration HUB ou para um S3 para ser analizado no Athena

MGN - Aplication Migration Service

  • Evolução do SMS (Server Migration Service) e do CLoudEndure Migration.
  • Usado para aplicação de rehosting (lift and Shift) - mover do on-premises para AWS.
  • Converter recursos fisicos ou virtuais em recursos da cloud AWS.
  • Pode migrar suas aplicações da infraestrutura física, do VMware vSphere, do Microsoft Hyper-V, do EC2, da VPC e de outras nuvens para a AWS. image-20230224064237505 image-20230224064237505

DRS Elastic Disaster Recover

  • Chamado anteriormente de CloudEndure Disaster Recovery.
  • Permite recuperar recursos físicos ou virtuais e servidores na cloud. image-20230224064703416 image-20230224064703416

Migration Evaluator

image-20230224065000166 image-20230224065000166


AWS Backup

image-20230224065258211 image-20230224065258211

  • Serviço de backup gerenciado pela AWS.
  • Permite centralizar as configurações de backups.
  • Suporta cross-regions e cross-accounts backups.
  • Pode ter backups agendados ou sob demanda.
  • Permite aplicar uma política de tagueamento do backups.
  • Permite criar uma política de backup (período) e tempo de retenção de um backup.
  • Backup Vault Lock
    • Permite que os dados salvos não possam ser deletados implementa o WORM(Write Once Read Many)
    • Garante que não seja deletado por engano o por software mal.

AWS VPC

vpc vpc

  • Virtual private cloud (rede privada na nuvem).
  • Tem escopo regional.
  • Toda região tem um VPC default, configurada com subnets publicas, ou seja tem acesso via Internet.
  • Pode haver até 5 VPCs por região (soft Limit).
  • Cada VPC pode ter até 5 CIDRs sendo:
    • No mínimo /28 com 16 IPs.
    • No máximo /16 com 65536 IPS.
  • Como VPC é privado só são permitidos os ranges:
    • 10.0.0.0/8
    • 172.16.0.0/12
    • 192.168.0.0/16
  • Resolução de DNS, há duas configurações possíveis
    • enableDnsSuport (configuração de resolução de DNS)
      • O padrão para VPC é true, serve para habilitar o suporte a resolução de DNS na VPC .
      • Private Dns
    • enableDnsHostname
      • true na VPC default mas false para novas VPCs.
      • Habilita o DNS para instâncias e a criação de hostname para instâncias.
      • Public Dns dns dns

CIDR

cidr cidr

  • Classless inter-Domain Routing (Roteamento entre domínios sem classe).
  • Usado para repartir os endereços IPs e definir ranges de ips.
    • x.x.x.x/32 -> tem 1 IP
    • 0.0.0.0/0 -> todos os IPs mask mask

Subnets

  • Bloco de rede dentro de uma VPC.
  • Tem escopo de AZ.
  • Quando se criar ele é privado por padrão.
  • Para se fazer ela publica, deve se atachar um Internet Gateway.
  • E adicionar uma tabela de rota de comunicação com o Gateway.
  • AWS reserva 5 IPs (os 4 primeiros e o ultimo) em cada subnet ex: o bloco CIDR 10.0.0.0/24:
    • 10.0.0.0 - Endereço de rede.
    • 10.0.0.1 - Reservado para o VPC Router.
    • 10.0.0.2 - Reservado para mapear DNS.
    • 10.0.0.3 - Reservado para uso futuro.
    • 10.0.0.255 - Endereço de broadcast.

Internet Gateway

image-20210907203053110 image-20210907203053110

  • Permite que uma VPC tenha acesso ao Internet.
  • Escala horizontalmente e tem alta disponibilidade.
  • Deve haver um Internet Gateway para uma VPC.
  • Também fazem NAT para instâncias EC2 que tem IP publico.
  • Lembrando que quem permite acesso ou não a Internet e a tabela de Rotas.

Route table

AWS VPC - Internet Gateway, Route Tables, NACLs | 4sysops AWS VPC - Internet Gateway, Route Tables, NACLs | 4sysops

  • Serve para direcionar o tráfego de rede para as subnets, permitindo assim que se tenha acesso a Internet ou não.
  • É boa pratica criar no mínimo duas tabelas de rotas por VPC:
    • Uma tabela de rotas publica que ter as subnets publicas, esta se liberar o tráfego de qualquer lugar colocando como target o Internet Gateway.
    • Uma privada onde vai estar as subnetes privadas.

NAT Gateway

AWS — Difference between Internet Gateway and NAT Gateway | by Ashish Patel  | Awesome Cloud | Medium AWS — Difference between Internet Gateway and NAT Gateway | by Ashish Patel  | Awesome Cloud | Medium

  • As instâncias das subnets privadas precisam acesso a Internet para atualizações, é com usa de NAT que fazemos isso.
  • Totalmente gerenciado pela AWS.
  • Pague por hora e banda usada.
  • São criado em uma AZ especifica e Usam Elastic IP. caso queira alta disponibilidade é recomendado criar e mais de uma AZ.
  • Não pode ser usado por instâncias da mesma sub-rede, apenas por outras.
  • Se criar um NAT Gateway numa subnet publica e apronta o tráfego das subnets privadas para o NAT, que por sua vez via route table repassa ao Internet Gateway, como nas subnets privadas só que pode acessar e que esta na mesma VPC se mantém a segurança.
  • Há uma opção de usar uma instancia EC2 como NAT Instance.
    • Mas barato que o Nat Gateway, porém não é resiliente e toda manutenção deve ser feita por nós.
    • Deve se usar um IP Elastico junto a instância.
    • Para que funcione deve ser desabilitado a Checagem de Sorce/Destination (EC2 settings).

Security Group

sg sg

  • (Regras de acessos) por padrão vem negando tudo.
  • Só permite acesso, não preciso negar.
  • É a primeira camada de segurança
  • Está no nível de instâncias. Pode ser entendido como firewall das instâncias EC2.
  • Eles têm estado (statefull), o que significa que todas as alterações aplicadas a uma regra de entrada são automaticamente aplicadas a uma regra de saída.

Porta que vc deve conhecer :

  • 22 -> SSH
  • 21 -> FTP
  • 22 -> SFTP
  • 80 -> HTTP — access unsecured websites
  • 443 -> HTTPS — access secured websites
  • 3389 -> RDP (Remote Desktop Protocol for Windows instance)

NACL

Learn AWS Network ACL and Security Groups in under 5 minutes | by João  Marcelo Souza | Medium Learn AWS Network ACL and Security Groups in under 5 minutes | by João  Marcelo Souza | Medium

  • Network access control list, deve haver uma por subnet.
  • Deve dizer o que é permitido e o que é negado. Seguindo a ideia de procedência indo de 1 - 32766, sendo quanto menor no numero maior a procedência.
  • É a segunda camada de segurança.
  • Esta no nível de Subnets. Pode ser entendido como firewall de subnet.
  • Eles não têm estado (stateless), o que significa que qualquer alteração aplicada a uma regra de entrada não é aplicada automaticamente a uma regra de saída.

VPC Peering

  • Permite conectar 2 VPCs, mas para isso não pode haver sob posição de CIDRs.
  • Não são transitivas, ou seja no exemplo abaixo a VPC A não esta conectada a VPC C. vpc-peering vpc-peering
  • Caso precise que elas se “vejam” e necessário criar um VPC Peering com as duas. vpc-peering vpc-peering
  • Para cada conjunto (A - B , B - C, A - C) é necessário atualizar as tabelas de rotas, para que as instâncias possam se ver.
  • Serviço cross account e inter-regions, ou seja é possível conectar VPCs de contas diferentes e em regiões diferentes.
  • Possível configurar Security Groups que considerem VPCs pareadas.
  • Caso haja um cenario onde haja 2 VPC com a mesma CIDR conectadas com a uma outra VPC usa se Prefix para definir como vai ser o roteamento. image-20230224201705981 image-20230224201705981
  • Não suporta roteamento de borda, para NAT devices image-20230224202108774 image-20230224202108774 image-20230224202133515 image-20230224202133515

VPC Endpoints

image-20230227060707205 image-20230227060707205

  • Permite criar endpoints para acesso de serviços internos da AWS.
  • Escala Horizontalmente e tem redundância.
  • Usado quando queremos que uma rede privada tenha acesso a recursos AWS, mas sem que esse tráfego saia para a internet.
  • Ele remove a necessidade de se ter uma NAT Gateway para acessar serviços da AWS.
  • Usado para subnets privadas.
  • Tipos:
    • Interface - cria uma interface de rede (ENI) que fornece um IP para os serviços devem ser configurado o acesso no Security Group.
      • Quando criado cria se um URL que será atachada ao ENI.
      • Precisa habilidar as configurações na VPC “Enable DNS Hostnames” e “Enable DNS Support”, pois Serviço de DNS irá resolver o Private Endpoint para rede privada.
      • Para todos exceto o DynamoDB.
      • As interfaces podem ser compartilhadas via DX e VPN.
    • Gateway - usa um Gateway para provisionar um destino e deve ser configurado na tabela de rotas (Route Table)
      • Somente para S3 e Dynamo DB.
      • Não tem custo. Tem maior flexibilidade de acessos.
      • Não pode ser expandido para fora da VPC. Ous seja não pode ser compartilhado usando (VPN, DX, TGW, Peering) só funciona dentro da VPC.
      • Se deve criar um único por VPC. O DNS deve esta habilitado e com isso pode se usar hostname para o S3 ou DynamoDB
      • Criado em nivel de VPC, por isso que é necessário definir a entrada de acesso no rout table image-20230227061041750 image-20230227061041750
  • Caso use VPC Endpoints deve se atentar a usar as configurações de DNS, Outra coisa que pode gerar confusão e que a partir da hora que se usa o VPC Endpoints e necessário informar as região ao usar comandos do CLI, pois o VPC Endpoints tem escopo regional.
  • VPC Endpoint Police
    • Permite controlar os acesso a serviços AWS.
    • Não sobrescreve política do S3 ou só IAM, apenas adiciona a endpoint a definição de quem pode acessa-lo.
    • Caso queria restringir o acesso de algum recurso a apenas ao VPC Endpoint é necessário ir no recurso e definir uma política de acesso que indique que o acesso a aquele recurso deve ter origem do VPC Endpoint com a condição “aws:sourceVpce” onde se passa os endpoints que podem acessar o recurso.

AWS PrivateLink - VPC Endpoint Services AWS PrivateLink - VPC Endpoint Services

  • Permite compartilhar um serviço de uma VPC com outra VPC sem precisar que aquele serviço publico, ou sem precisar ligar as VPC com VPC Peering.
  • Forma mais segura e escalável de se expor mais de 1000 serviços AWS.
  • Sem a necessidade de Peering, DX e VPN, NAT ou RouteTables.
  • Faz uso do VPC endpoints, por isso muitas vezes pode ser considerado o mesmo serviço.
  • Usando com S3 e Direct Connect image-20230227065519211 image-20230227065519211
  • Usando com VPC Peering image-20230227065551394 image-20230227065551394

VPC Flow Logs

image-20230228061439898 image-20230228061439898

  • Permite capturar o tráfego IP dentro de uma VPC.
  • Esta em nivel de VPCs.
  • Tipos:
    • VPC Flow Logs - se aplica a tudo dentro da VPC.
    • Subnet Flow Logs - se aplica as subnets dentro de uma VPC.
    • ENI Flow Log - Se aplica a uma interface de rede.
  • Podem ajudar a monitorar tráfegos de rede dentro da VPC, ajuda na troubleshooting.
  • Pode se usar o Athena ou Cloud Watch Insights para identificar anomalias. image-20230228061544920 image-20230228061544920
  • Arquiteturas com FPC Flow Logs image-20230228061742844 image-20230228061742844

Bastion Hosts

Bastion Hosts Bastion Hosts

  • Maquina numa rede publica da onde é possível conectar a instâncias em uma rede privada via SSH.
  • Se conectar ao Bastion Hosts via SSH e a partir dele se conecta as instâncias na rede privada.
  • Outra solução é a Session Manager que permite acesso na WEB sem necessidade de SSH.

Virtual Private Gateway

Virtual Private Gateway Virtual Private Gateway

  • Permite ligar uma rede on-primise a AWS via VPN, para isso é necessario configurar um Virtual Customer Gateway do lado do on-primese e do lado da AWS cria se uma Virtual Private Gateway.

AWS Direct Connect

dx dx

  • Conexão dedicada, fibra que vai do seu datacenter até a AWS.
  • Demora cerca de 1 Mês para ser implementado toda a infraestrutura.
  • Por padrão os dados em transito não são cartografados, pois já se esta numa rede privada, mas caso queira pode se usar um solução de IPSec com VPN.
  • O Direct Connect (DX) é um recurso que permite a conexão dedicada (vai de fibra até o datacenter) e direta com a AWS, fora da infraestrutura da Internet.
  • Exemplo de uso, o Itaú deseja ter a melhor conexão possível entre seus datacenter e a AWS, ele contrata um DX que vai ligar uma fibra do datacenter do Itaú até a AWS (Um parceiro).
  • Caso se queira conectar mais de uma região deve se usar um Direct Conect Gateway DX-GW DX-GW
  • Alta disponibilidade DX DX
  • Direct Connect Gateway - Site Link image-20230228061217204 image-20230228061217204
  • Tipos de DX image-20230228060449937 image-20230228060449937

Virtual Interface VIF

  • Public VIF - Permite conectar serviços publicos da AWS (S3, EC2).
  • Private VIF - Permite conectar aos recursos na sua VPC (EC2, ALB).
  • Transit Virtual Interface - Conecta aos recursos usando um TGW (Transit Gateway).
  • Endpoints privados não precisam de interfaces (Private VIF) para conexão, pois podem ser acessados diretamente.

Egress Only Internet Gateway

  • Um gateway da Internet somente de saída é um componente da VPC horizontalmente escalado, redundante e altamente disponível que permite a comunicação de saída pela IPv6 das instâncias na VPC para a Internet e impede a Internet de iniciar uma conexão IPv6 com suas instâncias.

Transit Gateway

AWS — Transit Gateway AWS — Transit Gateway

  • O AWS Transit Gateway conecta VPCs e suas redes locais por meio de um hub central. Isso simplifica a rede e elimina os complexos relacionamentos de emparelhamento. Ele atua como um roteador de nuvem e cada nova conexão só é feita uma vez.
  • Permite instâncias na VPC acesse a NAT Gateway, NLBs, PrivateLink, e EFS e outras VPC conectadas ao AWS Transit Gateway.
  • Permite usar o Direct Conect ao premises ou VPN.
  • Transit Gateway é um recurso regional e pode conectar milhares de VPCs na mesma região da AWS.
  • Pode ser compartilhado com outras contas da AWS usando RAM.
  • Permite restringir quais VPC tem acesso a quais VPC usado Route Tables.
  • Suporta IP Multicast (Não suportado por nenhum outro serviço da AWS.)
  • Casos de Uso
    • Para implementar a topologia Hub e Spoke (star).
    • Para conectar vários Amazon VPCs entre regiões (usando peering do Transit Gateway).
    • Forneça aplicativos em todo o mundo - o Transit Gateway ajuda a criar aplicativos que abrangem milhares de Amazon VPCs. Tudo é mais fácil de implantar, gerenciar e solucionar problemas.
  • Limitações
    • Você pode se conectar a no máximo três Transit Gateways em uma única Conexão Direct Connect para conectividade híbrida.
    • O Transit Gateway não oferece suporte ao roteamento entre VPCs com CIDRs sobrepostos.
  • Inter e Intra Region Peering
    • Dentro de uma região é possivel ter dois TGW ( Transit Gateway) com finalidades diferentes e conecta-los usando intra-Refion Peering Mesh.
    • Mas caso queira conectar a outra região com um estrutura semelhante seria necessário criar um novo TGW e realizar o inter-Region Peeering Mesh. image-20230227055738521 image-20230227055738521

Custo de rede

net-cost net-cost image-20210908210015556 image-20210908210015556 image-20210908210158231 image-20210908210158231 image-20210908210357597 image-20210908210357597


AWS VPN

  • Permite conectar o on-premises a AWS via internet publica, com segurança.
  • AWS Recomenda a criação de uma VPN diferente para cada VPC. porém isso pode ser complicado, por isso é recomendado o uso de DX (Direct Conect).
  • para se criar precisa:
    • Do lado on-premises:
      • Disponibilizar um estrutura com com IP publico.
      • Criar um Customer Gateway (CGW)
    • Do lado da AWS
      • Configurar um Virtual Private Gateway e atachar a VPC
      • Conectar ao Customer Gateway ao Virtual Private Gateway (VGW)
  • Para alta disponibilidade se recomenda a existência no mínimos duas VPN configuradas.
  • Pode se usar o Global Acelerator para melhorar a velocidade. image-20230228053747985 image-20230228053747985
  • Configuração da tabela de rotas
    • Static Routing - Insere manualmente as rotas em cada uma das tabelas de rotas.
    • Dynamic Routing - Usa se o protocolo BGP para realizar a configuração da tabela de rotas automaticamente compartilhando os IP Entre as tabelas de rotas.
      • Necessário especificar um ASN para cada Gateway criado
  • Link Aggregation Group
    • O LAG no AWS Direct Connect permite que você agregue várias conexões de rede físicas em uma única conexão lógica de alta capacidade. Isso pode ajudar a aumentar a largura de banda, melhorar a redundância e simplificar a configuração da rede. Com o LAG, você pode criar um único link de conexão lógica que pode fornecer uma largura de banda de até 10 Gbps.
    • Além disso, o LAG pode ser usado para criar conexões redundantes para garantir a alta disponibilidade da sua rede. Se uma das conexões físicas falhar, o tráfego pode ser automaticamente roteado para outra conexão sem interrupções de serviço.
    • Link Aggregation Group (LAG) - AWS Direct Connect Link Aggregation Group (LAG) - AWS Direct Connect
  • Acessando a Internet via cloud do on-premises
    • Nat Gateway - não funciona pois ele não pode ser acessado de origem vinda de DX, VPN ou Peering. image-20230228054209397 image-20230228054209397 image-20230228054410767 image-20230228054410767 Client VPN - Permite configurar uma VPN para que os usuários possam conectar via por exemplo (OpenVPN)

CloudHub

  • Permite conectar mais de 10 Customer Gateway a cada Virtual Private Gateway. image-20230228054727767 image-20230228054727767

AWS Network Firewall

  • Protege a VPC inteira image-20230228062209390 image-20230228062209390 image-20230228062313794 image-20230228062313794 image-20230228062545252 image-20230228062545252

Machine Learning

image-20230303060442789 image-20230303060442789


Rekognition (reconhecimento)

image-20230302070726050 image-20230302070726050

  • Permite buscar pessoas, objetos, textos e cenas em imagens e videos usando ML.
  • Pode se realizar reconhecimento e busca facial para verificação de usuário, e contagem de pessoas.
  • Posse criar um banco de faces familiares ou usar de celebridades.
  • Caso de usos:
    • Moderação de conteudo
    • Detecção de texto.
    • Deteção de analise de faces (género, range de idade, emoções)
    • Reconhecimento de celebridades
    • Caminhos (Para analise de futebol)
    • Usado e medias sociais, e-commerce
  • As imagens ou vídeos são analisadas e e validado junto a um threshold de nível de confiança e pode se adicionar um passo opcional que seria a validação por humanos via Augmented AI (A2I).

Transcribe

  • Serviço de conversão de áudio em texto.
  • Usa processos de aprendizados profundo de maquina chamados de Automatic Spreech Recognition (ASR) para converter o discurso (áudio) em texto rapidamente.
  • Permite remover automaticamente as PII (Personal Identifiable Information) usando Redaction.
  • Suporta automaticamente linguagens diferentes em áudio com multi-línguas e consegue identifica-las.

Polly

  • Serviço de conversão de texto em áudio. (oposto de Transcribe).
  • Permite criar aplicação que falam.
  • Permite usar Lexicon e SSML
    • Pronunciation Lexicon - permite customizar a pronúncia de palavras. Assim quando aparecer
      • AWS -> Amazon Web Service
      • Uniliva -> Uniliva, aquele mineiro bunito dimais
    • SSML - Speech Synthesis Markup Language - gera áudio através de textos e documentos. Permite customizar para :
      • Da ênfase em palavras especificas ou frases.
      • Usar pronuncia fonética.
      • Incluir quebra de som ou sussurros.

Translate

  • Serviço de tradução de línguas da AWS.
  • Permite traduzir grandes volumes de textos rapidamente, permite localizar o conteúdo e traduzi lo de acordo com a preferência do usuário.

Lex + Connect

image-20230302074306978 image-20230302074306978

  • Lex
    • Mesma tecnologia usada pela Alexa. Utiliza o ASR (Automatic Spreech Recognition) para converte o áudio em texto.
    • Entende linguagem natural e converte-la em texto.
    • Usado para criar chatbots e call center bots.
  • Connect
    • Permite receber chamadas, criar contatos baseados na nuvem, ou seja contatos virtuais (Virtual contact center).
    • Solução de centro de contato, pode ser integrados com outros CRM ou AWS. De forma que receba um chamada e crie um chamado ou redirecione para um atendente (semelhante a URA).
    • Não tem pagamento UPfront e 80% mais econômico que concorrentes.

Comprehend

  • Usado para processamento de linguagem natural (NLP).
  • Totalmente gerenciado pela AWS.
  • Usado para:
    • Entender a linguagem de um texto.
    • Se ele é positiva ou negativa.
    • Extrair frases, lugares, pessoas , marcas ou eventos.
    • Permite usar tokenization nos textos.
  • Exemplos de uso
    • Analizar dezenas de e-mail, buscando mensagem positivas ou negativas ou oportunidade.
    • Criar e agrupar artigos de mesmo contexto.

Comprehend Medical

  • Usado para interpretar textos clínicos (receita do medico).
  • Pode se usar o PHI (Protected Health Information) usando NLP
  • Permite ler receitas e anotações medicas e armazenar esses dados no S3 e usando outras tecnologias converter essa anotações em documentos ou até mesmo áudio.

SageMaker

  • Serviço gerenciado pela AWS, para criação de modelos de Machine Learning.
  • Nele há a possibilidade de se criar um modelo ,treina-lo e aplica-lo e novos conjuntos de dados para predizer coisas.

Forecast

image-20230303055156926 image-20230303055156926

  • Serviço gerenciado pela AWS, que usa ML para realizar previsões.
  • Exemplos: Prever vendas futuras de carros e outros itens.
  • 50% mais acurado quando olhando datas por si só.
  • Reduz o tempo de previsão de meses para horas.
  • Use cases: Planejamento de demanda de produtos, planejamento de Financeiro e de recurso.

Kendra

image-20230303055457981 image-20230303055457981

  • Serviço gerenciado pela AWS, para busca em documentos usando ML. (Document Search service)
  • Permite extrair resposta de documentos (text, pdf, HTML, PowerPoint, Word, FAQs).
  • Pense que é um buscador igual ao Google.

Personalize

image-20230303060020714 image-20230303060020714

  • Serviço gerenciado pela AWS, para criação de APP com recomendações personalizadas em tempo real.
  • Exemplo:
    • Recomendações personalizadas de produtos,
    • Re/Ranking de produtos.
    • Email de marketing direcionados e personalizados.
  • Usado na Amazon para recomendar produtos de acordo com histórico de pesquisa e compras.

Textracs

image-20230303060223380 image-20230303060223380

  • Automaticamente extrai textos, escritos a mão de documentos ou de arquivos escaneados usando IA e ML.
  • Extrai de tabelas, PDF, imagens.

Outros Serviços

  • CodeCommit: armazene o código em repositórios controlados por versão. O código pode existir em múltiplos branches (ramificações).
  • CodeBuild: construa e teste o código sob demanda em suas pipelines de CICD.
  • CodeDeploy: faça o deploy do código em EC2, Lambda ou ECS.
  • CodePipeline: orquestre pipelines de CICD. Se usar o CodeCommit como fonte, ele se conectará a apenas um branch.
  • CloudSearch: solução de busca gerenciada para realizar pesquisas de texto completo, auto completar em suas aplicações.
  • Alexa for Business: use a Alexa para ajudar os funcionários a serem mais produtivos em salas de reunião e suas mesas.
  • Lex: Reconhecimento automático de fala (ASR) para converter fala em texto. Útil para construir chatbots.
  • Connect: receba chamadas, crie fluxos de contato, centro de contato virtual baseado em nuvem.
  • Rekognition: encontre objetos, pessoas, textos, cenas em imagens e vídeos usando Machine Learning.
  • Kinesis Video Stream: um fluxo por dispositivo de vídeo, análise usando instâncias do EC2 ou Rekognition.
  • WorkSpaces: estações de trabalho Windows sob demanda. WAM é usado para gerenciar aplicativos.
  • AppStream 2.0: transmita aplicativos de desktop para navegadores da web.
  • Mechanical Turk: marketplace de crowdsourcing para realizar tarefas simples para humanos, integração com SWF.
  • Device Farm: serviço de teste de aplicativos para seus aplicativos móveis e web em dispositivos reais.

CodeGuru

image-20230303062953533 image-20230303062953533

  • Serviço de ML para automatizar code reviews de realizar recomendações de performance no código.
  • provém duas funcionalidades:
    • CodeGuru Review - Realiza o review (analise) de conteúdo estático.
    • CodeGuru Profiler - Realiza recomendações sobre a performance das aplicação durante o tempo de execução.

Alexa for Business, Lex e Connect

  • Alexa for Business
    • Ajuda os empregados a serem mais produtivos.
    • Permite mensurar e incrementar a utilização de salas de reuniões.

Kinesis Video Streams

  • Um stream de vídeo por dispositivo (producer).
    • Cameras de segurança, smatphones
    • Pode se usar a biblioteca do Kinesis video strems.
  • Dados são armazenados no S3 (Nós não temos acesso direto aos dados)
  • Não pode enviar os dados de fluxo diretamente para o S3. (precisa criar um solução customizada)
  • Consumers
    • EC2 para processamento em tempo real.
    • Rekognition para identificação de pessoas image-20230304054215911 image-20230304054215911

WorkSpaces

  • Ambientes de trabalhos seguros e gerenciados na nuvem(como fosse uma VDI na nuvem).
  • Bom para eliminar o gerencimento de VDI (Virtual Desktop Infrastructure).
  • Paga-se por hora ou pode se fazer uma assinatura mensal.
  • IP Access Control Groups
    • Similar security group para os WorkSpace, permite configurar um range de IPs que podem acessar.
  • Integrado com o AD da Microsoft. image-20230304054644456 image-20230304054644456 image-20230304054812788 image-20230304054812788 image-20230304055058906 image-20230304055058906

AppStream 2.0

  • Serviço de Stream de aplicações desktop.
  • Entrega para qualquer computador se a necessidade de provisionar infraestrutura.
  • As aplicação são entregues em browsers web.
  • Ou seja, em vez de se o uma aplicação em 10 maquinas, pode se ter em uma única maquina e realizar stream dessa aplicação em vários computadores permitindo acessa-las via browser. image-20230307053059477 image-20230307053059477

Device Farm

  • Device Farm é um serviço de testes de aplicativos móveis na nuvem oferecido pela Amazon Web Services (AWS).
  • Ele permite que desenvolvedores de aplicativos testem suas aplicações em uma ampla variedade de dispositivos móveis reais, como smartphones e tablets, sem precisar possuir cada um desses dispositivos fisicamente.
  • O Device Farm automatiza testes em dispositivos móveis em paralelo, ajudando a detectar erros e problemas de desempenho em seus aplicativos antes de serem lançados no mercado.
  • Além disso, o Device Farm também oferece recursos de relatórios detalhados que ajudam os desenvolvedores a entender melhor como suas aplicações estão sendo executadas em diferentes dispositivos.

Macie

macie macie

  • Usa machine learning, para detectar dados sensíveis (PII - Personally identifiable information).
  • Totalmente serveless.
  • Analisa os dados e notifica o CloudWatch EventBridge que notica via SQS, SNS ou Lambda.

SES

image-20230307054458395 image-20230307054458395

  • Amazon Simple Email Service. É um serviço de e-mail em nuvem.
  • Permite que empresas enviem e-mails em grande escala para seus clientes ou usuários finais de forma rápida, confiável e escalável.
  • Podem enviar e-mails transacionais, como confirmações de pedidos, notificações de transações financeiras, lembretes de senha e outros e-mails importantes relacionados ao serviço.
  • Inclui recursos de monitoramento e relatórios detalhados, permitindo que as empresas avaliem a eficácia de suas campanhas de e-mail e monitorem a entrega de seus e-mails.
    • Conjunto de configuração. Permite customizar o envio e a analise do processo.
      • Event Destinations - permite configurar para onde será enviados os dados de envio e resposta do e-mail.
      • Ip Pool Management - Use para enviar e-mail específicos e particulares.
  • Suporta DKIM (DomainKeys Identified Mail) e SPF (Sender Policy Framework)
  • Pode ser acessado via API e SMTP.

EC2 Imagem Builder

image-20230307055200810 image-20230307055200810

  • Serviço de criação e gerenciamento de imagens de máquinas virtuais (VMs - AMIs) ou Container image.
  • Serviço gratuito (Pague apenas pelos recursos usados).
  • Permite que os usuários criem, atualizem e gerenciem imagens personalizadas de VMs para uso em ambientes de nuvem.
  • Permite automatizar o processo de criação de imagens, incluindo a instalação de software, a aplicação de patches de segurança e a configuração de configurações personalizadas.
    • Criação semanal com atualizações de segurança, ou atualização de pacotes.
  • Pode ser integrado a outros serviços como o S3 e o Systems Manager.
  • Permite publicar as AMsI em Múltipla regiões e contas
  • Oferece recursos de versionamento e controle de acesso.

IoT Core

image-20230307060251713 image-20230307060251713

  • Serviço de gerenciamento de dispositivos IoT (Internet das Coisas) . Serviço serveless.
  • Fornece uma plataforma para conectar, gerenciar e controlar dispositivos IoT, permitindo que se colete e analisem dados de dispositivos em tempo real.
  • Com o IoT Core, os dispositivos podem se comunicar de maneira segura e escalável, usando protocolos de comunicação padrão, como MQTT e HTTPS.
  • Fornece recursos para gerenciamento dispositivos, como registro de dispositivos, autenticação e autorização, gerenciamento de certificados, monitoramento de saúde do dispositivo e aplicação de atualizações de firmware.
  • Pode ser integrado com outros serviços como o S3, o Amazon Kinesis e o AWS Lambda, para realizar análises em tempo real e processamento de dados de dispositivos IoT. image-20230307060344190 image-20230307060344190 image-20230307060408582 image-20230307060408582

Data Exchange Data Pipeline Lake Formation AppFlow Managed Blockchain App Runner Lightsail Wavelength EKS Distro EKS Anywhere Keyspaces (for Apache Cassandra) Cloud9 CodeArtifact CodeStar Amplify Pinpoint Internet das Coisas:

  • AWS IoT Analytics
  • AWS IoT Core
  • AWS IoT Device Defender
  • AWS IoT Device Management
  • AWS IoT Events
  • AWS IoT Greengrass
  • AWS IoT SiteWise
  • AWS IoT Things Graph
  • AWS IoT 1-Click Serviços de mídia:
  • Amazon Elastic Transcoder
  • Amazon Kinesis Video Streams

Resumão

AWS Accounts and Organizations

AWS Organizations

  • Há um limite de 20 contas por organização.

  • Role OrganizationAccountAccessRole da permissão de admin dentro das contas da organização

    • Essa role é criada automaticamente quando se cria uma conta dentro de uma OU. Porém caso a conta já exista e esta convidando ela pra a OU é necessário criá-la manualmente..
  • Permite compartilhar instancias reservadas com as contas

Service Control Policies (SCP)
  • É aplicada para todos os usuários e Roles de um conta incluindo usuário Root.
  • Não se aplicam a roles que interligam serviços, ou seja não se aplicam para roles que integra com o AWS Organization.
  • Devem ter permissões explicitas, e por padrão não permitem nada.
  • São herdadas numa estrutura de OUs.
    • Ha duas estrategias que se pode usar:
      • Deny List - Tudo liberado e crias SCP para negar as coisas. - Default
        • Cria se um SCP que libera tudo e outras que vão negando.
      • Allow List - Criar se SCP para liberar resursos especificos
  • Na police pode ser usar as condicions:
    • awsTagKeys - Para informar quais tags podem ser passadas.
    • aws:RequestTags/ - Para obrigar que uma tag seja passada.
Tag Polices

image-20230314204757719 image-20230314204757719

  • Permite configurar os valores possiveis de tags e quais recursos podem recebe-las. ou seja padronizar o uso de tag
  • Usa se o eventbrigde para monitorar tags fora de compliance
AI Services
  • A AWS usa seus dados para Melhorar a IA, caso queira desabilitar essa funcionalidade deve se criar uma police.
Backup police
  • Permite criar regras de backup, que devem ser respeitas pelas contas
  • Pode ser adicinadas a OU ou a contas.
  • Descrever janelas de backups, frequência, região;

AWS Control Tower

  • Permite configurar e governar um Múltiplas contas AWS para seguir praticas recomendadas.
  • Não se aplica a conta de gerenciamento nem ao usuario root.
  • Permite criar Landing Zone - Conjunto de contra que seguem um padrão de configuração / regras de como deve se comportar (em qual região pode operar).
  • Permite aplicar política usando guardrails (regras de governança pre-configuradas). Aplicado em nível de OU.
    • Preventivo, usando SCPs, desabilitando recursos, o bloqueando ações.
    • Detectivo, Usando AWS Config, para validar se as configuração da conta esta de acordo.
      • Usa o AWS Config para validar se esta fora da compliance, caso esteja usa uma lambda para realizar alterações (tipo remover porta aberta, que não é permitido), ou para enviar notificações via SNS.
  • Fabrica de contas - Permite criar novas contas e configurar como serão os recursos da conta, como VPC, Security Groups. Usa AWS Service Catalog para provisionar novas contas.

Identity Management and Permissions

IAM

  • Dentro do IAM temos:

    • iam user - Usuário comum.
    • federated user - usuário de fora da organização, usuário do Facebook por exemplo.
    • iam role - permissões que são dadas a recurso, tipo EC2 para acessa um S3. Pode ser assumida por usuarios (usando STS) ou recursos
    • identity provider (idp) - Permite customizado acesso provider de terceiros e liberara acesso via token de acesso do STS.
  • IAM Polices - Políticas de acesso (permissões).

    • A validação de acesso é feita a cada acesso, de forma automática. Podem ser do tipo:
      • identity-based - Política que são destinados a usuário / grupos e rules
      • resource-based - Políticas que são atribuídas a recursos, para da acesso a outro recursos. Ao usar isso ao invés de uma role, o usuário não perde os acesso que tinha.
  • Access Advisor - Permite ver as permissões e a ultima vez que foi usada.

  • Access Analize

    • Permite analisar quais recursos são compartilhada com entidades externas, ex buckets.

    • Permite definir uma Zona de confiança com as contas ou as organizações que confia. O que estiver fora dessa Zona terá o acesso sinalizado

    • Pode ler logs de do CloudTrail e gerar polices com permissões granuladas.

  • Polices com variaveis e tags

    • Permite criar politicas genéricas e usar tags para definir condições para os recursos.

    image-20230314214316972 image-20230314214316972

    image-20230314214601047 image-20230314214601047

    image-20230314214526574 image-20230314214526574

IAM Permission Boundaries

  • Quando se criar usuário ou Roles e possível dar permissão genéricas, tipo de administrador , e setar um limite para essas permissões, exemplo o cara é administrado apenas nos recursos do S3.

  • Suportado apenas por usuários e roles (Não grupos).

IAM Security Tools

  • IAM Credencial Report (Account level) -> Lista todas as contas de usuário e o status de cada uma.
  • IAM Access Advisor -> Mostras os serviços que o usuário tem acesso e a ultima vez que o mesmo acessou.

STS

  • Serviço de geração token para acesso validos de 15 minutos a 12 horas.

  • Fornece uma api chamada assumeRole, que é usada para assumir outras roles.

  • Cria se uma police do tipo Trust Police com a ação assume role, e com a principal a que se confia.

  • image-20230314223039124 image-20230314223039124

  • Lembrando que quando assuminos uma Role, perdemos nossos acessos anteriores.

  • Permite revogar o acesso a role adicionando um novo bloco de statement ou usando o AWSRevokeOlderSessions.

  • Usando em cross acount

    image-20230314223227312 image-20230314223227312

    • Cria se um relação de confiança com a outra conta.
    • Pode gerar um external ID (segredo entre a conta e a conta externa) para a outra conta.
    • Configura uma assume Role com esse ID. para mais segurança
    • Mas é possível configurar apenas com o ID da conta externa.
  • Session Tags

    • Usado para segregar acessos, assim quem assume a role é obrigado a passar a tag de sessão para acessar o determinado recurso.
  • APIs importantes

image-20230314220824665 image-20230314220824665


ACM

  • Serviço regional, não é possível copiar certificados entre regiões
  • Caso queira usar global cada região deve ter seu próprio certificado
  • Usado em ELB, API Gateway e Cloud Front

SNI - Sever Name Indication

  • Ele requer que seja passado o hostname do servidor destinatário, para iniciar o processo de handshake.
  • Funciona apenas com ALB e NLB da nova geração e com o CloudFront.

S3 Encryption for Objects

  • SSE-S3 - Criptografa os objetos do S3 usando chave gerenciada pela AWS (AES-256).

    • Usada para todos os dados no Glacier
  • SSE-KMS - Criptografa os objetos do S3 usando chaves criadas no KMS.

    • As chamadas de uso do KMS é logado no cloudtrail.
    • Caso esteja usando essa criptografia, se o bucket for publico, o usuário não vai conseguir ver os objetos, pois ele não vai ter acesso a chave.
    • Para conseguir realizar uploads no bucket, precisa ter acesso a permissão (kms:GenerateDataKey) caso contrario não vai conseguir.
  • SSE-C - Criptografa os objetos do S3 usando a chave gerenciada pelo usuário, quando se usa por exemplo o Cloud HSM

  • Criptografia Client-Side - Quando o usuário criptografa os dados antes de enviar ao S#.

S3 - Security

  1. Forma de acesso ao bucket e aos objetos contido nele.
  • Baseada em usuários (user based) - diz-se que para ter acesso precisa ter permissão via IAM Console, ou seja toda chamada de API é validada junto ao IAM.
  • Baseada em recurso (Resource based)
    • Bucket Polices
      • Regras de acesso ao bucket, permite outros recurso e outras contas a ter acesso.
      • Escrita em json.
      • Pode ser usada para dar acesso publico ao bucket.
      • Pode ser usada para foçar o uso de criptografia,
      • Pode ser usada para dar acesso a cross account.
      • Pode se usar as condições:
        • SourceIP - Para validar se o IP é publico ou elástico
        • VpcSourceIp - Para validar se o IP é privado (isso considerando um VPC endpoint)
        • Source VPC ou Source VPC Endpoint - permite trabalhar com VPC endpoints
          • Permite filtrar o acesso para apenas aqueles que usaram um determinado VPC endpoint ou range de IPs.
        • ClouldFront Origin Identity - Permite que apenas o cloudFront acesso a bucket.
        • MFA - Permite usar para exclusão de dados
    • Object Access Control List (ACL) - Define a lista de acesso de cada objeto armazenado (nível mais baixo).
    • Bubcket Access Control List (ACL) - Define a lista de acesso de cada bucket (menos comum de ser usado);

Vault Lock e S3 Object Lock

  • Vault Lock -
    • Adota o WORM (Write Once Read Many)
    • Permite configurar para que arquivos nunca seja delatados ou alterados, usado em compliance.
  • S3 Object Lock
    • Semelhante ao anterior, mas permite configurar a retenção do objeto, por exemplo o arquivo não pode ser modificado por 30 dias, o a nota fiscal não pode ser apagada por 5 anos.
    • Adota o WORM (Write Once Read Many)

S3 Access Points

image-20230311060847623 image-20230311060847623

S3 Multi-Region Access Points

  • Permite criar um access point global, que redireciona o trafico de acesso para o bucket na região mais proxima.
  • A ideia e se ter buckets replicados em cada região e através de um Access Point acessa-lo, assim diminuindo a latência.
  • Usado em cenários de faillover, (ativo-ativo ou ativo-passivo).

image-20230311060946272 image-20230311060946272

Soluções com WAF

  • Usando WAF pra acessa ALB apenas pelo Cloud Front. Usando o Secrets Manager para gerar novos valores para o header e atualiza-los via Lambda.

image-20230208045537986 image-20230208045537986


AWS Firewal manager

  • Permite gerenciar regras de todas as contas AWS de forma centralizada.
  • Tem regras comuns de segurança.

image-20230208045823263 image-20230208045823263

  • Diferenças entre WAF e AWS Firewal manager e AWS Shield
    • WAF usado para proteção em nivel de aplicação (camada 7).
    • AWS Shield usado para proteção contras DDos ( camada 6 e 4 (rede e transporte)).
    • AWS Firewal manager usado para centralizar regras, permite aplicar o WAF e SHIELD em varias contas.

AWS Guard Duty

image-20230315164138710 image-20230315164138710

  • Serviço de inteligência artificial para detectar anomalias na sua conta.

  • É um serviço regional.

  • é um serviço inteligente de detecção de ameaças que monitora continuamente suas contas da AWS, instâncias do Amazon Elastic Compute Cloud (EC2), clusters do Amazon Elastic Kubernetes Service (EKS) e dados armazenados no Amazon Simple Storage Service (S3) para atividades maliciosas sem o uso de software ou agentes de segurança.

  • Se for detectada atividade maliciosa em potencial, como comportamento anômalo, exfiltração de credenciais ou comunicação de infraestrutura de comando e controle (C2), o GuardDuty gera descobertas de segurança detalhadas que podem ser usadas para visibilidade da segurança e assistência na correção.

  • O GuardDuty pode monitorar atividades de reconhecimento por um invasor, como atividade incomum de API, verificação de porta intra-VPC, padrões incomuns de solicitações de login com falha ou sondagem de porta desbloqueada de um IP ruim conhecido.


EC2

EC2 Nitro - nova tecnologia de virtualização adotada pela AWS,

  • Melhora o uso da rede. Melhora o IOPS (Input/output operations per second) dos armazenamento EBS.

EC2 Graviton

image-20230213071117156 image-20230213071117156

  • Entregam o melhor performance em relação ao custo. Sendo 46 % mais em contas em comparação com a 5 geração.

  • Placement Groups - Grupos de Posicionamento

    • Permite decide a estratégia posicionamento das instâncias EC2. ou seja onde vai ficar as instâncias de vai ser:

      • Cluster - Todas ais instâncias ficam juntas, tem baixa latência, mas ficam numa única AZ. (alta performance, mas tem um alto risco).

        • Boa escolha quando se tem instâncias com rede otimizada (enhanced Networking).
        • Usados para jobs de processamento rápido de BigData e aplicação que precisam de baixa latência de rede
      • Spread - (espalhadas) As instâncias ficar espalhadas em servidores em diferentes AZ, com uma máximo de 7 instâncias por grupo por AZ. Usados em aplicações criticas.

        • Baixo risco que indisponibilidade.
      • Partition - Similar ao Spread, mas as instâncias ficam espalhadas em diferentes partições (conjunto de Racks) numa AZ. Pode escalar para centenas de instâncias por grupo, usadas com o Hadoop, Kafka, Cassandra.

        • Pode ter ate 7 partição por AZ, e centenas de instâncias.
        • As partições não compartilham o mesmo hack.
        • Se a partição falhar todas as maquinas são perdidas.
        • As instâncias podem compartilhar dados da partição vias EC2 Metadata.
  • Metricas

    image-20230213202651772 image-20230213202651772

    Tipos de instâncias

    Tipos de instancias Tipos de instancias

    image-20230213065140415 image-20230213065140415

    Alta performance computacional HPC

    • Serviços que ajudam ter alta performance na AWS:

      • Transferência de dados

        • AWS Direct Conect - Permite mover GBs de dados para a cloud.
        • SnowBall e SnowMobile - Pemite mover PB de dados para a cloud.
        • AWS DataSync - Permite mover grandes quantidade de dados do on-primeses para cloud .(usando S3, EFx, Fxs for Windows)
      • Computação

        • Instâncias EC2
          • Com CPU otimizada ou GPU otimizada.
          • spot instances / Spot Fleets para economia + auto scaling.
        • EC2 Placentament Groups - Permite usar um conjunto de maquinas (cluster) num mesmo rack ou região o que diminui a latência..
          • EC2 Enhanced Networking SR-IOV (Rede aprimorada para EC2)
            • Interface de rede para HPC.
            • Alta banda, Alto PPS (pacotes por segundos), baixa latência.
            • Opção 1: Elastic Network Adapter (ENA) aumenta a capacidade para 100Gbps.
            • Opção 2: Intel 82599 VF para 10 GBs - Antiga não usado mais
          • Elastic Fabric Adapter (EFA)
            • Interface de rede usada para HPC no Linux com foco.
            • Melhora a ENA para Alta HPC, apenas para linux.
      • Armazenamento

        • Ligado na instância
          • EBS - Escala ate 256,000 IOP with io2 Block express.
          • Instance store - escala para milhões de IOPS, mas é perdido quando a instância desliga.
        • Na rede
          • S3 - Armazenamento de objetos.
          • EFS - Escala IOPS baseado no tamanho total, ou IOPS provisionado .
          • FSx for Lustre - FileSystem otimizado para HPC usando linux.
      • Automação e Orquestração

        • AWS Batch - para trabalhar com jobs e agendamentos.

        • AWS ParallelCluster

          • Ferramenta Open Source para deploy e gerenciamento de cluster HPC.

image-20230313193528173 image-20230313193528173

image-20230313193620770 image-20230313193620770

image-20230313193801352 image-20230313193801352


Amazon EKS

  • Custo de $0,1 por hora por cluster kubernete ($75 por mês) mais os recurso (EC2, EBS).

  • Tipos dos nodes

    • Gerenciados pela AWS
    • Gerenciado pelo cliente
    • AWS Fargate
  • Volumes

    • Usa se o CSI (Container storage interface)
    • Suporta:
      • EBS
      • EFS (quando usando Fargate)
      • FSx for Lustre
      • Fsx for NetApp ONTAP.
  • É possivel rodar o EKS no On-primeses usando o EKS AnyWhere

    • Pode se usar uma imagem da Amazon customizada do Kubernets (AMI), rodando localmente.
    • Pode se conectar o EKS do On-primeses a AWS usando EKS conector.
    • Usado quando se quer diminuirá a latência, ou por demanda regularizaria. exemplo os dados governamentais do Chile deve ficar no Chile, Roda em um datacenter conectado a AWS.

AWS Lambda

  • Tem de 128 MB ate 10 GB de memoria que pode ser usado.

  • Tem escopo regional.

  • Pague por milissegundo usado para executar o código.

  • Tempo de execução de ate 15 minutos.

  • Cobrado de 100 em 100 milissegundos de uso.

  • Faz escalonamento horizontal e pode ter ate 999 execução simultâneas.

  • Triggers

    • API Gateway

    • Kinisis

    • DynamoDB Data Streams

    • S3 events

    • EventBridge

    • SNS, SQS

    • Cloud Watch Logs

    • AWS Cognito

  • Limitações

    • Execução
      • Alocação de memoria - 128MB - 10GB.
      • CPU - Linkado a memoria ram (Não é possivel alterar)
        • 2vCPU - 1,719 MB de RAM
        • 6vCPU - 10,240 MB de RAM
      • Tempo de execução - ate 15 minutos.
      • Variáveis de ambiente - ate 4KB.
      • Espaço em disco (no container do Lambda) - 10 MB.
      • Execuções simultâneas da mesma Lambda - 1000 (Pode ser alterado com solicitação).
      • Tamanho do paylod 6MB (Sync) / 256 KB (async)
    • Deploy
      • Tamanho do pacote zippado com a função lambda - 50MB.
      • Tamanho do pacote com a função lambda - 250MB.
      • Tamanho da imagem - 10 GB
  • Lambdas@Edge

    • É possível executar Lambdas em ponto de presenças, para auxiliar itens relacionados ao CDN , Route 53 ….

      lambda@edge lambda@edge


AWS App Runner

  • Serviço gerenciado pela AWS que facilita o deploy de aplicações web ou API em escala.
  • Não necessita conhecimento de infraestrutura para usar.
  • Pode se iniciar apenas com o source code ou a imagem do container.
  • Automaticamente compila e deploya a aplicação.
  • Automaticamente escala e configura alta disponibilidade e load balancer e criptografia.
  • Tem suporte a acesso a VPC.
  • Permite uso de banco de dados, cache e mensageria.
  • Semenhante a idea do heroku.

Amazon API Gateway

Limitações

  • Timeout de 29 segundos.
  • Tamanho do payload de no máximo 10 MB.

LOGs

  • Possivel enviar os logs para o Cloud Watch com os niveis ERRO e INFO

  • Pode logar o request e response completos.

  • Pode enviar os logs de acessos de forma customizada

  • Pode ser enviados diretamente para o Kinesis Data Firehose como alternativa.

  • Metricas

    • São envidas com base nos stages, há possibilidade de envio de métricas detalhadas.
  • X-Ray

    • Pode se habilitar o tracing para recuperar informações sobre as requisições.
    • Pode se cria um desenho da requisição ate o destinario.

AppSync

  • Gerenciado pela AWS, para GraphQL.
  • Solução flexível e escalável para criar APIs GraphQL seguras e em tempo real, que podem ser usadas para uma ampla variedade de casos de uso em aplicativos móveis e da web.
  • Um caso de uso comum do AWS AppSync é a criação de aplicativos móveis e da web que exigem uma experiência de usuário rica e em tempo real, como aplicativos de bate-papo, jogos multiplayer e aplicativos de colaboração em tempo real. O AWS AppSync permite que os desenvolvedores criem APIs GraphQL em tempo real, que fornecem atualizações instantâneas aos clientes quando os dados são atualizados no back-end.
  • Outro caso de uso do AWS AppSync é a criação de aplicativos móveis e da web que precisam integrar dados de várias fontes, como bancos de dados, serviços da web e outras APIs. O AWS AppSync simplifica a integração de dados, permitindo que os desenvolvedores criem um único ponto de acesso para vários back-ends e serviços, além de oferecer recursos avançados de resolução de conflitos e versionamento.
  • Além disso, o AWS AppSync também é útil para aplicativos que exigem segurança e controle granular de acesso aos dados. Com o AppSync, os desenvolvedores podem definir regras de autorização e autenticação para controlar o acesso aos dados, bem como criar um histórico de auditoria de todas as ações do usuário no back-end.

Amazon Route 53

  • Pode se setar TTL nos Records para controlar o tempo de vida. Ele é obrigatório para todos os tipos de records exceto para o tipo Alias

  • Common Records

  • Routing police

    São políticas de redirecionamento que é possível configurar no route 53.

    • Simple routing police (política de roteamento simples).
    • Weighted routing police (política de roteamento com pesos).
    • Latency routing police (política de roteamento baseado na latência)
    • Failover routing police (política de roteamento de falhas)
    • Geolocation routing police (política baseada em Geo localização)
    • Geoproximity routing police (política de roteamento por proximidade)
      • Redireciona o usuário para o recurso mais próximo da localização do mesmo.
      • Diferencia se do anterior, pois ele é usado para países enquanto esse seria para locais dentro do pais.
      • Usa o Bias para manipular a proximidade, com ele é possível dizer o quando quer redirecionar do traffico. Como se fosse uma preferência maior.
      • image-20230216203132009 image-20230216203132009
      • Traffic Flow
        • Simplifica a criação de record grandes e com configurações complexas.
        • Tem um editor visual para se montar árvores de roteamento.
        • Suporta versionamento.
    • Multi Value routing police (Política de rateamento de multi valores)
  • Health check

    Pode se configurar health checks para monitora a disponibilidade e a saúde da aplicação.

    • São pagos $ 0.50 para endpoints AWS - $ 0.70 para outros endpoints.
    • Há custos adicionais de outras features (String matching, https, latency measurament).
    • Disponibiliza 15 diferentes hosts para checagem (em varias regiões)
    • E possível passar dados customizados (text) no retorno do health check nos primeiros 5120 bytes e com isso configurar para passar ou falhar na verificação.
    • São integrados com CouldWatch Metrics
    • Para verificar a saúde de uma maquina numa subnet privado, pode se criar métricas que são envidas para o cloud Watch e dali é possível checa-las com o heath check.
  • Hosted Zones

    • É um container de registros para definir como rotear o tráfego para um domínio e seus subdomínios. Podem ser
      • Publicos - contém records que especificam rotas para a internet.
        • Pode se usar o DNSSEC para proteger contra MITM.
      • Privados - contém records que especificam rotas internas vista apenas nas VPCs.
        • Precisa que o enableDnsHostnames e enableDnsSupport estejam habilitados na VPC.

    image-20230315180350694 image-20230315180350694

    • Hybrid DNS e Resolvers

      • Hybrid DNS

        • Permite que se use Outros DNS em conjunto com o Route 53, O Route 53 fica como root DNS resolver e ele pode delegar a resolução de nomes para os outros Servidores de DNS.
      • Resolvers

        • O Resolver endpoint é um ponto de extremidade em sua VPC, que permite que os recursos em sua VPC resolvam nomes de domínio em outros VPCs.

        • Podem ser associados a uma ou mais VPC na mesma região.

        • Cada endpoint suporta ate 10000 queries por segundos por IP.

        • São divididos em :

          • Inbound endpoint

            • Permite que a rede envie DNS Queries para o Route 53 Resolver.
            • Permite resolver DNS da AWS e de Recursos na Zona DNS Privada configurada na VPC.

            image-20230217055352111 image-20230217055352111

          • Outbound endpoint

            • Permite que o Route 53 envie DNS queries para os DNS resolver que não seja do Route 53. (para o servidor de DNS no On-premises).

            image-20230315181217037 image-20230315181217037


AWS Global Accelerator

Serviço que melhora a disponibilidade de um serviço usando os ponto de presença, melhora a disponibilidade em cerca de 60%.

  • 2 Anycast IP são criado para redirecionar o trafico para os pontos de presença.
  • Funciona com Elastic IP, ALB, NLB, EC2 Instances
  • Suporta preservação do IP do cliente, exceto para NLBs e Elastic IPs

image-20230217055915316 image-20230217055915316

  • Diferença entre CloudFront e Global Accelerator
    • Ambos usam a rede Global da AWS e pontos de presença. e tem integração com AWS Shield para proteção contra DDOS.
    • CloudFront
      • Usado para conteúdo estático que precisa ser cacheado.
      • Guarda o conteúdo estático no ponto de presença.
    • Global Accelerator
      • Melhora o desempenho de aplicações que usam TCP e UDP. Tipo chats, games, VoiP ….
      • Mais adequado para aplicativos em tempo real e serviços que exigem comunicação bidirecional, como jogos online e aplicativos de negócios.
      • Faz proxy dos pacote entre os pontos de presenças em uma ou mais regiões.
      • Bom para aplicações que usam IP estático.

AWS Outposts

  • Permite implementar o que se chama de cloud hibrida.
  • Ou seja, permite executar a AWS nos servidores on-premises.
  • Executa
    • EC2, EBS, S3, EKS, ECS, RDS, EMR
  • Tem um tipo de classe S3 chamada S3 Outposts.

AWS WaveLength

  • Oferece baixa latência e alto desempenho para aplicativos móveis e de Internet das coisas (IoT) por meio da integração com as redes de 5G das operadoras de telecomunicações.
  • Para entender imagine que a AWS disponibilize nos datacenter da VIVO (ISP) racks outposts que conseguem executar AWS próximo ao cliente para requisições envolvendo 5G.
  • Serviços que podem ser implantados:
    • EC3, EBS, VPC …
  • Uso:
    • Coneção de veiculos inteligentes, Lives interativas, AR/VR, games e tempo real.

Storage

image-20230311114844322 image-20230311114844322

EBS

  • Para se encriptar um volume já criado sem encriptação e necessário criar um snapshot e depois criar uma copia desse snapshot e marcar a opção de encriptação e depois criar um volume a partir desse novo snapshot e conecta-lo na instância.
  • Tipos

tipos-ebs tipos-ebs

  • Oss tipos io1 / io2 permitem conectar o mesmo em mais de uma instância, isso é usado em aplicação de alta disponibilidade, ex Cassandra .

  • Data Lifecycle Manager

    • Automatiza a criação, retenção e deleção de snapshot EBS e AMIs.

    • Qual a diferença dele para o AWS Backup.

      • O AWS Backup permite gerenciar o Backups de todos os serviços incluindo o EBS num unico lugar.
      • Enquanto o DLM só permite gerenciar o Backup de EBS e AMIs.

EFS - Elastic file system

  • Usa um security group para se linkar as instâncias.

  • Usados apenas com Linux (AMI), não compatível com Windows.

  • Pode se usar o AWS Access Point para restringir o acesso aos usuários.

  • Suporta milhares de clientes, e pode ter ate 10gb+ de thoughput .

  • O tipo de performance pode ser definido na criação podendo ser:

    • General purpose (default) - (web server - cms, etc…)
    • Max I/O - Big data, processamento de vídeo.
  • Throughput mode

    • Bursting - Inicia com 1 TB = 50MiB/s e pode ter um bust de ate 100MiB/s;
    • Provisioned - Possível definir um nível.
    • **Elastic ** - Escala de acordo com carga de trabalho.
  • Storages Ties (lifecycle management feature - Move os arquivos após 30 dias)

    • Standard - para arquivos acessados frequentemente
    • Infrequent access (EFS-IA) - Arquivos que não são acessado com muita frequência, tem preço menor, pórem e cobrado por recuperação de arquivo.

FSx

  • Permite configurar sistema de arquivos de terceiros como:
    • FSx For Lustre
      • Lustre (linux + cluster) é um sistema de arquivo distribuído e paralelo para computação em escala. Usado em marchine learning e Computação de alta performace (HPC), sistema de arquivos distribuídos.
      • Permite ler e escrever no S3 através dele.
        • Possivel usar uma funcionalidade de carregamento preguiço, que só ira carregar os dados do S3, quando for solicitados evitando gasto carregando milhares de dados.
      • Tipos de sistemas de arquivos
        • Scratch File System
          • Usado para armazenamento temporario, e não há replicação.
          • Tem uma velocidade muita alta (6x faster, 200MBps)
          • Usado para ligar se ao S3
          • image-20230219091942131 image-20230219091942131
        • Persistente File System
          • Usado para armazenamento de longo periodos.
          • image-20230219092102564 image-20230219092102564
    • Fsx for Windows File System.
      • Tem suporte para os protocolos SMB e NTFS.
      • Tem suporte para o Active Directory da Microsoft.
      • Suporta o sistema de arquivos distribuido do Windows DFS.
      • Permite agrupar Filesystem utilizando o DFS Namespaces.
    • FSx NetApp ONTAP
      • Permite criar sistema de arquivo do tipo NetApp ONTAP. (sistema compativel com linux, mac e linux)
      • Compativel com os protocolos NFS, SMB,ISCSI
    • FSx for OpenZFS
      • Compativel com NFS (V3, v4, v4.1, v4.2)
      • Usado para rodar sistema de arquivo ZFS na AWS.
  • Na criação se diz se vai ser single AZ ou Multi AZ.
    • Não é possivel converter de um para outro
    • Caso precise migrar de single para multi AZ, é necessário criar um Multi AZ e usar um AWS DataSync.
    • Tambem é possivel realizar um backup da Single e restorar no Multi, seria mais rapido que usando o AWS DataSync.
  • Não é possível reduzir o tamanho de um file system, apenas aumentar, caso precisa o recomendado e criar um novo e usar o AWS DataSync para copiar os dados.

S3 - Storage Lens

  • Usado para analisar e entender e otimizar o uso do S3 na orgranização.
  • Mostra no dashboard dados de multipas regiões e multipas contas.

image-20230219083841776 image-20230219083841776

  • Permite configurar metrica customizadas

AWS DataSync

dataSync dataSync

  • Usado para mover grades quantidade de dados do on-primises para AWS. e de AWS para AWS.
  • Permite sincronizar dados com S3 , FSx, EFS. A cada hora / dia/ semana (ou seja agendado.)
  • Usa os protocores SMS , NFS e outros para mover os dados do NAS (network attached storage) para AWS.
  • Preserva os permissões e metadata dos arquivos migrados.
  • O AWS DataSync pode ser configurado para se conectar a várias origens de dados diferentes, incluindo servidores locais, sistemas de arquivos do EFS, buckets do S3, sistemas de arquivos do Network File System (NFS) e servidores do Amazon FSx for Windows File Server. Ele também pode ser usado para migrar dados entre diferentes regiões da AWS ou entre diferentes contas da AWS.

Storage Services Price Comparison

image-20230219095338480 image-20230219095338480


Amazon CloudFront

  • Possível bloquear um pais de acessar via Geo Restriction.

    • Para isso o CLoudFront adiciona o cabeçario cloudFront-Viewer-Country.
  • CloudFront Signed URL - são comummente usados para distribuir conteúdo privado por meio da geração dinâmica de CloudFront Signed URL (uma para cada conteúdo).

  • CloudFront Signed cookies - são comummente usados para distribuir vários conteúdo privados com uma única URL.

  • Diferença entre CloudFront Signed URL e S3 Signed URL

image-20230311194611289 image-20230311194611289

Pode se usar o Origin Access Identity (OAI) para que apenas CDN acesse o bucket e não redirecione para o bucket. Nesse caso o bucket pode continuar privado e acessando pelo CDN vai aparecer os arquivos, pois eles são acessado por um “usuário cdn” liberado.

  • A evolução do OAI e o OAC (Origins Access control)

Field level Encryption

image-20230311194847949 image-20230311194847949

Lambdas@Edge e CloudFront Function

image-20230311195829806 image-20230311195829806

image-20230311200012319 image-20230311200012319


Handling Extreme Rates

image-20230311200431967 image-20230311200431967


DynamoDB

  • Tamanho máximo de objeto (registro aceito 400 KB), para objetos maiores se armazena no S3 e guarda a referencia no DynamoDB.

  • Permite usar o DAX (DynamoDB Accelarator) para melhorar o IO para milissegundos.

    • Cachea registo muito acessado, por 5 minutos (TTL)
  • Permite criar tabela global, que replica os dados em diferentes regiões (Brasil, EUA, Europa por exemplo) para isso é necessário ativar o DynamoDB Streams.

  • Suporta ACID (Transações sobre múltiplas tabelas)

  • Devo usar DAX ou ElasticCache

    • Se a cliente acessar a tabela diretamente usa se DAX, Cache de objetos individuais (exemplo buscar um resultado pela PK).
    • Mas se a consulta for resultado de uma computação então deve se usar o ElasticCache (exemplo resultado de uma media dos registo).

RDS

RDS para Lamba

  • Caso use Lambda, como é serveless, pode se ter um problema de TooManyConnections.
  • Para evitar isso usa-se o RDS Proxy, que fica responsável por gerenciar o pool de conexões, liberando sempre que se encerra uma lambda.

image-20230311203551564 image-20230311203551564

image-20230311203653384 image-20230311203653384


Aurora

  • Faz replicação (6 copias) em 3 AZ.
  • image-20230311204121199 image-20230311204121199
  • Pode se adicionar ate 15 replica de leituras, para melhorar o uso.
  • Tem a opção serveless, não se preocupando com gerenciamento.
  • Cresce de 10GB em 10GB podendo chegar ate 128TB de dados.
Global aurora
  • Cross region read replica - útil para desastre recover .
  • Global database
    • Se tem 1 região primaria (read/write) e 5 outras regiões segundarias, com replicação de menor que 1 segundo.
    • 16 replicas de leitura por região segundaria.
    • Caso de desastre, promove-se outra região como primaria em menos de 1 minuto.

Amazon SQS

  • Retém as mensagem de 1 a 14 dias.
  • Mensagem de ate 254Kb de tamanho, é possível usar o S3 para guardar mensagem maiores.
  • Possível usar métrica da SQS para dispara o Auto Scaling Group via CloudWatch metrics (approximateNumerofMensages).
  • Message visibility timeout
    • Quando uma mensagem é recuperado por um consumidor, ela fica invisível para os outros, esse tempo que invisibilidade é definido por esse campo.
  • Delay Queues - Permite definir uma atraso na disponibilização da mensagem para leitura.

image-20230312084806136 image-20230312084806136


Kinesis

image-20230312090123655 image-20230312090123655

image-20230312090651492 image-20230312090651492

  • Consumers

    • Kinesis client library (KCL, usado para leitura em paralelo, checkpoint e leitura coordenada)
    • AWS SDK. Lambda
  • Producer

    • Lambda, Kinesis data firehose, kinesis data analytics.
    • AWS SDK , Kinesis Producer Libary (KPL - permite usar batch, compressão, retry)
    • Kinesis Agent - Usado para monitorar logs, e enviá-los ao Kinesis Data Streams ou Kinesis Firehose.

Kinesis Data Firehose

  • Carrega dados para armazenamentos no AWS (Como S3, ReadShift, OpenSearch e Splunk).

image-20230315191951846 image-20230315191951846

image-20230312090847732 image-20230312090847732

image-20230312091116784 image-20230312091116784

image-20230312091300171 image-20230312091300171


AWS Batch

Caso precise executar com alta performance (HPA) pode se usar o modo Multi Node

  • Disponibiliza varias instâncias para execução dos Jobs.
  • Não é possível usar instâncias spot.
  • Trabalha bem com Placement Group.

image-20230312091604835 image-20230312091604835

image-20230312091635621 image-20230312091635621


AWS Glue

  • Serviço gerenciado de ETL (extract, tranform, and Load).

  • Serviço Serverless, possui 3 serviços:

    • AWS Crawler - Os rastreadores (Crawler) e classificadores examinam dados de fontes diferentes, classificam dados, detectam informações de esquema e armazenam meta-dados automaticamente no AWS Glue Data Catalog.
    • **AWS ETL ** - O núcleo do programa ETL fornece geração de código Python ou Scala para limpeza, enriquecimento, remoção de duplicatas e outras tarefas complexas de transformação de dados.
    • AWS Glue Data Catalog - fornece armazenamento centralizado e uniforme de meta-dados para rastreamento, consulta e transformação de dados usando meta-dados salvos.

    Redshift

    • Banco para Data warehouse.
    • Envia-se os dados em escala (de hora em hora) para data warehouse.
    • 10x melhor que outros OLAP, e escala para PBs (Penta bytes) de dados.
    • Redshit Workload Management (WLM)
      • Permite criar múltiplas filas para tratar as execuções de carga de trabalho (fila super usuário, fila de trabalho curtos, fila de trabalhos longos).
      • Isso garante que um trabalho rápido não fique preso a um trabalho longo.
    • Pode escalar de 1 nó ate 128 nós com cada nó tendo ate 16 TB de espaço.
    • Tem uma funcionado chamada Sprectrum que permite executar a queries direto no S3, sem precisar carregar os dados para o RedShift.

Athena

image-20230312093513420 image-20230312093513420


image-20230312094053137 image-20230312094053137


AWS CloudWatch

  • Pode enviar os logs para:
    • Kinesis Data Streams
    • Kinesis firehose
    • Lambda
    • OpenSearch
    • S3 (export)
      • Só pode criptografar os logs com AES-256 (SSE-S3), não pode SS3-KMS.
      • Pode levar ate 12 para exportar.
      • Não é automático, precisa configurar ou usar a API call CreatExportTask.

image-20230312100317531 image-20230312100317531

Dashboards

  • Com as métricas é possível criar Dashboards, para facilitar a visualização.
  • Os Dashboards são globais.
  • Neles é possível incluir gráficos de diferentes contas AWS e regiões.
  • É possível compartilhar um Dashboard com um terceiro via cognito.
  • Ate 3 Dashboards são de graça, e demais se paga $3 dólares por mês por Dashboard.

Code deploy

  • Permite deployar aplicações em EC2, Lambdas, ECS
  • Pode deployar segundo as estratégias
    • in-place -> mata o antigo e coloca o novo (somente disponível para EC2).
    • blue / green -> criar um novo recurso e roteia os dados em parte.
      • Este por usa vez usa o Traffic Shifted podendo ser:
        • Canary - divide o trafico entre as duas versões em percentagem ate chegar os 100% da novar versão.
        • Linear - divide o trafico entre as duas versões igualmente.
        • All-at-once - envia todo o trafico um para uma ou para outra.

AWS Trusted Advisor

  • Fornece orientação que ajuda a reduzir custos e aumentar o desempenho e melhorar a segurança.
  • Analisa e gera recomendações sobre:
    • Custo.
    • Performance.
    • Segurança.
    • Tolerança a falha.
    • Limites de serviços.
  • Bom saber
    • Pode checar se o bucket S3 é publico. Mas não checa se os objetos dentro são públicos.
    • Pode checar os limites de serviços, porem para aumenta-los precisa abrir solicitação no AWS Suport center ou usar AWS Service Quotas.

AWS Budget

  • Pode definir um orçamento que o alerte quando você exceder (ou estiver previsto para exceder) seu custo orçado ou valor de uso.
  • Pode criar até 20.000 orçamentos. (soft Limit)
  • O 2 são de graça, mas os demais se paga 0.02 $ por dia por Budget.
  • Há 4 Tipos de Budget que podem ser criados:
    • Usage
    • Cost
    • Reservation
    • Savings Plan

Cost Explorer

  • Serviço usado para ver, entender e gerenciar os gastos (com varias granularidade mês, ano , dia).

  • Quando devo usar o AWS Compute Optimizer e quando devo usar o AWS Cost Explorer?

    • AWS Cost Explorer se quiser identificar instâncias do EC2 subutilizadas e quiser entender o impacto potencial em sua fatura.

    • AWS Compute Optimizer se quiser ver as recomendações de tipo de instância além do downsizing. Faz o uso de aprendizado de máquina para identificar tipos de carga de trabalho e escolher automaticamente a metodologia de recomendação específica de carga de trabalho para eles.


Cloud Migrations - The 6R

image-20230223203920041 image-20230223203920041

  • 6 estratégia para migra para a cloud.
    • Rehosting - “lift-and-shift.” - re-hospedagem
      • Apenas mova do on-premises para AWS (a aplicação inteiramente).
    • Replatforming  - “lift-tinker-and-shift.” - Nova plataforma
      • Migra por exemplo de um banco on-premises para o RDS.
      • Ou seja migra a plataforma, estava Weblogic muda para Tomcat.
      • Não muda o core da aplicação.
    • Repurchasing — “drop and shop” - recompra
      • Muda para um nova solução, ex muda de CRM para Salesforce.
    • Refactoring / Re-architecting
      • Reescreve a aplicação em uma nova arquitetura.
      • Mas demorado, e mais caro, porem pode se tirar o máximo da cloud.
      • Facilita novas features.
    • Retire   - Livrar-se
      • Livra se do que não se usa, ou que usa muito pouco.
    • Retain -reter
      • Deixa no on-premises e se conecta aos AWS.
      • Se mantém, pois é muito complexo a migração o não vale o esforço.

AWS Storage Gateway

  • S3 File Gateway - Usado para armazenar arquivos.
  • FSx File Gateway - Bom para cache de dados de arquivos muitos acessados.
  • Volumes Gateway (EBS) - Usados para armazenar dados de backups, ou volumes.
  • Fitas (TAPE) Gateway (S3 Glacier) - Usado onde há processos semelhantes fitas.

Uso:

  • Recuperação de desastre.
  • Backup e Restauração.
  • Armazenamento.
  • Redução de latência e cache no ambiente on-premises.

Arquitetura com Storage Gateway

  • Usado para migrar dados do on-premises para AWS, ou para conectar aplicação migrada no modo Rehosting.

image-20230223210344227 image-20230223210344227

  • Usado como replica de leitura entre ambientes de on-premises

image-20230223210608224 image-20230223210608224

  • Para processo de backup, para economia

image-20230223210652331 image-20230223210652331


Disaster Recovery in AWS

Termos importante

  • RPO - Recover point objective - está relacionado com a frequência de backup.
  • RTO - Recover time objective - está relacionado a tempo de recuperação de desastre.

Estratégias de DR

dr-estrategias dr-estrategias

Dicas

dicas dicas


AWS FIS - Fault Injection Simulator

image-20230224062326078 image-20230224062326078

  • Permite Injetar falhas nas cargas de trabalho na AWS a fim de validar a capacidade de resiliência das soluções.
  • Suportas os serviços: EC2, RDs, EKS, ECS ….

VM Migration Service

image-20230312135218322 image-20230312135218322


DRS Elastic Disaster Recover


VPC Endpoints

  • Tipos:

    • Interface - cria uma interface de rede (ENI) que fornece um IP para os serviços devem ser configurado o acesso no Security Group.

      • Quando criado cria se um URL que será atachada ao ENI.
      • Precisa habilidar as configurações na VPC “Enable DNS Hostnames” e “Enable DNS Support”, pois Serviço de DNS ira resolver o Private Endpoint para rede privada.
      • Para todos exceto o DynamoDB. e S3
      • As interfaces podem ser compartilhadas via DX e VPN.
      • Para usar endpoints da interface, você precisa estar atento às propriedades e limitações atuais:
        • Para cada endpoint de interface, você pode escolher somente uma sub-rede por AZ.
        • Quando o provedor de serviços e o consumidor tiverem contas diferentes e usarem várias AZ e o consumidor visualizar as informações do serviço do VPC endpoint, a resposta incluirá apenas as AZ comuns.
        • Por padrão, cada endpoint de interface é compatível com uma largura de banda de até 10 Gbps por AZ e pode ser automaticamente dimensionada para até 40 Gbps.
        • Um endpoint de interface é compatível somente com tráfego TCP.
        • Ao criar um endpoint, você pode anexar uma política de endpoint a ele para controlar o acesso ao serviço ao qual está se conectando.
        • Endpoints são compatíveis somente na mesma região. Não é possível criar um endpoint entre uma VPC e um serviço em uma região diferente.
    • Gateway - usa um Gateway para provisionar um destino e deve ser configurado na tabela de rotas (Route Table)

      • Somente para S3 e Dynamo DB.
      • Não tem custo. Tem maior flexibilidade de acessos.
      • Não pode ser expandido para fora da VPC. Ous seja não pode ser compartilhado usando (VPN, DX, TGW, Peering) só funciona dentro da VPC.
      • Se deve criar um único por VPC. O DNS deve esta habilitado e com isso pode se usar hostname para o S3 ou DynamoDB
      • Criado em nivel de VPC, por isso que é necessário definir a entrada de acesso no rout table
      • Para usar endpoints do gateway, você precisa estar atento às limitações atuais:
        • Você não pode usar um ID de lista de prefixos da AWS em uma regra de saída de uma ACL da rede para permitir ou negar o tráfego de saída. Se as regras da ACL da rede restringirem o tráfego, será preciso especificar o bloco CIDR (intervalo de endereço IP) para o serviço. Mas você pode usar um ID da lista de prefixos da AWS em uma regra do grupo de segurança de saída.
        • Endpoints são compatíveis somente na mesma região. Não é possível criar um endpoint entre uma VPC e um serviço em uma região diferente.
        • Endpoints são compatíveis somente com tráfego de IPv4.
        • Não é possível transferir um endpoint de uma VPC para outra, nem de um serviço para outro.
        • Você tem uma cota para o número de endpoints criados por você por VPC. 20 podendo ir ate 255.

      image-20230227061041750 image-20230227061041750

  • Caso use VPC Endpoints deve se atentar a usar as configurações de DNS, Outra coisa que pode gerar confusão e que a partir da hora que se usa o VPC Endpoints e necessário informar as região ao usar comandos do CLI, pois o VPC Endpoints tem escopo regional.

  • VPC Endpoint Police

    • Permite controlar os acesso a serviços AWS.
    • Não sobrescreve política do S3 ou só IAM, apenas adiciona a endpoint a definição de quem pode acessa-lo.
    • Caso queria restringir o acesso de algum recurso a apenas ao VPC Endpoint é necessário ir no recurso e definir uma política de acesso que indique que o acesso a aquele recurso deve ter origem do VPC Endpoint com a condição “aws:sourceVpce” onde se passa os endpoints que podem acessar o recurso.

  • Usado para expor serviços AWS na VPCs (na VPC próprias ou cross VPC)
  • Sem precisar ligar as VPC com VPC Peering.

AWS PrivateLink - VPC Endpoint Services AWS PrivateLink - VPC Endpoint Services

  • Permite compartilhar um serviço de uma VPC com outra VPC sem precisar que aquele serviço publico, ou sem precisar ligar as VPC com VPC Peering.
  • Forma mais segura e escalável de se expor mais de 1000 serviços AWS.
  • Sem a necessidade de Peering, DX e VPN, NAT ou RouteTables.
  • Faz uso do VPC endpoints, por isso muitas vezes pode ser considerado o mesmo serviço.
  • Usando com S3 e Direct Connect

image-20230227065519211 image-20230227065519211

  • Usando com VPC Peering

image-20230227065551394 image-20230227065551394


Virtual Interface VIF

  • Public VIF - Permite conectar serviços publicos da AWS (S3, EC2).
  • Private VIF - Permite conectar aos recursos na sua VPC (EC2, ALB).
  • Transit Virtual Interface - Conecta aos recursos usando um TGW (Transit Gateway).
  • Endpoints privados não precisam de interfaces (Private VIF) para conexão, pois podem ser acessados diretamente.

Egress Only Internet Gateway

  • Um gateway da Internet somente de saída é um componente da VPC horizontalmente escalado, redundante e altamente disponível que permite a comunicação de saída pela IPv6 das instâncias na VPC para a Internet e impede a Internet de iniciar uma conexão IPv6 com suas instâncias.

O AWS Transit Gateway

  • Casos de Uso

    • Para implementar a topologia Hub e Spoke (star).
    • Para conectar vários Amazon VPCs entre regiões (usando peering do Transit Gateway).
    • Forneça aplicativos em todo o mundo - o Transit Gateway ajuda a criar aplicativos que abrangem milhares de Amazon VPCs. Tudo é mais fácil de implantar, gerenciar e solucionar problemas.
  • Limitações

    • Você pode se conectar a no máximo três Transit Gateways em uma única Conexão Direct Connect para conectividade híbrida.
    • O Transit Gateway não oferece suporte ao roteamento entre VPCs com CIDRs sobrepostos.
  • Inter e Intra Region Peering

    • Dentro de uma região é possivel ter dois TGW ( Transit Gateway) com finalidades diferentes e conecta-los usando intra-Refion Peering Mesh.
    • Mas caso queira conectar a outra região com um estrutura semelhante seria necessário criar um novo TGW e realizar o inter-Region Peeering Mesh.

    image-20230227055738521 image-20230227055738521


Custo de rede

net-cost net-cost

image-20210908210015556 image-20210908210015556

image-20210908210158231 image-20210908210158231

image-20210908210357597 image-20210908210357597


CloudHub

  • Permite conectar mais de 10 Customer Gateway a cada Virtual Private Gateway.

Machine Learning

image-20230303060442789 image-20230303060442789


Outros Serviços

  • CodeCommit: armazene o código em repositórios controlados por versão. O código pode existir em múltiplos branches (ramificações).

  • CodeBuild: construa e teste o código sob demanda em suas pipelines de CICD.

  • CodeDeploy: faça o deploy do código em EC2, ASG, Lambda ou ECS.

  • CodePipeline: orquestre pipelines de CICD. Se usar o CodeCommit como fonte, ele se conectará a apenas um branch.

  • CloudSearch: solução de busca gerenciada para realizar pesquisas de texto completo, auto completar em suas aplicações.

  • Alexa for Business: use a Alexa para ajudar os funcionários a serem mais produtivos em salas de reunião e suas mesas.

  • Lex: Reconhecimento automático de fala (ASR) para converter fala em texto. Útil para construir chatbots.

  • Connect: receba chamadas, crie fluxos de contato, centro de contato virtual baseado em nuvem.

  • Rekognition: encontre objetos, pessoas, textos, cenas em imagens e vídeos usando Machine Learning.

  • Kinesis Video Stream: um fluxo por dispositivo de vídeo, análise usando instâncias do EC2 ou Rekognition.

  • WorkSpaces: estações de trabalho Windows sob demanda. WAM é usado para gerenciar aplicativos.

  • AppStream 2.0: transmita aplicativos de desktop para navegadores da web.

  • Mechanical Turk: marketplace de crowdsourcing para realizar tarefas simples para humanos, integração com SWF.

  • Device Farm: serviço de teste de aplicativos para seus aplicativos móveis e web em dispositivos reais.


Data Exchange - é um serviço de troca de dados na nuvem que permite que os clientes encontrem, assinem e usem dados de terceiros de maneira segura e eficiente.

AWS Data Exchange :: AWS Control Tower Workshop AWS Data Exchange :: AWS Control Tower Workshop

Data Pipeline - permite criar pipelines da dados, onde se pode mover e transformar.

AWS Data Pipeline | AWS Big Data Blog AWS Data Pipeline | AWS Big Data Blog

Lake Formation - ajuda a simplificar e acelerar a criação de data lakes seguros na nuvem

Governança de Data Lake – AWS Lake Formation – Amazon Web Services Governança de Data Lake – AWS Lake Formation – Amazon Web Services

AWS AppFlow - permite a transferência segura de dados entre diferentes aplicativos de nuvem como Salesforce, Slack, Marketo e Zendesk, S3 e o Snowflake

Amazon AppFlow automates bidirectional data flows between AWS and SaaS apps  - Help Net Security Amazon AppFlow automates bidirectional data flows between AWS and SaaS apps  - Help Net Security

AWS ECS Anywhere - Permite executar ecs em maquinas do cliente.

![Conceitos básicos do Amazon ECS Anywhere – Amazon Web Services](assets/product-page-HIW-diagram_ECS-Anywhere@2x (1).3348533490091f0f0c9ae6d049092fea266b45fa.png)

AWS EKS Anywhere - permite que os usuários executem seus clusters do Amazon Elastic Kubernetes Service (EKS) em qualquer lugar - localmente, em data centers da empresa ou em outras nuvens - e gerenciem esses clusters por meio do AWS Management Console, AWS CLI ou API.

Usa se o AWS EKS Distro (versão do kubernetes da AWS) para rodar no cliente

Kubernetes on-premises: Amazon EKS Anywhere, Amazon Web Services Kubernetes on-premises: Amazon EKS Anywhere, Amazon Web Services

AWS keyspaces - antigo Amazon Managed Apache Cassandra Service - permite criar e executar aplicativos Cassandra escaláveis na nuvem.

AWS Cloud9 - IDE baseado na nuvem que permite que os desenvolvedores escrevam, executem e depurem código. permite que várias pessoas trabalhem juntas no mesmo código e vejam as alterações em tempo real.

AWS Amplify - é um conjunto de ferramentas e serviços para criar e implantar aplicativos web e móveis escaláveis e seguros.

Getting started with AWS Amplify for Android and Bitrise - Bitrise Getting started with AWS Amplify for Android and Bitrise - Bitrise

Amazon Pinpoint é um serviço de marketing por e-mail, SMS e notificação push para envolver e reter usuários em aplicativos móveis e web.

image-20230321052153550 image-20230321052153550

Questões da prova

Compute:

  • Quando usar um NLB versus um ALB, por exemplo, requisitos para lista branca de endereços IP.
  • Quais modelos de preços de computação usar para um determinado cenário.
  • Como dimensionar para desempenho - opções Amazon EC2, AWS Lambda, Amazon ECS.
  • Opções de implantação para escalonamento automático com instâncias, contêineres e sem servidor. Refatorar aplicativos para micro serviços ou arquiteturas sem servidor.

Storage:

  • Escolher a melhor arquitetura de armazenamento para requisitos específicos, casos de uso de objetos, blocos, arquivos, HPC etc.
  • Amazon S3, Amazon EFS, AWS Storage Gateway, Amazon FSx (para servidor de arquivos do Windows ou Lustre).
  • Características de desempenho de diferentes opções de armazenamento, camadas, classes e tipos de volume.

Database:

  • Quando usar bancos de dados relacionais versus não relacionais - Amazon DynamoDB, Amazon Aurora (mais do que RDS agora).
  • Como refatorar bancos de dados existentes para serviços gerenciados da AWS.
  • Usando soluções de cache para desempenho - DynamoDB DAX, Amazon ElastiCache.
  • Dimensionando o desempenho de leitura, multi-AZ, multi-região e bancos de dados multiativos.
  • Usando data warehouses (Amazon RedShift) e bancos de dados de gráficos (Amazon Neptune).

Migration and Transfer:

  • Como usar o serviço de descoberta de aplicativos para planejar migrações.
  • Migrando de servidores físicos, Microsoft Hyper-V e VMware local.
  • Usando o Migration Hub.
  • Migrando com AWS SMS, DMS, SCT e DataSync.
  • Quando você precisa converter esquemas com SCT, por exemplo, Oracle para DynamoDB.
  • Quando você precisa usar a família Snow de dispositivos versus migrações online.

Networking and Content Delivery:

  • Familiaridade sólida com Amazon VPC, incluindo blocos IP CIDR, sub-redes e tabelas de roteamento.
  • Quando usar um Gateway NAT ou instância NAT e como implantar corretamente.
  • Arquitetura de endpoint VPC e como implantar gateways e endpoints de interface.
  • Usando políticas para restringir o acesso por endpoints.
  • Melhores práticas e casos de uso para grupos de segurança e NACL.
  • Route 53 para resolução e direcionamento de tráfego.
  • Deve conhecer as opções de roteamento e casos de uso.
  • Quando usar o AWS Direct Connect e como implantar redundante (e como adicionar criptografia).
  • Arquitetura e casos de uso para AWS VPN, AWS Transfer Gateway e AWS Direct Connect gateway.
  • Opções de implantação do API Gateway e otimizações de desempenho.
  • AWS Global Accelerator e Amazon CloudFront - conheça os casos de uso e diferenças.

Developer Tools:

  • Compreenda todo o pipeline CI / CD e como cada ferramenta se encaixa - AWS CodeBuild, CodeCommit, CodeDeploy, CodePipeline.
  • Como implementar um CodePipeline com Github (webhooks) e Jenkins e outras ferramentas semelhantes.
  • Rastreamento com AWS X-Ray.
  • Compreenda as várias opções de implantação e quando usá-las, por exemplo, in-place, tudo de uma vez, canário, azul / verde.

Management and Governance:

  • AWS Organizations SCPs - saiba toda a estrutura de aplicação de SCPs e a herança (vale muitos pontos!).

  • Conheça seu CloudFormation e como usar StackSets e Change Sets.

  • AWS Auto Scaling para serviços relevantes.

  • Saiba quais métricas você pode obter com o CloudWatch e quando você precisa de métricas personalizadas.

  • Saiba o que capturar com o CloudTrail e como usar o EventBridge ou CloudWatch Alarms/Events para reagir.

  • Casos de uso do Systems Manager Parameter Store e serviços de patching.

  • Service Catalog e como compartilhar portfólios na AWS Organizations.

  • Casos de uso do OpsWorks e opções de implantação.

Machine Learning:

  • Algumas perguntas aleatórias incluem coisas como Transcribe e Rekognition - apenas saiba para que esses serviços são usados e como eles podem se encaixar em arquiteturas de solução.

Analytics:

  • Saiba como analisar dados de várias fontes, como datalakes no S3 ou Kinesis Data Streams.
  • Athena, RedShift, EMR, Elasticsearch, Kinesis, QuickSight, AWS Glue.

Security, identity and compliance:

  • Conheça bem suas políticas IAM.
  • Como habilitar o acesso entre contas com funções + ID externo.
  • AWS Directory Service.
  • Casos de uso do Secrets Manager.
  • AWS Single Sign-on e Cognito - saiba os casos de uso para esses serviços.
  • KMS, Certificate Manager, CloudHSM.
  • Implementação do AWS WAF - saiba o que você pode fazer e com quais tipos de recursos você pode usá-lo.
  • Defesa em profundidade usando WAF, grupos de segurança, NACLs e outras medidas de segurança.
  • Usando Shield e outras técnicas de mitigação de DDoS.

Front-end Web and Mobile:

  • Casos de uso para o AWS AppSync.

Application Integration:

  • Saiba quando usar cada serviço, incluindo SQS, SNS, SWF e Step Functions.
  • Casos de uso para o Amazon MQ, como migrar aplicativos existentes usando esses protocolos. Amazon EventBridge para coordenar fluxos de mensagens entre serviços.
  • Opções de dimensionamento com ASG e SQS.

Cost management:

  • Usando a AWS Organizations para faturamento centralizado.
  • Tags de alocação de custos.
  • Como relatar custos para centros de custos individuais.
  • Usando diferentes planos de economia e opções de reserva.

End-user computing:

  • WorkSpaces e AppStream - saiba o que são.

Internet of things:

  • Opções de implantação e casos de uso do IoT Core.

Advanced Architecting on AWS

link: https://bookshelf.vitalsource.com/reader/books/300-ADVARC-30-EN-SG-E/pageid/806 image-20211013092939990 image-20211013092939990 image-20211015150336791 image-20211015150336791 image-20211015152708444 image-20211015152708444 AWS SCT image-20211015154613534 image-20211015154613534


1 - Architecting Review

ec2 - nitro, usado quando se quer não virtualizar certo componentes, tipo a placa de rede, o que pode melhorar o trafico de rede


2 - Multiple Accounts

image-20211013134035269 image-20211013134035269

  • Uma que da o acesso e outra (trust police) que diz quem pode acessar essa role.
  • Multiplas contas image-20211013141254429 image-20211013141254429
    • Recomenda ter conta expecifica para auditoria, segurançã que serve apenas para armazenar e gerenciar as demais contas.
    • AWS Sevice catalog, permite criar contas pré configuradas, apravés de templates de cloud formation.
    • Usa se SCP, para aplicar regras comuns as contas de uma organização.
      • Pode ser aplicada a OU, a conta aws ou a conta root
      • Caso a politica seja aplicado a nivel de root, e ela não sera aplicado a conta de gerenciamento, a conta onde fica o cartão de credito, conta de cobrança.
  • SSO
    • Forma de acessar ambiente multi account, de forma simples e unificada.
    • Ponto e entrada unico.
    • Pode-se usar um provider identity externo, para realizar a autenticação
  • Control Tower
    • Não tem custo, o custo é apenas dos recursos usados.
    • Usar para criar contas do Zero, com boas praticas.
    • Landing zone gerenciada.
    • Usa o oraganizations e o cloudFormation e o Service catalog para criar novas contas.
    • Usa GardRails que podem ser:
      • Mandatorias, opcionais e fortimentes recomendados.

3 - Hybrid connectivityAccounts

  • VPN
    • site-to- site vpn - liga-se direto no datacenter onprimese
      • Pra configurar é disponibilido dois tunel de vpn, cada um com 1.25 mbs.
      • virtual private gataway - ponta do tunel vpn do lado da aws
      • Customer gateway - ponta do lado do cliente, pode ser dois equipamento ou software
    • client VPN - varios usuario usando vpn de forma independencia.
  • Route 53
    • Route 53 resolver, faz o encaminhamento do roteamente entre a nuvem e o onprimeses
  • Direct Conect
    • Disponivel em 10gbs e 100gbs
    • Direct Conect gateway ?
    • VIF (virtual interface publica ou private) o que é?
    • Transit VIF (virtual interface) o que é?
  • Transit Gatway
    • Permite acesso a varias VPC de forma unificada e sem necessario configurar tabelas de rotas.
    • Ver ECMP
  • Global aceleration - Pemite conectar onprimese de forma mais rapida, usando a rede da AWS.
  • Tolerança a falha vs alta disponibilidade
    • Tolerança a falha, solução para recuperar sua aplicação de falhas e que com o tempo se recuperar sozinho. (cai e recupera rapido)
    • Alta disponibilidade, solução que faz com que sua aplicação fiquem sempre ativa, e caso hava problema se reduz a latencia, o acesso fica fraço, mas não cai. (não cai, mas fica bem lento) Overlap de IPs só é permitidi com private link junto com o transit gateway.

4 - Specialized InfrastructureAccounts

image-20211013160715474 image-20211013160715474 image-20211013161337118 image-20211013161337118 image-20211013161836561 image-20211013161836561

VMware on AWS solutions

image-20211013162556867 image-20211013162556867 image-20211013162655092 image-20211013162655092

  • Gerado a partir de parceira com a VMware, onde se migra o parque vmware para nuvem aws.
  • permite a integração entre onprimese e nuvem, se gerencia os itens via console da vmware image-20211013162839262 image-20211013162839262 image-20211013163155083 image-20211013163155083

Outposts

image-20211013163536690 image-20211013163536690

  • Disponibiliza um rack que pode ser colocado dentro do datacenter do cliente.
  • Funciona como uma AZ adicional da aws, não funciona se estiver disconectado da internet
  • Bom pois tera baixa latencia. ou por causa de complice do cliente
  • Serviços: image-20211013163606326 image-20211013163606326
  • Opções de configuração image-20211013164010210 image-20211013164010210
  • Comunicação image-20211013164351770 image-20211013164351770

Local Zones

  • Permite rodar serviçes AWS mas não há uma AZ proximo da localidade.
  • Local zone é um datacenter de um parcero da AWS que tem a infrastrutura da aws.
  • Considera como alguns racks de outpost dentro de um datacenter de um parceiro, que você pode usar.

AWS Wavelength

  • Usado pra se ter baixima latencia, usado para carros autonomos, cirugias a distancias. image-20211013165428897 image-20211013165428897

5 - Connecting NetworksAccounts

VPC peering

  • permite ligar duas VPC
  • Limite de 125 por VPC.
  • Numero de recomendao de peering por vpc seria 10 na conta.
  • O peering não usa gateway.
  • Ver a diferencia de entre vgw e igw.
  • Customer gateway

Transit Gateway

image-20211014093559752 image-20211014093559752

  • Permite ligar varias vpn em apenas um ponto.
  • Tem scope regional, ou seja deve haver um por região
  • É possivel fazer peering de transit gateway.
  • Ver depois transit VPC? image-20211014094225159 image-20211014094225159
  • AWS RAM
    • Permite compartilhar recurso entre contas
  • PrivateLink
    • ver VPC endpoints (interface endpoint - aponta para uma ENI (placa de rede), gateway endpoint - usar um recurso, tipo um S3).
      • Usado apenas para recurso internos
      • Tem scope regional image-20211014101413382 image-20211014101413382 cd ~ ping 10.1.1.158 ping 10.2.2.205 ping 10.3.3.78 ping 10.4.4.125 ping 10.0.8.13 tgw-0e2ee82c8f1d39125 tgw-07b424246b676ba8b

6 - ContainersAccounts

Container hosting AWS

image-20211014132847619 image-20211014132847619

ECR

    • ecr public galery

EKR

  • EKS Distro
    • permite rodar EKS no onprimeses, com mais controle
    • image-20211014141951570 image-20211014141951570

ECS

image-20211014133223155 image-20211014133223155 image-20211014140314930 image-20211014140314930 Workshops

# Show merged kubeconfig settings
kubectl config view
# List all services in the namespace
kubectl get services
# List all pods in all namespaces
kubectl get pods --all-namespaces
# List all pods in the current namespace, with more details
kubectl get pods -o wide
# List a particular deployment
kubectl get deployment my-dep
# List all pods in the namespace
kubectl get pods
# Get a pod's YAML
kubectl get pod my-pod -o yaml
# Describe commands with verbose output
kubectl describe nodes my-node
kubectl describe pods my-pod
COMANDOS EKSCTL
# List the details about a cluster
    eksctl get cluster [--name=<name>][--region=<region>]
# Create the same kind of basic cluster, but with a different name
    eksctl create cluster --name=cluster-1 --nodes=4
# Delete a cluster
    eksctl delete cluster --name=<name> [--region=<region>]
# Create an additional nodegroup
   eksctl create nodegroup --cluster=<clusterName> [--name=<nodegroupName>]

7 - CI/CD Accounts

image-20211014155834148 image-20211014155834148


8 - High Availability and DDosAccounts

AWS WAF

image-20211015090806265 image-20211015090806265 image-20211015090937827 image-20211015090937827

  • Ferramenta de proteção de DDos.
  • Permite adicionar regras de firewall.
  • Proteção contra sql inject. AWS SHIELD Advanced
  • custo do advanced 3000 mill dolares por mês
    • Usando o advancente o WAF e o Firewal não tem custo. image-20211015091102658 image-20211015091102658 image-20211015091635181 image-20211015091635181 image-20211015091822504 image-20211015091822504 AWS Firewal manager
  • Concentrador de regras WAF e Security groups para varia contas (multi account)
  • Necessario ter estrutura do organization image-20211015094355456 image-20211015094355456

Network firewall

  • Serviço gerenciado de firewall de rede para o nivel de VPC

9 - Securing DataAccounts

  • AWS KMS
    • envelopamento (data key e master key)
    • usa se a data key pra criptografar dados tipo arquivos no S#
    • Usa se a master key para criptografar a data key
    • Ver criptografia S3
      • SSE-S3 - Usa chave do S3 gerenciada pela aws.
      • image-20211015103426848 image-20211015103426848
      • SSE-KMS - Usa chave do S3 gerenciado pelo usuário (chave criado pelo usuario)
      • image-20211015103859080 image-20211015103859080
      • SSE-C - Usa uma chava criado pelo usuario e subida pelo usuario na aws. (aquela chave gerada fora da aws) image-20211015103642614 image-20211015103642614
  • AWS CLOUDHSM
    • Hardware disponibilizavel para gerar chaves de criptografia.
    • Trabalha com FIPS 140-2 level 3.
    • Usa o KMS para armazenar chaves se usado com o CloudHSM, o que ajuda muito em algumas soluções. image-20211015102755436 image-20211015102755436
  • AWS Secrets manager
    • Serve para guarda segredos, usados para guarda acesso de banco de dados.
    • Semelhante ao Parameter store.
      • O Parameter store tem scope regional, não tem vario custo.
      • O Secrets manager tem scopo multi account e tem custo. image-20211015104705706 image-20211015104705706
    • Documentação

10 - Large-Scale Data StoresAccounts

S3 Data management

  • S3 tem
    • 4 noves de disponibilidade -> que por ano pode gerar uma indisponibiliade de 52.6 minutos (isso é seria no maximo).
    • 11 noves de durabilidade. image-20211015112244613 image-20211015112244613

Data lakes

image-20211015115507396 image-20211015115507396

AWS Lake FOrmation

image-20211015120905323 image-20211015120905323 AWS Cloud9


11 - Migrating WorkloadsAccounts

image-20211015144301428 image-20211015144301428 image-20211015145125798 image-20211015145125798


12 - Optimizing CostsAccounts

image-20211015160317310 image-20211015160317310 image-20211015161022544 image-20211015161022544 image-20211015164300737 image-20211015164300737


13 - Architecting for the EDGEAccounts

Develop Associate



Dominio% do exame
Domínio 1: Desenvolvimento com os serviços da AWS32%
Domínio 2: Segurança26%
Domínio 3: Implantação24%
Domínio 4: Solução de problemas e otimização18%

Recursos e produtos da AWS no escopo

Análise:

  • Amazon Athena
  • Amazon OpenSearch Service

Integração de aplicativos:

  • AWS AppSync
  • Amazon EventBridge (Amazon CloudWatch Events)
  • Amazon SNS
  • Amazon SQS
  • Amazon Kinesis
  • AWS Step Functions
  • AWS MSK

Computação:

  • Amazon EC2
  • AWS Elastic Beanstalk
  • AWS Lambda
  • AWS Serverless Application Model (AWS SAM)

Contêineres:

  • AWS Copilot
  • Amazon ECR
  • Amazon ECS
  • Amazon EKS

Banco de dados:

  • Amazon Aurora
  • Amazon DynamoDB
  • Amazon ElastiCache
  • Amazon MemoryDB para Redis
  • Amazon RDS

Ferramentas do desenvolvedor:

  • AWS Amplify
  • AWS Cloud9
  • AWS CloudShell
  • AWS CodeArtifact
  • AWS CodeBuild
  • AWS CodeCommit
  • AWS CodeDeploy
  • Amazon CodeGuru
  • AWS CodePipeline
  • AWS CodeStar
  • AWS X-Ray

Gerenciamento e governança:

  • AWS AppConfig
  • AWS Cloud Development Kit (AWS CDK)
  • AWS CloudFormation
  • AWS CloudTrail
  • Amazon CloudWatch
  • Amazon CloudWatch Logs
  • AWS CLI
  • AWS Systems Manager

Redes e entrega de conteúdo:

  • Amazon API Gateway
  • Amazon CloudFront
  • Elastic Load Balancing
  • Amazon Route 53
  • Amazon VPC

Segurança, identidade e conformidade:

  • AWS Certificate Manager (ACM)
  • AWS Certificate Manager Private Certificate Authority
  • Amazon Cognito
  • AWS IAM
  • AWS KMS
  • AWS Secrets Manager
  • AWS Security Token Service (AWS STS)
  • AWS WAF

Armazenamento:

  • Amazon EBS
  • Amazon EFS
  • Amazon S3
  • Amazon S3 Glacier


Análise:

Serviços AWS usado para análise de dados.

AWS Athena

Note

Contextualização:


Amazon OpenSearch Service

Note

Contextualização:


Integração de aplicativos:

Tip

Tempos os seguintes serviços AWS usados para integração de aplicações:

  • SQS -> para um modelo de filas.
  • SNS -> para um modelo de pub/sub.
  • Kinesis -> para um modelo de processamento em tempo real.

AWS Amplify

img img

  • Amplify Studio - Permite criar Mobile e Web Applications.
    • Com ele se cria tanto o backend quanto o frontend.
    • Seria como um beanstalk para aplicações mobile e web.
    • Usa o CloudFormation para criar os recursos (banco, filas, S3).
    • Usa o AppSync para criar as API GraphQl.
  • Amplify CLI - Permite configurar o backend com um cli guiado (respondendo perguntas).
  • Amplify Libraries - Libs para conectar sua app a serviçso AWS.
  • Amplify Hosting - Permite hospedar as aplicações.
    • Configura como vai ser a implantação. image-20230819141211274 image-20230819141211274
  • Features importantes image-20230819141105413 image-20230819141105413
  • Testes E2E image-20230819141334433 image-20230819141334433

AWS AppSync

Note

Contextualização:


Amazon SQS

Note

Contextualização:

Visão extra - desenvolvedor

  • Usado para desacoplar aplicações.
  • Tem baixa latência (<10 ms).
  • Permite mensagem duplicadas (ou seja, não valida o conteúdo da mensagem).
  • Para o processamento de mensagem duplicados, usa se o Message visibility timeout para tornar a mensagem invisível aos demais consumer.
  • Para produzir mensagem usa se o SDK com a API (sendMessage).
  • Há dois tipos de filas SQS
    • Standard
      • Tem Throughput ilimitado, e quantidade de mensagem na fila ilimitado.
      • Entrega a mensagem ao menos uma vez para os consumers.
      • Ordena as mensagens buscando o melhor esforço.
    • FIFO
      • Tem throughput de 300 msg/s e 3000 msg/s usando batch.
      • Não tem mensagens duplicadas. Pois tem uma funcionalidade que permite remove-las.
      • Ordena por ordem de chegada.
      • Entrega apenas uma vez a mensagem.
  • Conceitos para desenvolvedores:
    • Long Polling - Capacidade opcional de ficar esperando, caso não haja mensagens na fila, até uma mensagem chegar.
      • Reduz a quantidade de chamadas de API a fila, aumentado a eficiência e latência da aplicação.
      • Pode se configurar de 1 segundo a 20 (ideal) segundos de tempo.
      • É recomendado o uso ao invés do polling normal (short polling).
      • Pode ser configurado Queue level ou via API level usando (ReceiveMessageWaitTimeSeconds).
    • Extended Cliente - Capacidade de enviar mensagem acima de 256kb usando o S3 para salvar a mensagem e se posta apenas os metadados na fila.
      • Usados para enviar videos para processamento,
    • Nomes das APIs
      • CreateQueue com (MessageRetentionPeriod), DeleteQueue.
      • PurgeQueue permite deletar todas as mensagens de uma fila.
      • SendMessage com (DelaySeconds), ReceiveMessage, DeleteMessage.
      • MaxNumberOfMessages - Permite definir a quantidade de mensagem que podem ser consumida por vez. (default 1 , max 10).
      • ReceiveMessageWaitTimeSeconds - Permite configurar o Long Polling.
      • ChangeMessageVisibility - Permite mudar o tempo de visibilidade da mensagem.
    • Há também API batch para enviar, deletar e mudar a visibilidade, o que reduz o custo diminuindo a quantidade de chamada ao SQS.
    • FIFO conceitos avançados:
      • de-duplication - funcionalidade que permite recusar mensagens que estão duplicadas.
        • O tempo em que ignora uma nova mensagem com o mesmo id e de 5 minutos. A partir desse período não considera a nova mensagem como duplicata.
        • Há dois métodos de de-duplication:
          • Baseado no conteúdo: Gerar um hash sha-256 do body para comparação.
            • Ao se criar a fila, pode setar se ele vai considerar esse método. Caso seleciona o método via ID será opcional.
          • Baseado no ID: Se passa um id de de-duplication ao postar a mensagem.
      • Message group - permite agrupar mensagem por um MessageGroupId.
        • Utils quando se que usar a fila para mais de um processo, assim pode se configurar um consumer para considerar apenas as mensagens do grupo.
        • Porém a ordem só é garantida dentro do grupo.
          image-20230812090743500 image-20230812090743500

SNS

Note

Contextualização:

Visão extra - desenvolvedor

  • Há dois tipos de tópicos SNS:
    • Standard
      • Notifica a mensagem apenas uma vez para os subscritos. Depois a mensagem e deletada automaticamente.
      • Ordenas as mensagens buscando o melhor esforço.
    • FIFO
      • Tem throughput de 300 msg/s e 3000 msg/s usando batch.
      • Não tem mensagens duplicadas. Pois tem uma funcionalidade que permite remove-las.
      • Ordena por ordem de chegada.
      • Notifica apenas uma vez a mensagem.
      • Notifica apenas para SQS FIFO.

Kinesis

Tip
  • Usado para coletar, processar, analisar e distribuir dados em tempo real.
  • Composto pelas aplicações
    • Kinesis Data streams - Captura, processa e armazena fluxos de dados.
    • Kinesis Data Firehose - Carrega dados para armazenamentos no AWS.
    • Kinesis Data Analytics - Analisa fluxos de dados com SQL e Apache Flink.
    • Kinesis vídeo streams - Capture, processa e guardar fluxo de dados de vídeos.
Note

Contextualização:

Visão extra - desenvolvedor

  • Usado para ingestão de log, métricas, website ClickStreams, telemetria IOT.

  • Kinesis Producer

    • Record é composto por:
      • chave de partição (gerada ao enviar para o kinesis), Blob data (ate 1MB).
      • Usa um hash chave de partição para definir em que shard vai armazenar.
      • Por isso que deve se definir uma boa chave de partição, de forma a espalhar os dado nos shards evitando sub utilização.
    • Pode ser produzidos por SDK (low level), KPL (high level por oferecer compressão e batch) e kinesis agent para logs de aplicação.
    • Usa a API PutRecord.
    • Recomenda usar KPL com Batch, para diminuir custos e aumentar o throughput.
    • Pode lançar a exception ProvisionedThroughputExceeded caso envie mais do que é capaz de aceitar. exemplo se tem apenas um shard (pois usou um PK bem restrita) e tenta enviar 2 MB/s sabendo que so aceita 1 MB/s.
      • Soluções:
        • Usar chaves de partições que seja bem distribuídas.
        • Implementar exponential backoff.
        • Aumentar a quantidade de shards.
  • Kinesis Consumer

    • há dois modos de uso:
      • Shared (Classic) Fan-out
        • 2 MB/s considerando todos os consumers.
        • Usa a API GetRecords.
        • O consumer busca os dados (pull mode).
        • Tem limite de 5 chamadas de APIs por shard por segundos.
      • Enhanced Fan-out
        • 2 MB/s por consumer por shard.
        • Usa a API SubscribeToShard.
        • O shard envia os dados para o consumer (push mode).
        • Latência e muito baixa 70 ms.
  • KCL - Kinesis client library image-20230812124931088 image-20230812124931088

    • Facilita o consumo dos dados. É uma lib java.
    • Cada shard pode ser lido apenas por uma instância KCL.
      • exemplo: 4 shards -> pode se ter no máximo 4 instâncias do KCL
      • Isso significa que o auto scale esta relacionado a quantidade de shard que se tem provisionados.
    • Usa o DynamoDB para guardar o progresso, por isso precisa configurar acessos no IAM. Isso porque pode haver mais de um KCL executando e para que não haja colisão o track é feito usando o DynamoDB.
  • Kinesis Operations

    • Shard Splitting image-20230812125436219 image-20230812125436219
      • ​ Usado para aumentar a capacidade de stream, ou seja usado para quebrar um shard e outro novos, a fim de aliviar a carga.
      • o shard antigo vai ser deletado quando os dados expirarem e os dados novos serão divididos entre os novos.
    • Shard Merging image-20230812125719941 image-20230812125719941
      • O contrario do splitting
      • o shard antigo vai ser deletado quando os dados expirarem e os dados novos serão enviados para o novo.

AWS MSK

Note

Contextualização:


AWS Step Functions

Note

Contextualização:

  • Escrito em json.

  • usado para orquestrar chamada de serviços.

  • Cada etapa é chamado de task.

    • Tem que ter uma entrada e uma saída.
  • Tem os tipos:

    • Choice State - Testa uma condição para enviar para uma branch (ramificação).
    • Fail or Succced State - Execução parada por erro ou sucesso.
    • Pass State - Recebe os dados e repassa sem realizar nenhum processamento.
    • Wait State - Espera por uma quantidade de tempo.
    • Map State - Permite criar um loop.
    • Parallel State - Para processos em paralelo.
  • Erro handling

    • Quem deve tratar deve ser o Step Function. Isso pois a aplicação deve ter códigos simples.
    • Pode se usar dois tipos de handles:
      • retry - realiza uma retentativa de executar a task que falhou.
        • Se configura os tipos de erros e a quantidade de retry com exponetial Backoff. image-20230819133020147 image-20230819133020147
        • Caso atinga a quantidade máxima de tentativas o catch é acionado.
      • catch - Pode se adicionar um fluxo alternativo ou uma notificação via eventos. image-20230819133240150 image-20230819133240150
        • Passa se o dados do erros adiante com o ResultPath
          image-20230819133353281 image-20230819133353281
      • Tipos de códigos de erros
        • States.ALL -> Pega todos tipo de erros.
        • States.Timeout -> Pega os timeouts.
        • States.TaskFailed -> Pega falhas de execução.
        • States.Permitions -> Pegas erros de falha de permissão de execução.
    • Tem uma funcionalidade chamada wait for task token que funciona como se fosse um callback para dar prosseguimento a execução.
      • Usado quando se aciona um sistema externo (que não seja um Lambda.).
        image-20230819134054736 image-20230819134054736
    • Tem a funcionalidade chamada de Activity Task para aplicações externas.
      • Aqui se roda um Activity worker no EC2, Lambda, ou mobile device, ele realiza poll de tempos em tempos via a API GetActivityTask no Step Function em busca de itens a serem processados.
      • Após finalizar o processamento do item encontrado ele aciona o Step Function via as APIs SendTaskSuccess ou SendTaskFailure com o output do processamento.
      • Deve se configurar um timeout, para não ficar esperando para sempre após uma task ser liberada para processamento. image-20230819134647312 image-20230819134647312

Computação:


AWS Budget

Note

Veja aqui tudo que se precisa saber sobre Budgets


EC2

Note

Contextualização:

  • Key pair
Info

Ao gerar o key pair atente-se ao:

  • Tipo da chave:
    • RSA: Usado em linux e Windows.
    • ED25519: Não suportado pelo Windows.
  • Formato
    • .pem - formato aberto usado pelo openssh.
    • .ppk - formato do putty (windows 7 e 8).

Use data

Usado para pre configurar um instância Ec2. O exemplo abaixo instala o apache na instância.

## Considerando que AMI seja RedHat Based.

#!/bin/bash
yum update -y
yum install httpd -y
systemctl start httpd
systemctl enable httpd
echo “Hello World from $(hostname -f)” > /var/www/html/index.html

IMDS - EC2 instance metadata

  • Informações sobre a instância.
  • Permite que instâncias vejam informações sobre elas mesmas, sem a necessidade de ter um IAM Role.
  • Pode ser acessado via URL: http://169.254.169.254/latest/meta-data.
    • Permite acessar tanto o user data (script de inicialização) quanto o meta data.Só permite acesso, não preciso negar.
  • Ha duas versões
    • IMDSv1
      • Acessa diretamente a URL: http://169.254.169.254/latest/meta-data.
    • IMDSv2 -
      • Mais seguro pois agora o acesso é feito em dois passos
      • Recuperar o token de sessão.
      TOKEN=`curl -X PUT "http://169.254.169.154/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-secondas:21060"`
      • Recuperar os dados passando o token via heardes:
        curl http://169.254.169.254/latest/metadata -H "X-aws-ec2-metadata-token: $TOKEN" 
  • Quando se configura credencias para a instância ela usa o IMDS para recuperar-las usando a chamada
  curl  -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/metadata/identity-credentials/ec2/security-credentials/ec2-instance

ELB / ASG

Note

Contextualização:


Beanstalk

Note

Contextualização:

Beanstalk - Avançado

  • Usa o CloudFormation para provisionar qualquer recursos na AWS.
  • Dentre os formas de deploy (sigle instance e high availability) há a opção de usar instâncias spot.
  • Os passos para usar o beanstalk são:
    • Configure a ambiente (plataforma (java, node ..) e recursos usados).
    • Configure os acesso do serviços (roles iam).
    • Configure rede, e banco de dados e tags. Opcional.
    • Configure trafego e politica de escalabilidade. Opcional.
    • Configure updates e monitoramento. Opcional.
  • Tem uma funcionalidade de swap envoriment onde se pode redirecionar o DNS de um ambiente para outro.
    • O uso disso se faz numa implantação em prod, onde se cria um clone do ambiente atual e atualiza e testa no clone e após isso se troca esse pelo o de prod.
  • Tem também um CLI chamado de eb cli que facilita o uso de CLI para automatizar pipelines.
  • Dentro da aplicação que devemos deployar pode haver uma pasta .ebextensions na raiz e :
    • Tem o formato yml/json e a extensão do arquivo deve ser .config.
    • Permite altera configurações padrões usando option_settings
    • Permite adicionar recursos com RDS, ElastiCache, DynamoDb ….
    • Todos os recursos adicionado via ebextensions são deletado quando o ambiente é deletado.
  • As opções de deploys para updates são: image-20230807090025037 image-20230807090025037
    • All at once - Tudo de uma vez.

      • É mais rápido, mas a instância fica indisponível por algum tempo.
      • Bom para ambientes de dev e hom.
        image-20230807084407578 image-20230807084407578
    • Rolling - Cria uma nova versão (chamada de bucket) derrubando parte das instâncias já existentes e redireciona o trafego quando a nova versão estiver de pé.

      • Não há custo adicional.
      • Demora mais tempo para deployar. image-20230807084505741 image-20230807084505741
    • Rolling com batches adicionais - Igual ao anterior, mas faz o redirecionamento em partes, mantendo a convivência entre a nova e a versão antigo por algum tempo.

      • Diferente o anterior que seleciona parte das aplicações e derruba pra subir novas essa cria novas e convive com elas por um tempo.
      • Tem um custo adicional. Pois adiciona novas instâncias.
      • Bom para ambientes produtivos. Pois se mantém a capacidade da aplicação sem comprometer o uso. image-20230807084827320 image-20230807084827320
    • Immutable - realiza o deploy das instâncias em novo ASG, e quanto esse estiver disponível, se move as instâncias para o ASG antigo e termina as instâncias anteriores.

      • Tem Zero Downtime. Pois cria um ASG temporário.
      • Tem um custo alto pois duplica a quantidade de instância.
      • Mas rápido que o Rolling.
      • Bom para produção. image-20230807085227077 image-20230807085227077
    • Blue/green - Cria se um novo ambiente, e redireciona (Route 53) quando estiver tudo ok.

      • Tem Zero Downtime.
      • Não é uma feature do beanstalk é mais um conceito que pode aplicado. Pois o redirect tem que ser feito manualmente. image-20230807085546086 image-20230807085546086
    • Traffic Splitting envia uma porcentagem de trafego para grupo de instâncias.

    • Usado para teste canário.

      • Duplica a quantidade de instâncias,
      • Tem um custo extra.
      • Facilita rollback e teste. image-20230807085801497 image-20230807085801497

Ciclo de vida (lifecycle police)

  • Pode armazenar mais de 1000 versões de aplicações. Deve se remover de tempos em tempos versões antiga.
  • Para isso uso o Ciclo de vida que pode ser:
    • Baseado em tempo (versões antiga)
    • Baseado em espaço usado (quando se esta ocupando muito espaço com versões antigas)
  • Oferece a opção de armazenar as versões no S3 para não haver perda de dados.

Beanstalk clonning

  • Permite clonar um ambiente, mantendo as mesmas configurações.
  • Útil para testar uma nova versão da aplicação. Ou atualização de versão da plataforma.
  • Todos os recursos da nova versão são preservados.
    • Apenas no caso de Banco de dados que os dados não são clonados apenas as configurações.
  • Usado em conjunto a a funcionalidade de swap, onde se cria um clone, implanta a nova versão e depois dela ok, se troca o DNS para apontar para a nova versão.

Migrations

  • Após criar um ambiente, não se pode mudar o tipo do load balancer apenas as configurações, caso precise mudar será necessário realizar uma migração.
    • Para isso:
      • Crie um novo ambiente com as mesmas configurações, exceto o ELB. (ou seja não pode ser um clone).
      • Deploy a aplicação no novo ambiente.
      • Use o Swap ou o Route 53 para redirecionar o trafego da aplicação.
      • Mate o ambiente anterior.
  • Apesar de poder provisionar o RDS via Beanstalk, não é recomendado para ambiente produtivo. Nesse caso o ideal é ter o banco separado.

image-20230808083912269 image-20230808083912269


Lambda

Note

Contextualização:

Visão extra - desenvolvedor

  • Linguagem suportadas:

    • Node / Python/ java / c# / Ruby / Golang.
    • Caso seja diferentes dessa pode rodar usando custom Runtime API (open source project).
  • As dependências devem ser enviadas juntos com o condigo da Lambda. Respeitando a limitações do tamanho do pacote.

  • Suporta também Lambda Contêiner Image.

    • Criadas usando o Lambda Runtime API.
  • Para atualizar uma Lambda usando o CloudFormation deve se realizar o upload o pacote zipado para o S3 e referência-lo no CloudFormation.

    • O S3 deve usar versionamento, para poder disparar o CloudFormation.
    • Caso use para implantar em cross account é necessário ter um Bucket police para permitir acesso ao CloudFormation de cada conta.
  • Lambda Trigger

    • Na integração com ELB, os dados do request são transformado em Json e repassados a Lambda.

      • O ALB suporta o Multi Header values (necessário habilitar no target group), isto é quando se passa query string parameters com múltiplos valores eles são convertido para um objeto json como um array.
        image-20230813111039675 image-20230813111039675
    • Há dois modos de operação:

      • Síncrono -> Você chama e esperar pela resposta. (as filas e o stream entram aqui, pois existe o event source mapping que realiza a chamada síncrona da Lambda).
      • Assíncrono -> um evento dispara a Lambda, nesse caso a Lambda executa baseados no evento.
        image-20230813112808083 image-20230813112808083
        • Caso ocorram erros haverá retry sendo:
          • 3 retry no total.
          • 1 minuto após 1ª chamada, depois aguarda 2 minutos.
          • Deve se garantir que o processamento é idempotente, em casos de retry.
          • Isso é para evitar duplicar logs e criar loop infinito de retentativas na Lambda.
          • Pode se definir uma DLQ (SNS ou SQS) para notificar sobre falhas (precisa de permissão IAM).
    • Integrações com CW Events / EventBridge

      • Via CRON
        • A cada x tempo dispara a Lambda.
      • Via EventBridge Role (baseado em um padrão de evento, ex: exclusão de EC2)
        • Trigga quando status sofre mudança.
    • Event Source Mapping - Lambda Trigger

      • Responsável por realizar o polling de dados do Kinesis Data Stream, SQS, DynamoDB Stream e invocar a Lambda. Em outra palavras é um processo que realiza o polling dos itens e monta os batches para o Lambda processar.
      • há dois tipos:
        • Stream
          • Usado com Kinesis e DynamoDB.
          • cria-se um iterador para cadas shard, e processa os itens em ordem. Inicia do inicio ou a partir de um período.
          • Se ocorrer um erro todo batch é reprocessado.
          • Permite informar uma DLQ para caso de erros. image-20230813204251222 image-20230813204251222
          • Escalonamento
            • Uma Lambda por shard
            • Caso use paralelizado, processa 10 batches por shard simultaneamente.
        • Queue
          • Usado para SQS e SQS FIFO.
          • Pode se configurar o tamanho do batch.
          • Se configurar a DLQ na Fila, com uma politica de tentativa de erros. Pois DLQ no Lambda é só para chamadas assíncronas, e nesse caso são chamadas síncronas.
            image-20230813204547891 image-20230813204547891
          • O Lambda suporta processamento em ordem FIFO, escalando de acordo com o numero de groups ativos. - Escalonamento
            • Para SQS Standard
              • Pode escalar até 60 instância por minuto.
              • Pode processar até 1000 batches de mensagens simultaneamente.
            • Para SQS FIFO
              • Processa a mensagem em ordem desde que estejam no mesmo GrupoID.
              • Scala de acordo com numero de grupo de mensagem ativos.
    • Event e Context Object
      image-20230813211306459 image-20230813211306459

      • Quando uma Lambda é aciona ela recebe dois tipos de dados no formato Json, que são:
        • Event Object
          • Contém os dados para que a função processe.
          • Contém os dados de quem acionou (todas as informações necessárias)
          • É convertido em um objeto de acordo com o tipo da Lambda (python, java, node) e fica disponível para uso.
        • Context Object
          • Contém informações sobre o contexto de execução da Lambda, com memoria_limit_in_mb, function_name, aws_request_id.
  • Lambda destination

    • Após o processamento da Lambda pode se configurá-la para enviar o resultado para outros serviços AWS.
    • Podendo ser:
      • Para invocações assíncronas:
        • Pode enviar o resultado em caso de sucesso ou falha para SQS, SNS, Lambda, EventBridge.
        • Recomendado usar ao invés de DLQ, por ser uma solução mais direta. (não requer um solução para o processamento da DLQ).
      • Para event source mapping do tipo stream.
        • Para batch descartados: SQS, SNS
  • Lambda polices

    • Lambda Execution Role
      • IAM Role que da acesso ao recursos para leitura e escritas.
        • AWSLambdaBasicExecutionRole -> permite fazer upload de logs para CloudWatch.
        • AWSLambdaKinesisExecutionRole -> permite ler do Kinesis,
        • AWSLambdaDynamoDBExecutionRole -> Permite ler de streams do DynamoDB.
        • AWSLambdaSQSQueueExecutionRole -> permite ler do SQS.
        • AWSLambdaVPCAccessExecutionRole -> permite implantar funções Lambda dentro de nosso VPC.
        • AWSLambdaXrayDaemonWriteAccess -> permite carregar dados de rastreamento para o X-Ray.
        • Recomendado criar uma por Lambda.
        • Usada quando a lambda realize o pulling das mensagem via event source mapping.
    • Resource Based police
    • Para que outros serviços consigam chamar uma Lambda deve se criar uma Resource Based police
      • Similar a S3 Police. Onde se define quem pode invocar a Lambda.
      • Usado onde um recurso aciona a lambda.
  • Lambda Logging & Monitoring

    • Usa CW Logs - para logar a execução (precisa da role AWSLambdaBasicExecutionRole ).
    • Usa CW Metrics - para guardar métricas (invocações, duração, execuções concorrentes, erros, rates, throttles).
    • Usa X-Ray - para guardar o traces (necessário ativar, vem desabilitado default), precisar usar X-ray SDK para marcar os traces.
  • Lambda VPC

    • Por padrão as lambdas rodam um uma VPC gerenciada pela AWS a parte, ou seja não na sua VPC.
    • Com isso é possível acessar a internet e recursos reginais como DynamoDB e S3.
    • Assim não da para acessar os recursos que são criados na VPC criada na sua conta.
      • Para resolver isso é necessário realizar a implantação da lambda em sua VPC informando o VPC ID, as subnets e grupos de segurança.
      • O o Lambda criar uma ENI nas subnets para conectar a VPC. Precisa ter permissão para criar ENI (API CreateNetworkInterface) ou via role AWSLambdaENIExecutionRole.
      • Também é necessário uma role de acesso chamada AWSLambdaVPCAccessExecutionRole.
        image-20230814053259347 image-20230814053259347
    • Lambdas configuradas para rodar em uma VPC em uma subnet publica não terá acesso a internet ou tera um IP publico.
    • Para ter acesso deve se rodar a Lambda em uma subnet privada e usar o NAT Gateway | instance para acessar a internet.
      image-20230814053746136 image-20230814053746136
  • Lambda performance

    • CPU esta relacionado a Memória, aumentado memoria aumenta CPU.
    • Deve executar entre 5 segundos e 15 minutos (timeout).
    • Tem o contexto de execução que:
      • Inicia as dependências de uma Lambda (conexões com banco). É uma péssima ideia iniciar uma conexão com banco de dado na função, pois isso consome do tempo de execução.
      • Para usar é só chamar fora do handle da função. image-20230814055326413 image-20230814055326413
      • É mantido por um tempo, é pode ser reutilizado por outras execuções (reduzindo tempo de inicialização).
      • Tem acesso ao diretório /tmp, para gravação de arquivos temporários. Será compartilhado com as outra execuções.
        • Para guardar aquivos grandes, que não precisam ser baixados a toda execução.
        • Tem até até 10 GB de espaço.
        • Caso precise encriptar dados use o KMS.
      • Caso precise de armazenamento permanente use o S3.
  • Lambda Layers

    • Permite criar runtime customizadas.
    • Pode se ter até 5 layers por função de até 250 MB.
    • Permite externalizar dependências para reuso. Evitando assim perda de tempo com uploads de novas versões.
      image-20230814060607313 image-20230814060607313
  • Lambda File System Mounting

    • Pode acessar o EFS se estiver rodando na VPC da sua conta.
    • Usa se EFS Access Point para isso.
      image-20230814061525148 image-20230814061525148
    • Cada Lambda executando será uma conexão no EFS.
    • Comparativo
      image-20230814061203377 image-20230814061203377
  • Lambda Concurrency an Throttling

    • Pode ter até 1000 execuções concorrentes para toda conta - (soft Limit).
    • Pode se configurar a quantidade de concorrência que se quer ter via reserved concurrency.
    • Caso a quantidade de invocação passe o limite configurado ocorre o throttling.
    • É recomendado que se defina os limites, pois caso não defina, uma lambda pode causar o throttle em todas as outras dentro da conta.
    • No caso de invocações assíncronas:
      • Caso ocorra o throttling ela vai devolver para a fila interna e tenta reprocessar ao longo de 6 horas com um back off exponencial.
  • Lambda Container Image

    • Permite executar contêiner criados com base na Lambda Runtime API de até 10 GB de tamanho.
    • A vantagem é que a imagem vai está com todas as dependências.
      image-20230814071004237 image-20230814071004237
    • Boas praticas:
      • Use sempre imagem Base AWS-provided.
      • Use multi-Stage build para diminuir o tamanho da aplicação.
      • Use o ECR para armazenar os Layer da imagem.
  • Lambda Version e Aliases

    • Após o desenvolvimento é possível publicar a Lambda, criando assim uma versão.
      • Cada versão tem seu próprio ARN e é imutável.
      • O $Latest representa a ultima versão.
    • Pode ser criar Alias para essa versões.
      • Pode se criar alias por ambiente.
      • Usados para canário deploy, onde se pode adicionar uma segunda versão e colocar pesos no roteamento do tráfego a fim de testar a nova versão.
      • Não pode referênciar outros alias, apenas versões.
        image-20230814071802676 image-20230814071802676
    • Pode se usar o Code Deploy para realizar o traffic shift (roteamento do trafego).
      image-20230814072828143 image-20230814072828143
  • Lambda URL

    • Permite criar um endpoint dedicado para o Lambda. Suporta IPV4 e IPV6.

    • Gerada um URL única para a Lambda, que pode apontar para um alias ou $Latest.

      • Não é possível apontar para versões diretamente.
    • Suporta CORS e politica baseada em recurso. (especificando CIDR ou IAM principal).

    • Pode ser configurada via Console ou API.

    • Tipo autenticação:

      • Auth Type None -> valida apenas politica Baseada em recurso. Dando acesso a todos.
      • Auth Type AWS_IAM -> valida o principal e a politica baseada em recurso.
        • O principal deve terá a permissão lambda:InvokeFunctionUrl.

      image-20230814183601019 image-20230814183601019

  • Lambda boas praticas

image-20230814184239369 image-20230814184239369


AWS Serverless Application Model (SAM)

Note

Contextualização:

Visão extra - desenvolvedor

  • Construido em cima do CloudFormation.

    • o Arquivo YML (a receita) chamado template.yaml, que depois é transformado em um template do CloudFormation.
    • Requer a definição das sessões de Transform e do Resources.
    • Veja um exemplo
  • Comandos:

# Inicia um projeto
sam init

# realiza o build
sam build  <options>

# empacota a aplicação para cloudFormation
sam package  --s3-bucket <bucket-name> --template-file template.yaml --output-template-file gen/template-generated.yaml

## é equivalente a: 
aws cloudformation package  --s3-bucket <bucket-name> --template-file template.yaml --output-template-file gen/template-generated.yaml

# Realiza o deploy
sam deploy  <options>

## é equivalente a: 
aws cloudformation deploy --template-file gen/template-generated.yaml --stack-name <stack name>  --capabilities CAPABILITY_IAM

## Deploy configuravel via perguntas - realiza perguntas e executa o empacotamento e o deploy num comando só
sam deploy --guided
  • Processo de uso: image-20230819090343445 image-20230819090343445

  • As Polices criados pelo SAM, são baseados em templates configurados pela AWS. image-20230819094903580 image-20230819094903580

  • Ao se criar uma Lambda, há uma opção de usar um projeto já pronto a partir de um exemplo do SAM Aplication Repository (SAR).

  • Como configurar o SAM com o CodeDeploy para realizar o Traffic Shifting image-20230819095243368 image-20230819095243368

  • Como executar SAM Localmente para testes.

    • Lambda
      • Usa o comando sam local invoke.
      • Pode se usar o –profile= caso a Lambda se conecte a AWS.
      • Pode se gerar eventos para a lambda usando o comando sam local generate-event. image-20230819101004809 image-20230819101004809
    • API Gateway
      • Usa o comando sam local start-api.
      • Pode se usar o –profile= caso a Lambda se conecte a AWS. image-20230819101018954 image-20230819101018954
  • SAM Aplication Repository (SAR).

    • Permite deployar aplicações que pode ser reutilizadas em outras contas.
      image-20230819101458761 image-20230819101458761

Contêineres:

AWS CoPilot

image-20230804061517407 image-20230804061517407

  • CLI para build, release and operate aplicações conteinerizadas.
  • Veja aqui o Getting started.
  • Usa se Yaml para descrever a arquitetura da aplicação.
  • Roda as aplicações no AppRunner, ECS e Fargate.
  • Abstrai a complicações de infraestrutura, provisionando automaticamente, permitindo que se foque a criação da aplicação.
  • Permite automatizar deploys com um comando usando CodePipeline.
  • Permite deployar em vários ambientes, além de acesso a logs, troubleshooting e health checks.

Amazon ECS

Note

Contextualização:

  • Usa o EFS como volumes (ele é serverless), funciona tanto para EC2 e Fargate.
  • Como soluções de arquitetura há:
    • Capacidade de ser acionada pelo EventBridge para executar um processamento de imagem por exemplo image-20230801070232324 image-20230801070232324
    • Possibilidade de usar o EventBridge para executar a cada hora (agendado).
    • Possibilidade de usar uma fila SQS com entrada de dados
IAM Roles for ECS

Há dois tipos:

  • EC2 instance profile
  • ECS Tasks Role

image-20230801060747822 image-20230801060747822

ECS Service Auto Scaling (tasks scaling)

Pode escalar usando 3 métricas:

  • Via média uso de CPU.
  • Via média de uso de memória.
  • Via quantidade de requisição por target (métrica do ALB)

Pode escalar por

  • Target Tracking - escala baseado numa métrica do CloudWatch.
  • Step Scaling - escala baseado em um alarme do CloudWatch.
  • Scheduled Scaling - escala usando um data e hora especifica.

ECS Tasks definitions

  • Semelhante ao docker compose ou deployment (EKS), ou seja, serve para definir como vai ser criado o contêiner.
  • Tasks rodando na mesma AZ compartilham o mesmo sistema de arquivo EFS.
  • Numa Tasks é possível adicionar vários containers, como aqueles sidecars.
  • Caso esteja rodando com o Launch type EC2, pode se definir uma task placement strategy e uma task placement constraints para definir onde o ECS deve alocar os novos containers (tasks) criados. Funciona assim:
    • Se identifica a instância que atenda os requisitos de memória e CPU e Portas definidos na task definitions.
    • Valida se a instância está aderente as restrições de alocamento definidas na task placement constraints.
    • Valida se a instância está aderente as estratégias de alocamento definidas na task placement strategy.
    • Aloca na instância selecionada.
  • As task placement strategy são
    • BinPack
      • Alocará de acordo com memoria ou CPU.
      • Priorizando minimizar os custos. image-20230804055238263 image-20230804055238263
    • Random
      • Seleciona o instância para aloca randomicamente. image-20230804055224374 image-20230804055224374
    • Spread
      • Espalha de acordo com o valor passado, como instanceID, attribute:ec2.availability-zone
      • Esse prioriza a disponibilidade. image-20230804055118989 image-20230804055118989
  • Pode se combinar as task placement strategy image-20230804055506695 image-20230804055506695
  • Já as task placement constraints pode ser definidas para limitar o alocamento. Podendo ser:
    • distinctInstance - Obriga que o alocamento seja feito é instâncias diferentes.
    • memberOf - Obriga que se atenda a expressão que pode ser uma cluster query language. image-20230804055847335 image-20230804055847335

EC2 Launch type - Auto Scaling (server scaling)

image-20230801064002809 image-20230801064002809

  • Serve para escalar o servidor que roda as instâncias.
  • Pode usar o Auto Scaling group baseando-se em:
    • Uso do CPU
    • Adição programada, por eventos tipo horário comercial e noite.
  • Pode usar o ECS Cluster Capacity Provider
    • Provisiona novas instâncias (ec2) automaticamente para atender a demanda de tasks ECS.
    • Usa um Auto Scaling Group e adiciona novas instâncias quando considerando RAM e CPU usados.

Rolling Updates

  • Define-se o minimum healthy porcent e o maximum percent que são a quantidade de tasks da versão anterior que se quer manter e a quantidade de tasks que se pode haver. image-20230801065950959 image-20230801065950959 image-20230801070008268 image-20230801070008268 image-20230801070042188 image-20230801070042188

Tasks definitions

  • Define como será o contêiner docker.
  • As informações primordiais são:
    • Imagem do contêiner.
    • Mapeamento de porta (contêiner e host).
    • Variáveis de ambiente.
      • Pode sem hardcode, ou referências de parameter store os secrets.
      • Pode ser carregadas em bulk do S3 (arquivos de configurações completos)
    • CPU e Memória.
    • Configuração de rede.
    • IAM Role.
      • Se adiciona na task definition para dar acessos aos recursos.
    • Configurações de Logs.
  • Como funciona no load balancer:
    • Para EC2 launch types
      • Cria se uma porta randômica para cada contêiner através da opção Dynamic Host Port Mapping na definição da task.
      • O ALB procura as portas na instância.
      • Deve se permitir trafego no Security Group do EC2 de qualquer porta vindo do Security Group do ALB.
    • Para Fargate
      • Cada contêiner vai ganhar seu próprio IP (ENI), assim pode se manter a mesma porta para todos.
      • Na task só se define qual vai ser a porta do contêiner.
      • No Security Group da ENI EC2 se permite a porta definida vinda do Security Group do ALB.
      • No Security Group do ALB se permite a porta definida da WEB,

Amazon EKS

Note

Contextualização:

Amazon ECR

Note

Contextualização:


Banco de dados:

RDS

Note

Contextualização:

  • Para converte um instância do RDS de Sigle AZ para Multi AZ, só é necessario alterar o banco e mudar nas configurações. E isso não gera disponibilidade.

Aurora

Note

Contextualização:


DynamoDB

Note

Contextualização:

Visão extra - desenvolvedor

  • Pode se alterar o modo de provisionado ou sob demanda a cada 24 horas.

  • Tipos de dados aceitos nos atributos:

    • Tipo escalares -> String, number, Binary, Boolean, Null.
    • Documentos -> Map, List.
    • Conjuntos -> String Set, Number Set, Binary Set
  • Caso provisione os WCU e RCU, e exceda pode se usar temporariamente o Burst Capacity, que permite ter um Throughput extra.

    • Mas se excede-lo receberá um exception do tipo ProvisionedThroughputExceededException.
  • Tem uma funcionalidade de auto scale que reconfigura os valores de WCU e RCU de acordo com o uso.

  • Operações

    • Write
      • PutItem -> cria novo item.

      • UpdateItem -> Atualiza atribuídos de um item já existente.

      • Conditional expression for Writes -> Adiciona / Deleta / Atualiza de acordo com uma condição.

        • Bom para quando a itens concorrentes. Pois tem uma funcionalidade chamada de Optimistic Locking que evita que atualizações / delete enquanto esta sendo atualizado ou deletado.
          • Cada item tem um atributo para validação como se fosse uma versão.

        image-20230815201126518 image-20230815201126518

    • Read
      • GetItem -> recuperar um item através das PK ou PK + SK.
        • Pode se definir o ProjectExpression para retornar apenas alguns atribuídos.
      • Query -> retorna o item de acordo com uma KeyConditionExpression.
        • A PK deve ter o operador (=).
        • A SK é opcional, e pode ter os operadores (=, >,<, Between, Begin with).
        • Pode se adicionar um expressão de filtro (FilterExpression) usando os atribuídos não chaves, e será executa após a execução da query.
        • Pode se usar a tabela ou os indexes (LSI e GSI) para a query.
      • Scan -> lê toda a tabela. Consome muito WCU.
    • Delete
      • DeleteItem - remove um item com base na PK.
        • Permite adicionar uma condição.
      • DeleteTable -> serve para deletar a tabela e todos os itens.
    • Batch
      • Usado para melhorar a performance das operações (executar um conjunto de ações juntas).
      • Caso parte falhe retorna os itens (UnprocessedItems) que falharam para uma retentativa futura.
      • BatchWriteItem -> escreve em lotes.
        • Permite inserir ou deletar 25 itens em uma única chamada.
        • Permite escrever até 16 MB de dados, e até 400 KB de dados por item.
        • Não da pra atualizar os itens com isso.
      • BatchGetItem -> busca em lotes.
        • retorna de uma ou mais tabelas.
        • Retorna até 100 itens ou 16 MB de dados.
        • São recuperados em paralelos o que diminui a latência.
    • PartQL - Permite executar queries semelhante ao SQL (insert, select, update, delete).
      • Não permite realização de JOINs.
  • DynamoDB Streams - Stream das alterações que ocorrem no banco de dados. image-20230815204431459 image-20230815204431459

    • Retém os dados por 24 horas. Feito de Shards como o Kineses.
    • Faz o Stream dos dados para Lambda, Kinesis Data Streams, KCL (Kinesis Client Library Applications.).
    • Uma vez habilitado só vai enviar os dados a partir daquele momento, não enviando o histórico.
    • Pode se escolher o que se vai postar no stream
      • key_only - Somente os nomes dos atributos modificados.
      • new_image - O item inteiro modificado.
      • old_image - o item inteiro antes da modificação.
      • new_and_old_images - O item antes e depois da modificação.
  • DynamoDB CLI - Bom saber sobre a API do dynamoDB no AWS CLI.

    • –projection-expression - permite especificar os atribuídos que se que recuperar.
    • –filter-expression - permite filtrar os atribuídos depois que se recuperou.
    • –page-size - Quantidade de itens na lista recuperada. Default 1000 itens.
    • –max-items - Numero máximo de itens recuperado no CLI, retorna o Next Token (identificação dos proximo bloco de itens)
    • –start-token - Permite especificar o Next Token para se recuperar os próximos itens.
  • DynamoDB Transactions

    • Serve para criar transações no dynamo (em uma ou mais tabelas), ou seja tudo é inserido ou nada.
    • Serve para situações onde se depende que todos os itens sejam salvos (quando as informações estão quebradas em tabelas).
    • Usados para ACID com Leituras e Escritas e consome 2 WCU na escrita ou 2 RCU na leitura.
      image-20230815211858410 image-20230815211858410

ElastiCache

Note

Contextualização:

  • Estrategias de cache
    • Lazy loading / Cache aside / Lazy population
      • Tenta recuperar do cache, se não encontrar consulta no banco e salva no cache.
      • Vantagens:
        • Os dados em cache serão apenas os usados o que reduz armazenamento em cache.
      • Desvantagens
        • Os dados em cache pode esta desatualizados, pois só serão consultados com não estiverem mais em cache.
        • Demora mais para responder pois precisa buscar no banco (Read Penalty).
    • Write Through
      • Adiciona ou atualiza o cache ao se atualizar o banco de dados.
      • Vantagens:
        • Os dados em cache estarão sempre atualizados.
        • Não há demora na busca do cache pois todo dados será adicionado ao cache (write Penalty).
      • Desvantagens
        • Caso os dados do cache seja perdido, perde as vantagem disso, sendo necessário implementar o lazy load.
        • Todos os itens estarão em cache, sendo que talvez não seja necessário.
    • TTL
      • Termite setar um tempo de expiração do dado em cache.
      • Util para limpar dados antigos não usado, ou para força o lazy load.

MemoryDB

  • Serviço de banco de dados em memória.
  • Compatível com o REDIS.
  • Ultra performático com mais de 160 milhões de request por segundo.
  • Tem dados gravados via logs de transação em Multi AZ.
  • Pode escalar de 10 GBs até 100 TBs de armazenamento.
  • Usado em Web e mobile apps, gaming online e streaming de mídia.

Ferramentas do desenvolvedor:

AWS CodeArtifact

  • Gerenciador de artefatos - como o Frog ou o maven ou npmjs.
  • Permite armazenar os artefatos gerados (libs (dependências) e aplicações).
  • Tem boa integração com quase todas as ferramentas de dependências (maven, pip, npm, etc).
  • Fica em nivel de VPC. Não guarda todas as dependências apenas as suas, as que já são livres ele apenas realiza um proxy buscando do repo original (por exemplo do Maven Central).
  • Cachea as dependências mais usadas
  • Contém dominios e dentro há repositórios. image-20230819072751625 image-20230819072751625
  • Pode gerar eventos, que pode ser escutados para validar pacotes, ou para triggar o codeStar (codePipeline).
  • Usa Resouce Police para dar acesso (a outras contas). e quando se da acesso não tem como granularizar, ou seja o acesso e dado a todos os repositórios.
  • Um repositório pode apontar para outros repositórios (upstream repository).
    • Permite ter apenas um URL para varios repos.
    • Pode se ter até 10 upstream repository
    • E Apenas uma conexão externa (link para um repo publico como o maven) por repo.
      image-20230819073621158 image-20230819073621158
  • Dominios image-20230819074022929 image-20230819074022929

AWS CodeCommit

  • Controlador de versão (git). Repositórios privado na conta AWS.
  • Autenticação (semelhante ao do github) -> SSH Key e HTTPS
  • Autorização -> IAM Polices
  • Encriptação dos dados
    • KMS quando em repouso.
    • TLS quando em transito.
  • Cross Account
    • Não se compartilha SSH keys.
    • Se cria uma IAM Role usando a API AssumeRole do STS . image-20230818193717335 image-20230818193717335
  • Pode se criar regras de notificações para notificar sobre eventos nos repositórios.
    • Tem como target o SNS e o Slack Chat.
  • Pode se criar Triggers para disparar ações.
    • Tem como targets o SNS e o Lambda.

AWS CodeBuild

image-20230818210428355 image-20230818210428355

  • Usa por de trás o docker para criar o ambiente (ubuntu, Amazon Linux, … ) e execução do build.
  • Permite configurar um timeout de até 8 horas, util para evitar que o build fique executando para sempre.
  • Permite configurar instância (CPU e RAM) que será executado, além de certificados usados.
  • Precisa ter uma IAM Role para acesso ao recursos.
  • Os logs de execução pode ser armazenados no S3 e CW.
  • Pode se usar o CW Metrics para estatísticas de build.
  • Pode se usar o EventBridge para notificações.
  • Pode ser usado sem a necessidade de de usar o CodePipeline.
  • Realiza o cache de dados reusáveis no S3 para usos futuros.
  • Tem um arquivo chamado buildspec.yml onde se script de build/test. image-20230818210615205 image-20230818210615205
  • Usando o codeAgent pode se executar ele localmente.
    • Isso também pode ser usado caso queira usar instâncias gerenciadas por você para executar o build.
  • Por padrão ele roda fora da VPC, mas caso precise acessar algum recurso (RDS, ElastiCache, etc) na sua VPC, pose ser configura-lo para executar em sua VPC.
    • Pode se usar o Paramtes Store ou Secrets Manager para armazenar as variáveis de ambiente que contém segredos.

AWS CodeDeploy

Note

Contextualização:

  • Precisa de uma IAM Role para acessar os recursos EC2/ Lambda/ S3.
  • Não realiza deploy no S3, para isso usa o CodeBuild.
  • Automatiza o processo de deploy. Pode deployar nos targets:
    • EC2 e Servidores on-premises
      • Necessita ter instalado o CodeDeploy Agent (pode ser instalando via SSM ou manual).
      • Permite deploys usando estratégias Blue/Green ou in-place.
      • Devem ter permissões para acessar recurso o S3 onde fica a aplicação.
      • Cria se um deployment group:
        • Que vai conter as instâncias (aws ou on-premises) ou Auto Scale Group que são onde se realizar o deploy.
        • Vai conter estratégias podendo ser Blue/Green ou in-place.
        • Para adicionar uma instância no deployment group usa-se tags.
    • Lambda
      • Usa somente a estratégias de Blue/Green com Traffic Shift para deploy.
      • É integrado com o SAM Framework.
    • ECS
      • Usa somente a estratégias de Blue/Green para deploy.
  • Permite realizar rollback, caso erro ou via alarmes do CW.
  • Permite controlar a granularidade dos deploy (estratégias de deploy).
    • in-place / linear / blue Green.
  • Usa o arquivo chamado appspec.yml, o passo a passo do deploy.
  • Erros comuns
    • InvalidSignatueException - Ocorre quando a hora do cloudDeploy esta diferente da hora da instância.
  • Acesse os logs do processo de deploy na instância em /opt/codedeploy-agent/deployment-root/deploymnent-logs

AWS CodePipeline

  • Fornece um workflow visual do CICD.
  • Pode se ter os componentes:
    • Source - Repositório git que fornece o código da aplicação (CodeCommit / GitHub / S3 / ECR).
    • Build - Realiza o Build da aplicação (CodeBuild / Jenkins / TeamCity).
    • Test - Executa os teste da aplicação (CodeBuild, Device Farm , outras ferramentas de terceiros).
    • Deploy - Realiza a implantação da aplicação (DoceDeploy, BeanStalk, CloudFormation, ECS, S3).
    • Invoke - Permite invocar Lambdas ou Step Functions.
  • É composto por estágios.
    • Estágios podem ter múltiplos action group que podem ter provider (executores de ações).
      • Os action grupos podem executar em sequencial ou paralelo.
      • Por exemplo pode se adicionar um action group que tem um provider que coleta da aprovação manual.
      • Por exemplo pode se adicionar um action group que tem um provider realiza o deploy no BeanStalk.
    • Os estágios são:
      • Source -> Armazena o código - CodeCommit.
        • Obrigatório.
        • Pode se usar o CW Events para dispara a esteira ao detectar mudanças no código.
        • Pode se usar ua outra configuração que da um pull no repo de tempos em tempos para buscar por mudanças.
      • Build -> Executas os estágios que contém o Build/Test. - CodeBuild
        • Opcional
        • Usa o saída do estágio anterior para disparar.
      • Deploy -> Executas os estágios que contém o Deploy/Invoke - CodeDeploy
        • Opcional
        • Usa o saída do estágio anterior para disparar.
    • Os artefatos gerados são armazenados no S3 e fica disponíveis para os estágios.. image-20230818201114814 image-20230818201114814
  • Pode se usar eventos (EventBridge) para notificar o andamento da Pipeline, podendo executar ações.
  • Caso de erro a pipe vai parar, e se pode ver os logs de erros no console.
  • Usa IAM Role (AWSCodePipelineServiceRole-*) para para acessar os recursos.
  • Para disparar a pipeline temos as opções:
    • Eventos
      • Usado muito com o codeCommit, onde este gera um evento no eventBridge que trigga a Pipeline via uma event Role.
      • No caso do GitHub usa se o CodeStar Source Connection para trigga a Pipeline.
    • Webhooks
      • Forma antiga de se triggar, nela se disponibiliza um endpoint que será estimulado e isso dispara a Pipeline.
    • Polling
      • O code Pipeline regulamente o Source em busca de alterações, caso encontre dispara a Pipeline.
      • Não é eficiente, pois fica fazendo pulling.
  • Como funciona a aprovação manual image-20230818204829999 image-20230818204829999
  • Pode rodar o codePipeline com o cloudFormation para se criar toda a infraestrutura.
    • Exemplos: criar uma Task e Service do ECS / criar lambdas em diversas contras. image-20230818212324169 image-20230818212324169

Amazon CodeGuru

Note

Contextualização:

  • Suporta Java e Python.
  • Foi treinado com milhões de repositórios open-source e Amazon.
  • Integrado com Github, Bitbucket e CodeCommit.

AWS CodeStar

  • Permite uma visualização integrada dos serviços:
    • CodeCommit. codeBuild, codeDeploy, CloudFormation, CodePipeline, CloudWatch, etc.
    • Permite fazer integrações com ferramentas de terceiros, como o Github, BitBucket, etc.
  • Permite criar pipelines rapidamentes para projetos com EC2, Lambda, BeanStalk.
  • Suporta C#, Go, Html 5, Java, Node.js. Python, Ruby.
  • Tem integração com o Jira / Github Issues, para issues tranking.
  • Pode se usar em conjunto com o Cloud9 IDE.
  • Free, se paga pelos recursos provisionado.
  • Precisa de uma IAM Role para acessar os recursos da AWS.

X-Ray

  • Permite analisar a aplicação visualmente, serviço de tracing distribuído da AWS.
  • Facilita troubleshooting de performance.
  • Ajuda a entender as dependências de serviços da aplicação (desenha o fluxo).
  • Mostra quais serviços estão com erros e o percentual das requisições que estão sendo afetadas.
  • Integra se com:
    • EC2 (on-premises), ECS, Lambda, BeanStalk, API Gateway, ELB.
    • Como configurar no beanStalk:
      • Pode se habilita através da extensões ou ao criar habilitando a flag em serviços.
      • Precisa que a role atribuída tenha acesso ao X-Ray.
    • Como configurar no ECS:
      • Usa porta 2000 e protocolo UDP,
      • Usa a variável de ambiente AWS_XRAY_DAEMON_ADDRESS para indicar o url do daemon.
      • Há 2 formas de se fazer:
        • Habilitando o daemon na instância do cluster.
        • Habilitando um contêiner que será um sidecar com o daemon.
        • Caso Fargate, usa o modelo sidecar.
          image-20230813080418098 image-20230813080418098
  • Tracer
    • Pode se habilitar para cada request ou por um percentual delas.
    • Fornecem informações extras do caminho do request.
  • Security
    • Usa IAM para autorização.
    • Guarda os dados em repouso encriptado.
  • Conceitos
    • Segment - Representa uma aplicação, cada uma tem um.
    • SubSegments - Pode se querer granularizar uma aplicação, caso a api tenha dois endpoint pode se criar uma para cada.
    • Trace - Segmentos coletados junto do começo ao fim em um request por exemplo.
    • Sampling - Em vez de coletar todas a interações se coleta apenas algumas amostras (reduz os custos).
      • Por padrão envia a primeira requisição a cada segundo e 5% das demais requisições naquele segundo.
        • reservoir - é como chamada a o percentual de dados coletados na primeira interação.
        • rate - é como é chamado a requisições adicionais.
      • Pode se definir os valores do reservoir e rate em uma regra se sampling para coletar mais ou menos dados. (Não precisa reiniciar a aplicação para isso)
        image-20230813074728747 image-20230813074728747
    • Annotations - Mapa de chave e valor usados para indexar os traces e para realizar filtros.
    • Metadata - Informações adicionais, que não são indexadas e não são usadas para filtros.
  • API
    • APIs que o daemon precisa para escrever os traces.
      image-20230813075251286 image-20230813075251286
    • APIs que o daemon precisa para ler os traces.
      image-20230813075450709 image-20230813075450709
  • Como usar image-20230813071856713 image-20230813071856713
    • Em aplicações: (Importa o SDK).
      • Se ajusta o código da aplicação para usar o SDK X-Ray.
      • Após isso o SDK ira capturar as interações (request https, para o banco de dados, para filas …).
    • Em instâncias: (Habilita a integração via daemon).
      • Se instala o daemon do X-Ray (EC2 / Lambda), ele trabalha em baixo nível coletando pacotes UDP (Linux/ Mac/ Windows).
      • Cada aplicação deve ter permissões IAM para escrever no X-Ray.
      • Pode enviar traces cross account, para isso a IAM Role deve ser configurada.
  • Problemas com X-Ray
    • Não funciona o EC2
      • Valide as IAM Roles, se estão com as permissões corretas.
      • Valide se o daemon esta rodando na instância.
    • Não funciona no Lambda
      • Valide se a IAM Execution Role esta com a permissão (AWSX-RayWriteOnlyAccess).
      • Valide se o X_Ray foi adicionado ao código Lambda.
      • Valide se esta habilitado o Lambda X-Ray Active Trancing.

Distro for Open Telemetry

image-20230813081055810 image-20230813081055810 image-20230813081129324 image-20230813081129324


Gerenciamento e governança:

CloudFormation

Note

Contextualização:

Extra

  • Pode se usar o AWS CLI para deployar um template do CloudFormation.

  • O CF trabalha com templates é composto por:

    • Format version: A versão do formato define a capacidade de um modelo.
    • Description: Quaisquer comentários sobre o seu modelo podem ser especificados na descrição.
    • Resources: Recursos (AWS) que se quer criar. - Mandatório
      • Há mais de 224 tipos de recursos diferentes. Veja todos
    • Parameters: São inputs dinâmicos que pode se passar para o template.
      • São usados para permitir o reuso dos templates.
      • Usa se a função fn::Ref para referênciar um parâmetro em qualquer lugar no template.
      • Em YML usa se o !Ref para representar a função fn::Ref. image-20230810194424083 image-20230810194424083
      • há também os Pseudos Parâmetros que são oferecido pela AWS. image-20230810195039529 image-20230810195039529
    • Mappings: Permite fazer o mapeamento de variáveis estáticas no template.
      • São valores hardcoded usados delimitar as escolhas. Ex: ambiente: dev, hml. prod. image-20230810195353883 image-20230810195353883
      • Para acessar usa se a função fn::FindInMap que no YML é !FindInMap[MapName, TopLevelKey, SecondLevelKey]. image-20230810195742359 image-20230810195742359
    • Outputs: referências de recursos que serão criados.
      • Permite exporta valores para serem usados em outras stack. Por exemplo, tem um stack do CF que cria uma VPC, pode se exportar o VPC ID e Subnets IDs para que possam ser usando em outra stack que cria os security groups.
      • Não é possível deletar uma stack, quem tem o output usado em outra stack. Ou seja não pode deletar pois há uma dependência. image-20230810200306843 image-20230810200306843
      • O campo export é opcional, e usado para renomear o item exportado, pois o nome deve ser único na região.
      • Para importar use a função fn::ImportValue que no YML é !ImportValue.
        image-20230810200607679 image-20230810200607679
    • Conditions: Lista de condições para criação de recursos.
      • Usado para limitar a criação de recursos seja por ambiente (dev. hml, prod), por região (us-east-1) , ou parâmetro, etc. image-20230810200933533 image-20230810200933533
      • Pode ser aplicadas a recursos , outputs etc.. image-20230810201241352 image-20230810201241352
      • Pode se usar as funções logicas:
        • fn::And -> YML !And
        • fn::Equals -> YML !Equals
        • fn::If -> YML !If
        • fn::Not -> YML !Not
        • fn::Or -> YML !Or
    • Metadata: Os metadados podem ser usados ​​no modelo para fornecer mais informações usando objetos JSON ou YAML.
  • Há também as Funções intrisicas

    • fn::GetAtt (!GetAtt no YML) - usada para recuperar o valor de um atributo de um recurso criado. Uso: !GetAtt [nome recurso].[nome atributo]
    • fn::Ref (!Ref no YML) - usada para referênciar o valor de parâmetros ou o id do recursos no template.
    • fn::FindInMap (!FindInMap no YML) - usada para acessar valores num mapa.
    • fn::ImportValue (!ImportValue no YML) - usada para importar outputs de outras stacks.
    • fn::Join (!Join no YML) - usada para juntar com um delimitador. Uso !Join [ delimitador, [valores separados por virgula]].
    • fn::Sub (!Join no YML) - usada para substituir variáveis por por texto. Uso !Sub ’nome variável'.
    • Condicionais - usada para avaliar condições.
      • fn::And -> YML !And
      • fn::Equals -> YML !Equals
      • fn::If -> YML !If
      • fn::Not -> YML !Not
      • fn::Or -> YML !Or
  • Processo de rollback

    • A Criação da stack falhou:
      • Será feito o rollback automático o ela será deletada.
      • É possível desabilitar o delete no rollback para realização de troubleshoot.
    • A Atualização da stack falhou:
      • Será feito o rollback automático, mas da pra ser ver os eventos do ocorrido.
      • Pode se habilitar os logs pra saber mais detalhes.
    • Na criação da stack tem as duas opções, realizar o rollback ou manter os recursos problemáticos. image-20230810203106959 image-20230810203106959
  • É possível habilitar a notificação das ações da stack via tópico SNS. image-20230810203717530 image-20230810203717530

  • Tem o CF Drift que mostra qual foi a alteração que o recurso criado pela Stack sofreu.

    • Para usa-lo vá até a Stack e em opções use o detect Drift
  • A Stack police serve para limitar as ações que uma Stack pode fazer, como por exemplos, quais recursos que pode criar ou atualizar.

    • Pode ser usada por organizações para evitar a criação de recurso ou atualização de recursos.
    • Ou para evitar atualizações acidentais, como por exemplo remoção de recurso do banco de dados de produção.

Tópicos avançados

  • StackSets
    • Permite criar, deletar, atualizar stacks em múltiplas contas e regiões com uma única operação.
    • Administradores de contas podem criar StackSets.
    • Contas de confiança (Trusted accounts) também podem criar, atualizar e atualizar stacks de um StackSet.
    • Se atualizar um StackSet todas as contas será atualizado.
  • ChangeSets
    • Usados para verificar qual alterações serão aplicadas.
    • Não diz se a atualização será um sucesso, apenas mostra quais são as alterações. image-20230810204031080 image-20230810204031080
  • Nested Stacks
    • Permite criar stack usando outras stack (stack aninhadas).
    • Usado quando se que aproveitar uma stack já pronta.
    • Exemplo a stack que cria ALB, pode ser usada em vários lugares, só alterando os parâmetros. Ela pode usar uma stack que cria o Security Groups.
    • Qual a diferença entre cross e Nested Stacks
      • Cross Stack
        • Usada para stack com diferente ciclos de vida.
        • Usa Output export e a fn::ImportValues.
        • Exemplo se cria uma VPC numa stack e o VPC ID será usado por várias outras Stacks.
      • Nested Stack
        • Usado para componentes que será reutilizados.
        • Exemplo: Stack de configurações de um ALB.
        • Não é uma stack compartilhada, as stack compõem um stack maior.
          image-20230810205136667 image-20230810205136667

AWS CloudTrail

Note

Contextualização:


SDK

  • O AWS CLI usa a SDK do Python (boto3).
  • Caso não sete uma região de default é a us-east-1.

AWS CDK

Note

Contextualização:

  • Permite definir a infra estrutura em uma linguagem de programação.
    • Em: Java | Python | JavaScript / TypScript | .Net.
  • Contém a maioria dos recursos da AWS como construtores, onde se chama alterando apenas os campos variaveis.
  • Caso não encontre o recurso no construtores da AWS, pode se achar no Constructor Hub, onde empresas disponibilizam como se fosse libs com outras construções para os recursos.
  • O código é compilado para um template do CloudFormation.
  • Bom pois como o CDK se pode validar o template programaticamente.
  • Diferentimento do SAM, que é focado apenas em aplicações Serverless. Com o CDK pode se criar qualquer recurso.
  • Os contrutores são divididos em nivels:
    • Nivel 1: CFN Resource - Construtor simples, deve informar todos os atribuitos.
    • Nivel 2: Construtor de alto nivel, não precisa informar todos os atribuitos para criar um recurso.
    • Nivel 3: Construtores que permite criar mais de um recurso que estão interligados (isso para arquiteturas padrões), ex: lambda que pode conter um api gateway como trigger.
  • Principais comandos: image-20230819104243582 image-20230819104243582
    • Entenda o bootstrapping
      image-20230819104504372 image-20230819104504372
  • Para testar usa se o CDK Assertion Module. image-20230819104642772 image-20230819104642772

Amazon CloudWatch

Note

Contextualização:

Visão extra - desenvolvedor

  • métricas
    • Métricas pertencem a um namespaces e contém dimensões (atributos, exemplo: ambiente, id da instância …).
      • Pode se ter até 30 dimensões diferente para cada métrica.
    • Para criar uma métrica customizadas use a API PutMetricData passando os atribuídos (dimensões).
    • Para configurar o tempo de resolução (período de coleta) usa a API StorageResolution podendo ser:
      • Standard -> 1 Minutos.
      • High Resolution -> 1|5|10|30 segundos - tem um alto custo.
    • Pode se enviar métricas de até 2 semanas atrás ou 2 horas no futuro. Sem que haja rejeição do cloudWatch.
  • Logs
    • Tem o CloudWatch Logs Insights - que permite realizar queries nos logs.
      • Pode se realizar filtros baseados em condições, calcular e realizar agregações estáticas, ordenar por eventos, limitar números de linhas retornadas.
      • Permite buscar em múltiplos logs grupos.
    • Pode se criar métricas customizadas em cima dos filtros do logs (Metric Filter).
      • Podem ser usadas para disparar alarmes.
      • Só geram dados com logs gerados a partir da hora que foi configurada.
        image-20230812201334076 image-20230812201334076
  • Alarmes
    • Permite criar alarmes compostos, que são agrupamentos de mais de um alarmes usando as condições AND ou OR.
    • Pode se testar se um alarme esta funcionado usando CLI.
  • EventBridge
    • Para da acesso aos event buses é necessário ter um police.
      image-20230812205210746 image-20230812205210746
    • É possível definir uma estrutura para o evento (schema , tipo Avro), ou usar algum que já existe, com ele é possível definir o formato do evento que vai ser disparado por um SDK.
    • Fluxo
      • Se cria o event Bus que vai receber os eventos e vai encaminhar para um recurso ou um event Role.
      • Se cria um event role que vai configurar como vai funcionar a entrada de dados de um event bus.
  • Criptografia
    • Pode se criptografar os logs (log group) usando KMS, apenas via API usando:
    • associate-kms-key - se o log group já existir.
    • create-log-group - caso o log group não exista.
    • Necessario adicionar IAM Police para que o Cloud Watch possa acessar o KMS.

AWS CLI

Info

Pré requisitos:

  • Instalar o AWS CLI install.
  • Criar um Access keys para o usuário em IAM\Users\NOME_USER.
    • vá até a aba security credentials e depois Access keys.
  • Para configurar o awscli use o comando:
aws configure
# preencha os itens com os dados do access key.

# serve para configurar novos profiles (outra conta)
aws configure --profile <nome_novo_profile>
  • Após isso o awscli já estará configurado.
# use o comando para testa e listar o usuários
aws iam list-user

# use o comando para testa e listar o usuários pra um profile e
aws iam list-user --profile <nome_profile>

MFA com CLI

  • Primeiro é necessário ter o um dispositivo configurado no usuário que se deseja usar.
  • Para usar MFA é necessário criar uma sessão temporária, usando a API STS GetSessionToken.
aws sts get-session-token --serial-number <arn-do-dispositivo-mfa> --token-code <codigo-mfa> --duration-seconds 3600
  • Isso vai retornar credenciais temporárias.
  • Após isso é necessário configurar um profile com esses dados.
    • Necessário adicionar o token de sessão manualmente no arquivo de configuração.
    • Recomendo criar um script que recebe o token e atualiza o profile.

AWS Limits (Quotas)

  • API Rate Limits
    • Descreve quantas chamadas se pode fazer nas APIs.
    • exemplos:
      • a API describeInstances do ec2 é de 100 chamadas por segundo.
      • a API getObjects do s3 é de 5500 por segundo por prefix.
    • Para erros intermitentes é recomendado implementar o exponential backoff.
    • Para erros consistente (limite ultrapassado sempre) recomenda-se solicitar um aumento no limite no throttling.
  • Service Quotas - Limites de serviços
    • Descreve os limites dos serviços.
    • Pode se usar a API de contas para aumentar os limites ou abir um abir um ticket junto a AWS.

Exponential Backoff

  • Aplica-se a todos o serviços AWS.
  • Se estiver recebendo o erro ThrottlingException de forma intermitente.
  • É um mecanismo de retry que já vem configurado nas chamadas de API via SDK.
  • Mas caso use CLI, deve implementar caso necessário.
  • Quais tipo de erros deve se usar o retry? apenas com erros 5xx e throttling. image-20230725064736484 image-20230725064736484

Credentials Provider chain

Descreve a sequência que se usa para recuperar os acessos ao recursos da AWS.

  • CLI image-20230725065043214 image-20230725065043214
  • SDK image-20230725065206292 image-20230725065206292

AWS Systems Manager

Note

Contextualização:


Redes e entrega de conteúdo:

API Gateway

Note

Contextualização:

Visão extra - desenvolvedor

  • Permite importa e exporta APIs do formato Swagger / Open API.
  • Se integra com:
    • Lambda, Http, AWS Service (para usar Authentication)
  • Stage Variables
    • Stage são pode ser considerados ambientes de implantação.
    • Eles pode ter variáveis de ambiente que são usada para configurar o redirecionamento do Gateway.
    • Além de outras configurações, como timeout, logs, histórico de deploy, entre outras.
    • Caso sejam lambda eles são passados como “context”.
    • Para acessar usa-se ${stageVariable.nomeVariavel}.
    • Integration type
      • Mock -> retorna um valor mockado sempre, sem repassar para o backend.
      • Http / AWS (Lambda e Service) -> tem que configurar o request e o response.
        • Configura os dados enviado usando Mapeamento via templates para request e o response.
          • Isso permite modificar query parameters, body, e headers.
          • Usa Velocity Template Language (VTL)
          • Permite filtrar e modificar o response.
          • Permite converter json para XML (soap) ou vise e versa.
      • AWS_PROXY -> Lambda Proxy - os dados do request são enviado ao Lambda e ela fica responsável por tratar o request e o response.
        • Não há mapeamento do body, headers ….
          image-20230816210946923 image-20230816210946923
      • HTTP_PROXY -> Não há mapeamento, a requisição é passada ao backend. O retorno só redirecionado.
        • Permite adicionar headers tando no request repassado ao backend.
  • Usage Plans e API Keys
    • Há uma limitação de 10000 RPS (request por segundo para toda as APIs da conta) - soft limit. Para evitar o consumo total recomenta o uso de Usage Plans.
    • Permite contabilizar o uso da API pelos clientes, podendo estabelecer cotas de uso (throttle limites).
    • Usa se o API Key para linkar a aplicação chamadora com o plano de uso.
    • pode se aplicados a stage e métodos.
    • Como configurar
      • Cria se ou importa a API key das aplicações consumidoras.
      • Cria se o Plano de uso con throttle e cotas de uso,
      • Associa a API Key ao Plano de uso.
      • O cliente deve passar o header x-api-key na requisição.
  • Métricas coletadas
    • cacheHitCount e CacheMissCount - dados de eficiência do cache.
    • Count - Total de requests.
    • IntegrationLatency - Latência da integração com o Backend.
    • Latency - Tempo desde o recebimento da request até o retorno para o cliente (validação autorização e cache e integração com o backend).
    • 4xxError - erro do lado do cliente.
    • 5xxErros - Erros do lado do servidor.
  • Diferença entre HTTP APi e REST API image-20230817063033512 image-20230817063033512
  • WebSocket
    • Para aplicações bidirecionais com webSocket.
    • Usado pra chats, games ou aplicações que precisa manter conexão abertas.
    • Armazena o ConnectionId no DynamoDB que será usado para futuras interações
      image-20230817063740110 image-20230817063740110
    • exemplo
      image-20230817063810397 image-20230817063810397
    • Como funciona o retorno da comunicação.
      • Tem se um callback, onde pode ser enviadas mensagens de respostas.
      • Aceita as operações Get, Post, Delete.
        image-20230817063923162 image-20230817063923162
    • Roteamento das requisições
      image-20230817064204981 image-20230817064204981

CloudFront

Note

Contextualização:

Para que o CloudFront possa armazenar o cache ele gera a cache key que:

  • Por default é formada o hostname + path do recurso.
  • Mas é possível adicionar outros itens na formação dessa chave, sendo:
    • HTTP Headers - nome, whitelist
    • Cookies - nome, whitelist, include all except , all
    • Queries strings - nome, whitelist, include all except , all
  • Todos os itens adicionado a chave são enviados automaticamente para a origem caso não encontre no cache.
  • Mas é possível adicionar esses itens apenas na origem.
    • Cache policy vs Origin Request policy image-20230731061417341 image-20230731061417341
  • Tem uma tela que permite invalidar o cache. Classes de cobrança
  • all - all regions - engloba todas as edge locations e tem melhor performance.
  • 200 - most regions - exclui as regiões mas caras.
  • 100 - as regiões mais baratas. image-20230731064707171 image-20230731064707171 Logs em tempo real image-20230731065011189 image-20230731065011189

Route 53

Note

Contextualização:

  • Terminologia

image-20230724061118595 image-20230724061118595


VPC

Note

Não cai muitas coisas sobre isso na prova da certificação develop, mas é importante conhecer os conceitos.

image-20230724075905032 image-20230724075905032

Leitura recomendada:


Segurança, identidade e conformidade:


AWS Certificate Manager

Note

Contextualização:


Amazon Cognito

Note

Contextualização:

  • Permite que usuários de fora da AWS possa ter acesso a recurso da AWS.
  • Ha dois produtos disponiveis:
  • Suporta muitos usuários.
  • Cognito user pools (CUP)
    • Solução AWS, banco de dados para cadastro de usuário para mobile ou web app.
    • Ajuda apenas na autenticação não na autorização.
    • Integrado com API Gateway e Load Balancer, para autenticação.
    • Permite a criação de login simples (email ( ou user) e senha).
    • Fornece reset de senha e validação de email e telefone.
    • Fornece MFA.
      • Pode ser usado com autenticação adaptativa, onde se caso se suspeite da tentativa (pela localização, IP ou dispositivo) de login se solicita o MFA.
    • Permite usar autenticação externas (de terceiros , Google, Facebook).
    • Gerar JWT para logins.
      image-20230819113213870 image-20230819113213870
    • Permite usar SES para enviar emails.
    • Tem um UI propria para cadastro e reset de senha.
      • É possivel customizá-la.
      • E possivel fornece sua própria interface de login.
    • Pode se usar um domínio customizado para a API / URL de login.
      • Para isso é necessário criar um Certificado no ACM.
    • Tem a opção de realizar um callback em caso de login sucesso. image-20230819111427615 image-20230819111427615
    • Tem a capacidade de triggar uma Lambda para realizar ações como validação, migração ou autenticação. image-20230819112618602 image-20230819112618602
  • Cognito identity pools (Identidade Federada)
    • Provem acesso temporário a recursos da AWS. Usa o STS para gerar credenciais tempórarias.
    • Permite usar autenticação externas (de terceiros , Google, Facebook).
    • Permite usar provider como OpenID e SAML.
    • Permite usuários anônimos (usuários não autenticados).
    • Usa IAM Police para configurar quais acesso o usuário terá. image-20230819114641872 image-20230819114641872
    • Diferença entre ele o o Cognito Users Pools.
      • No CUP todos os usuários ficam armazenados no banco interno.
      • O CUP se integra o outro providers via federação, ou seja, serve apenas para recuperar os dados para salvar na base de dados. image-20230819114818298 image-20230819114818298 image-20230819115605419 image-20230819115605419

IAM

  • Escopo global, controle de acessos.
  • Tem como base o mínimo privilegio possível.
  • Criação de usuário e grupos de usuários, grupos não podem conter outros grupos.
  • Se atribui políticas de acesso (IAM Police) ao grupo, que vão dar acesso a todos os usuário daquele grupo.
  • Políticas de acesso (permissões). image-20230704063959224 image-20230704063959224
    • Escrita em json.
    • Seguir regra de menor privilégio.
    • A validação de acesso e feito a cada acesso, de forma automática.
    • Podem ser do tipo:
      • identity-based - Política que são destinados a usuário / grupos e rules
      • resource-based - Políticas que são atribuídas a recursos, para da acesso a outro recursos.
  • Access keys - usadas para dar acesso ao AWS CLI e ao AWS SDK.
    • É possível usar um serviço de shell na nuvem (cloud shell) que gera um CLI sem a necessidade de configurar access key.
  • Roles (funções)
    • Usadas para dar acessos de recursos a recurso (acesso ao S3 por um EC2)
    • Criação de roles de dão acesso a recurso sem ser necessário atribuir ao um usuário ou grupo
    • Podem ser assumidas por recursos ou usuários federados ou usuário de outras contas AWS.
  • Dentro do IAM temos:
    • iam user - Usuário comum.
    • federated user - usuário de fora da organização, usuário do Facebook por exemplo.
    • iam role - permissões que são dadas a recurso, tipo EC2 para acessa um S3.
    • identity provider (idp) - Permite customizado acesso provider de terceiros e liberara acesso via token de acesso do STS.
  • IAM Conditions
    • Permite adicionar condições nas políticas de acessos AWS. conditions conditions
  • IAM Permission Boundaries (limite de permissões)
    • Quando se criar usuário ou Roles e possível dar permissão genéricas, tipo de administrador , e setar um limite para essas permissões, exemplo o cara é administrado apenas nos recursos do S3.
    • SCP (Service control policies ). limite limite
  • Lógica da avaliação de política Lógica da avaliação de política - AWS Identity and Access Management Lógica da avaliação de política - AWS Identity and Access Management

MFA (multi factory atutenticator)

  • combinação de uma senha que você conhece com um dispositivo que é seu
- Há dois via sofware (dispositivo MFA virtual, Chave de chegurança U2F (ex: YUbiKey))
- Há uma opção de Hardware (ex: token Gemalto)

IAM Security Tools

  • IAM Credencial Report (Account level) -> Lista todas as contas de usuário e o status de cada uma.
  • IAM Access Advisor -> Mostras os serviços que o usuário tem acesso e a ultima vez que o mesmo acessou.

Responsabilidade compartilhada

a segurança na cloud é compartilhada e a AWS e nós temos responsabilidades para garantir a conformidade e segurança image-20230705054643236 image-20230705054643236


KMS

Note

Contextualização:

Visão extra - desenvolvedor

  • Todas as chamadas são logadas no CloudTrail.
  • Copiando snapshot criptografado entre regiões. image-20230820083428692 image-20230820083428692
  • Tem uma IAM police semelhante ao S3. A unica diferença é que se pode tem uma condição IAM, onde se informa qual conta vai chamar e via qual serviço.
  • Como funciona: image-20230820085154740 image-20230820085154740
  • Isso para dados com tamanho até 4KB. Para maiores deve se usa o Envelope Encrytion que seria a API GenarateDataKey.
    • Nesse a computação para criptografar e descritografar é feita do lado do cliente.
    • Para criptografar:
      image-20230820085535921 image-20230820085535921
    • Para Descriptografar
      image-20230820085703643 image-20230820085703643
    • Por se complexo, geralmente usa-se o SDK para realizar essas operações.
      • Este tem uma funcionalidade de cache do Data Key. Usado para diminuir a quantidade de chamada aos KMS.
  • APIs do KMS
    • Encrypt -> usada para criptografar objetos de até 4KB direto no KMS.
    • GenerateDataKey -> Usada para gerar uma Data Key Simétrica unica (DEK), que vai ser usada pra criptografar objetos maiores que 4kb.
      • Retorna a Data Key Simétrica e texto
      • E ele criptografado com a chave que foi chamada na API.
  • GenerateDataKeyWithoutPlaintext -> Semelhante a anterior, a unica diferença e que não retorna a Data Key Simétrica e texto, sendo necessário descriptografar depois
    • É mais demorado, pois precisa fazer duas operações.
  • Decypt -> usada para descriptografar objetos de até 4KB direto no KMS (usado para descriptografar a Data Key Simétrica caso use a API GenerateDataKeyWithoutPlaintext ).
  • GenerateRandom -> gerar uma Byte String randômica.
  • Limites do KMS
    image-20230820091745673 image-20230820091745673
    • Cotas
      • É um soft limit, pode se aumentar através da API e aumento de contas ou através do AWS Support.
      • Para chamadas de criptografia, é compartilhado a mesma cota.
        • Para resolver isso use a API GenerateDataKey via SDK, pois ela cachea o DEK por um tempo.
      • Caso exceda as cotas vai tomar um erro do tipo ThrottlingException.
        • Use Exponetional Backoff para resolver o problema.
  • S3 Bucket Key
    • Usado para reduzir a chamada ao KMS. Quando não se usa uma chame que não é proprietaria da AWS. image-20230820093145303 image-20230820093145303

AWS STS

Note

Contextualização:

  • Permite acesso temporário aos recursos de 15 minutos a até 1 hora.

  • Para adicionar MFA precisa adicionar a IAM police uma IAM condition chamada aws:MultiFactorAuthPresent:true

    • A API GetSessionToken vai retorna o Access ID, Secret Key e o Session Token.

AWS SSM Parameter Store

Note

Contextualização:

  • Apis
    • GetParameters - Retorna os parametros de acordo o o nome passado na flag –names (pode ser mais de um).
      • Pode se usar a flag –with-decription para retonar o valor parametros com valor descriptografado.
    • GetParametersByPath - Retorna os todos os parametros contidos no path passado na flag –path.
      • Pode se usar a flag –with-decription para retonar o valor parametros com valor descriptografado.
      • Pode se usar o flag –recursive para retonar recursivamente os parametro dentro do path.
  • Caso use a flag –with-decription é necesssario ter a permissão do KMS de Decypt do KMS.

AWS Secrets Manager

Note

Contextualização:

  • Quando criar banco de dados RDS e Aurora via CloudFormation pode se usar a opção ManageMasterUserPasseorg que vai criar os segregos do banco automaticamente com até esquema de rotação.

AWS Nitro Enclaves

image-20230820101445359 image-20230820101445359

image-20230820101512328 image-20230820101512328


Armazenamento:

Note

Contextualização:

Veja direto o que é:


S3

Note

Contextualização:

Uma questão comum quanto ao S3 é como melhorar o tempo de busca de arquivos, a arquitetura que melhora resolve esse problema seria criar um index no DynamoDB com os metadados e tags do arquivos e realizar as busca no DynamoDB e apenas recuperar os arquivos no S3.

S3 - Encryption para prova

  • SSE-S3 - Criptografa os objetos do S3 usando chave gerenciada pela AWS (AES-256).
    • Usa o header “X-amz-server-side-encryption”: “AES256”.
  • SSE-KMS - Criptografa os objetos do S3 usando chaves criadas no KMS.
    • As chamadas de uso do KMS é logado no cloudtrail.
    • Usa o header “X-amz-server-side-encryption”: “aws:kms”.
    • Usa a api GenerateDataKey para criptografar.
    • Tem limitação (quotas), pode não ser uma boa ideia usar se tiver muitas requisições, pois a cada chamada será consumido parte da cota, aumentando assim o custo, sendo melhor usar a SSE-S3
    • Caso esteja usando essa criptografia, se o bucket for publico, o usuário não vai conseguir ver os objetos, pois ele não vai ter acesso a chave.
    • Para conseguir realizar uploads no bucket, precisa ter acesso a permissão (kms:GenerateDataKey) caso contrario não vai conseguir.
  • SSE-C - Criptografa os objetos do S3 usando a chave gerenciada pelo usuário, quando se usa por exemplo o Cloud HSM.
  • Criptografia Client-Side - Quando o usuário criptografa os dados antes de enviar ao S3.
  • É possível criar uma bucket police para forçar o uso do SSL nas requisições com a condição aws:secureTransport.
  • também é possível criar polices para bloquear uploads de arquivos que não tenha um tipo de criptografia, usando uma police que bloqueia com as condições s3:x-amz-server-side-encryption ou s3:x-amz-server-side-encryption-customer-algorithm.

image-20230728061932567 image-20230728061932567

Outros serviços

Macie

Note

Contextualização:


SES

Note

Contextualização:


App Config

  • Permite configurar, validar e deployar configurações dinamicas.
  • A ideia e tera as configuração da aplicação fora do codigo, evitando que se precise muda-la, ou reemplanta-la.
  • Usado para feature flags, application tuning, lista de bloqueio …
  • Usado com aplicação que rodam no EC2, Lambda, EKS, ECS.
  • As configuraçãoes podem ser armazenadas no S3, SSM documentos, ou paramter store.
  • Usa Json Schema ou Lambda para as validações

image-20230820105147366 image-20230820105147366

Subsections of DevOps Notes

Subsections of Curso Kubernetes

Conteúdo


Entendendo

image-20211118205347741 image-20211118205347741

Cluster

Um cluster é composto por:

  • plano de controle - gerencia os serviços dentro do host.
  • scheduler - Resp. por subir e os serviços.
  • API Server - resp pela comunicação ente nós e master.
  • Node Controller - Resp. por manter o estado dentro do cluster store.
  • Cluster store (etcd) - Armazenamentos do dados do cluster.

image-20211118205620779 image-20211118205620779

  • Exemplo de um Cluster

image-20211118205700816 image-20211118205700816

  • Master e nodes

image-20211118205722849 image-20211118205722849

  • Estrutura

image-20211118205740206 image-20211118205740206

API

  • Gerencia os recursos do cluster (criar pod, deletera Replica Set, criar volume ..)
  • Para usar manipular os recusos do kuberntes, sempre vamos usar a api
  • Para usar a api usamos o kubctl.

image-20211118205810711 image-20211118205810711

Pods

  • Capsula que pode conter 1 ou mais containers.
  • Sempre que se cria um pod temos um endereço ip para aquele pod, e como um pod pode ter varios container.
  • Nesse caso não podemos ter mais dois container com a mesma porta dentro de um pod.

image-20211118210009141 image-20211118210009141

  • Caso um pode falhe (ou seja todos os container estejam falhados), o kubernetes vai matá-lo e substituí-lo por outro, e não temos controle que qual ip sera atribuido a esse novo pod.

Rolando kubernets local

Para rodar o kubernets localmente, usamos o minikube, para baixa-lo acesse:

link: https://minikube.sigs.k8s.io/docs/start/

Instalação no Linux

## Arquivo de configuração



## Minikube
## link: https://minikube.sigs.k8s.io/docs/start/

### Install minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

### Start
minikube start

### Use
minikube kubectl -- get nodes

### Create alias dentro do .bashrc
alias kubectl="minikube kubectl --"

#-----------------------------------------------------------------------------------------------
## há a opç


#-----------------------------------------------------------------------------------------------
# Listando contextos possiveis
cat ~/.kube/config 
kubcetl config get-cluster

# setar um contexto
kubectl cluster-info --context <contexto>
kubcetl config use-context <contexto>

# Setando o Kind como cluster padrão no kubctl
kubectl cluster-info --context kind-kind
kubcetl config use-context kind-kind

# Setando o minikube como cluster padrão no kubctl
kubectl cluster-info --context  minikube

# Setar namespace padrão
kubectl config set-context --current --namespace=<namespace>
kubectl config set-context --current --namespace=ucontas-app


#-----------------------------------------------------------------------------------------------
### KUBERNETES (KUBECTL)
alias k="kubectl"
alias ka="kubectl apply -f"
alias kl="kubectl logs"
alias kdd="kubectl describe deployment"
alias kdp="kubectl describe pod"
alias kds="kubectl describe service"
alias kei="kubectl exec -it"
alias kgd="kubectl get deployments"
alias kgp="kubectl get pods"
alias kgs="kubectl get services"
alias krrd="kubectl rollout restart deployment"
alias kdad="kubectl delete --all deployments"
alias kdap="kubectl delete --all pods"
alias kdas="kubectl delete --all services"

### DOCKER
alias d="docker"
alias dc="docker compose"
alias di="docker images"
alias dl="docker logs"
alias db="docker build -t"
alias dps="docker ps"
alias dcu="docker compose up"
alias dcc="docker compose config"
alias drc="docker rm $(docker ps -a -q)"
alias dsa="docker kill $(docker ps -q)"
alias dsp="docker system prune -a --volumes"
alias dcps="docker compose ps"
alias dcenv="docker compose --env-file"
alias usedd="docker context use docker-desktop"
alias usede="docker context use default"

### Dasboard
minikube dashboard

Comandos uteis

Segue alguns comandos uteis usados

# Recuperas os nodes criados
kubectl get nodes

# abre serviços
minikube service <nome do serviço>

# Listar pods 
kubectl get pods

# listar pods com detalhes
kubctl get pods -o wide

# Acompanhar status pod 
kubectl get pods --watch


# Criar novo pod
kubectl run <nome-pode> --image=<imagem>:<versão>
# - ex:
kubectl run nginx-pod --image=nginx:latest

# Descrever informações do pod
kubectl describe <nome-pode>
# - ex
kubectl describe pod nginx-pod

# Editar pod
kubectl edit pod <nome-pod>
kubectl edit pod nginx-pod

# deletar pod
kubectl delete pod <noime-pod>
kubectl delete pod  nginx-pod
# deletar todos os pods
kubectl delete pods --all


# Entra no container com o modo interativo
kubectl exec -it <pod> -- bash

# Entra no container caso tenha mais de um no pod
kubectl exec -it <pod> --container <container-name> -- bash

# Para sair do container em uso
crtl + D

# Acessando api do kubenetes
kubectl proxy --porta=8085

# acesse no browser na porta definida
localhost:8085/apis


## Logs
kubectl logs -f --selector <label-key-value>  -n <namespace>
#kubectl logs --selector app=ucontas-api  -n ucontas-app

Criando recurso de forma declarativa


Criando pods

Para criar pods de forma declarativa, primerio crie um arquivo usando a extenção .yaml

  • Semelhante o abaixo
apiVersion: v1  # define a versão da api do kubernetes
kind: pod       # define o tipo de recurso criado 
metadata:       # Meta dados que podesm ser adicionado ao pod
  name: uni-pod  # nome do pod
  labels:
    app: segundo-pod
spec:               # epecificação do pod
  containers:       # containers que compoe o pod
    - name: uni-nginx-container   # nome do container
      image: nginx:latest         # imagem usada para criar o container
    - name: uni-http-container
      image: httpd:alpine
    - name: db-noticias-container
      image: aluracursos/mysql-db:1
      env:
        - name: "MYSQL_ROOT_PASSWORD"
          value: "root"
        - name: "MYSQL_DATABASE"
          value: "test_db"
        - name: "MYSQL_USER"
          value: "user"
       ports: 
         - containerPort: 3306
  • Comandos
# criado container
kubectl apply -f <nome-doa-arquivo>.yaml

# delete com arquivo deployment
kubctl delete -f <file>

Criando seviços (svc)

São abstrações para expor aplicações executando em um ou mais pods, que podem prover ips’s fixos para comunicação, alem de DNS e balanciamento de carga.

Podem ser dos tipos:

  • ClusterIP
  • NodePort
  • LoadBalancer

Comandos

# Criando um novo servide
kubectl apply -f <file-do-svc>

# listando services criados
kubectl get services 
# ou
kubectl get svc

# ver os detalhes dos services
kubectl describe service <nome-do-svc>
# ou
kubectl describe svc <nome-do-serviço>

# Deletar serviços
kubectl delete svc <service--name>
# deletar todos os pods
kubectl delete svc --all

Cluster de ips

Serve para fazer a cominucação entre diferentes pods dentro de um mesmo cluster. Usa labels para redirecionar o tafrico para os pods.

Kubernetes - Cluster IP vs Node-Port - GeeksforGeeks Kubernetes - Cluster IP vs Node-Port - GeeksforGeeks

ex:

apiVersion: v1
kind: Service
metadata:
  name: svc-pod-2
spec:
  type: ClusterIP
  selector:
    app: segundo-pod # seletor de pod
  ports:
  - name: svc-pod-io
    port: 80  # portra entrada - service
    targetPort: 80 # porta do container / caso seja igual a port, não precisa informar
    protocol: TCP

Neste exemplo, cria um cluster ip que gerar um ip fixo para o pod com a seletor (label) app: segundo-po

  • Para ver detalhes do service use:
# ver os detalhes dos services
kubectl get service <nome-do-svc>
kubectl describe service <nome-do-svc>

ex:

image-20211120085314918 image-20211120085314918

image-20211120085353313 image-20211120085353313


NodePort

Usado para permitir a comunicação com o mundo externo

apiVersion: v1
kind: Service
metadata:
  name: svc-pod-1
spec:
  type: NodePort
  selector:
    app: primeiro-pod
  ports:
  - port: 80 # porta do meu service
    targetPort: 80 # porta do container / caso seja igual a port, não precisa informar
    nodePort: 30001 # porta de acesso externo tem que esta no range 30000 a 32767
  • Para ver o ip para acesso dentro do node dê o comando:
# Mostra as configurações de forma extendida
kubeclt get svc -o wide

ex:

image-20211120094110671 image-20211120094110671

  • Para acessar o pod usando o nodePort dentro do cluster use:

    curl 10.106.182.107:80

  • Para acessa externamente - linux

    • Se tiver no linux, para recuperar o ip mapeado para o cluster

      kubectl get node -o wide

      ex:

      image-20211120093342399 image-20211120093342399

      • Depois é so acessar http://192.168.49.2:30001/

      image-20211120094146342 image-20211120094146342

  • Para acessa externamente - windows

    Use localhost:30001


Loadbalance

Nada mais é do que um NodePort que permite a distribuição do trafico entres os pods de um container.

Ele é entregado com o serviço de Kuberbetes das nuvens, nele voce criar um arquivo e diz quais são os seletores e a partir dai o serviços de kubernets do provedor da nuvem gera um a instraestrutura de um loadbalance para que possamos acessa-los via web.

  • Por serem um Load Balancer, também são um NodePort e ClusterIP ao mesmo tempo.
  • Utilizam automaticamente os balanceadores de carga de cloud providers.

image-20211120094541264 image-20211120094541264

  • Exemplo de arquivo
apiVersion: v1
kind: Service
metadata:
  name: svc-lb-app-1
spec:
  type: LoadBalancer
  selector:
    app: primeiro-pod
  ports:
  - port: 20
    targetPort: 80
  • Dentro do provedor para executar a use:
kubectl apply -f <nome-arquivo>
  • Para ver o status use:
 kubectl get svc -o wide
 # ou
  kubectl describe svc <svc-name>

image-20211120095457188 image-20211120095457188

Repare que o EXTERNAL-IP esta vazio, pois executamos localmente, se fosse num provedor, seria preenchiado com um ip para acesso web, repare também que foi gerado uma porta para acesso externo dentro da rede onde o cluster esta, semelhante ao NodePort.


ConfigMap

Permite extrair as configuração especificas para tornar um pod genérico e reutilizável, com ele é possível reutilizar configurações e varios pods

apiVersion: v1
kind: ConfigMap
metadata:
  name: db-config-map
data:
  MYSQL_ROOT_PASSWORD: root
  MYSQL_DATABASE: test_db
  MYSQL_USER: user
  MYSQL_PASSWORD: pass    
  • Para implantar use
kubectl apply -f <nome-arquivo>
  • Para listar o configmap use:
kubectl get configmap

ex:

image-20211120105736428 image-20211120105736428

  • Para descrever o configmap use:

    kubectl describe configmap <nome-config-map>

ex:

image-20211120110007635 image-20211120110007635


Importando o configMap na definição de um pod

Há duas dorma de se fazer a importação

Por variaveis

Mais verboso, e util quando se tem varios configMaps compartilhado

apiVersion: v1
kind: Pod
metadata:
  name: db-noticias
  labels:
    app: db-noticias
spec:
  containers:
  - name: db-noticias-container
    image: aluracursos/mysql-db:1
    env:
      - name: "MYSQL_ROOT_PASSWORD"
        valueFrom:
          configMapKeyRef:
            name: db-config-map
            key: MYSQL_ROOT_PASSWORD
      - name: "MYSQL_DATABASE"        
        valueFrom:
          configMapKeyRef:
            name: db-config-map
            key: MYSQL_DATABASE
      - name: "MYSQL_USER"        
        valueFrom:
          configMapKeyRef:
            name: db-config-map
            key: MYSQL_USER
      - name: "MYSQL_PASSWORD"        
        valueFrom:
          configMapKeyRef:
            name: db-config-map
            key: MYSQL_PASSWORD
    resources:
      limits:
        memory: "128Mi"
        cpu: "500m"
    ports: 
      - containerPort: 3306    

ex:

image-20211120110649603 image-20211120110649603

Pelo arquivo completo

Menos verboso, usado quando o config map tem a maioria ou todas a variaveis (configurações) que o pod ira usar

apiVersion: v1
kind: Pod
metadata:
  name: db-noticias
  labels:
    app: db-noticias
spec:
  containers:
  - name: db-noticias-container
    image: aluracursos/mysql-db:1
    envFrom:
      - configMapRef:
          name: db-config-map            
    resources:
      limits:
        memory: "128Mi"
        cpu: "500m"
    ports: 
      - containerPort: 3306

ex:

image-20211120111517650 image-20211120111517650


Recursos do kubernetes

Arquivos de exemplo dentro da pasta workspace/projeto-avançado

  • Tipos de recuros que vamos ver:
  • recursos de disponibilidade
    • ReplicasSets
    • Deployments
  • recursos de armazenamento
    • Volumes
    • Persistents Volumes
    • Persistent Volume Claim
    • Storage Classes

Recursos de disponibilidade


img img

ReplicaSet

image-20211122060546098 image-20211122060546098

Estrutura que pode encapsular um ou mais pods, usada quando se quer manter alta disponibilidade, pois se um pod cair o replicaSet sobe outro automaticamente.

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: portal-noticias-replicaset
spec:
  template: # template a ser usado pelo replicaset
    metadata:
      name: portal-noticias
      labels: 
        app: portal-noticias # label usada para identificar os pods
    spec:
      containers:
        - name: portal-noticias-container
          image: aluracursos/portal-noticias:1
          ports:
            - containerPort: 80
          envFrom:
            - configMapRef:
                name: portal-configmap
  replicas: 3 # numeros de replicas que deve existir
  selector: # serve pra dizer o kubernetes que ele deve gerenciar os pods com essa label
    matchLabels:
      app: portal-noticias 
  • Como definidos tres replicas, ao se verificar os pods veremos:

image-20211122055649330 image-20211122055649330

caso delete algum pod do replicaSet ele automaticamente recriará um novo.

  • Para ver os replicasSets criado os o comando:
kubectl get replicasset
kubectl get rs
# ou se quiser mais detalhes
kubectl describe replicaset <nome>
kubectl describe rs <nome>

Deployments

image-20211122060612288 image-20211122060612288

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-pod  # deve ser igual ao labels do metadata do template
  template:
    metadata:
      labels:
        app: nginx-pod 
    spec:
      containers:
      - name: nginx-container
        image: nginx:stable
        resources:
          limits:
            memory: "128Mi"
            cpu: "500m"
        ports:
        - containerPort: 80
  • Ao executar, será criado um replicaset com tres pods, semelhante ao visto anteriores:
kubectl apply -f <nome-arquivo>    

ex:

image-20211122061513408 image-20211122061513408

  • Para listar e ver detalhes do deplyment use:
kubectl get deployments
# ou, caso queira mais detalhes use
kubectl describe deployments <nome>

A diferencia que o deployment, permite adicionar outros recurso em um só arquivo, alem de ter uns comandos para controle de versionamento.

Comandos
# Aplicar deployment
kubectl apply -f <nome-arquivo>    

# Deletar deployment (deleta todos o recursos atrelados)
kubectl delete deployment <nome do deployment>
kubectl delete -f <nome-arquivo->
# ou 

# Ver deployments
kubectl get deployments

# ou, caso queira mais detalhes use
kubectl describe deployments <nome>

# ver historico
kubectl rollout history deployment <nome-do-deployment>

# voltar pra uma versão
kubectl rollout undo deployment <nome-do-deploy> --to-revision=2

Dica linux - crie alias

alias kubectl="minikube kubectl --"
alias k="minikube kubectl --"
funtion k-dploy-msg(){
    echo "Adicionando ao deployment $1 a anotação : $2"
    kubectl annotate deployment $1 kubernetes.io/change-cause=$2
}

alias k-hd="kubectl rollout history deployment "
Historico de versões
  • Historico de alterações - mostra o historico de alerações
kubectl rollout history deployment <nome-do-deployment>

image-20211122063059510 image-20211122063059510

obs: Deve ser passadoa flag –record no final do comando de apply

kubectl apply -f <arquivo-deployment> --record

image-20211122063130716 image-20211122063130716

  • Altera mensagem de alteração

Quando fazemos o passo anterior, e vemos o historico, so vemos a linha do deplyment onde ouver a alteração, caso queiramos adicionar uma mensagem, mais amigavel, podemos após o apply dar o comando abaixo:

kubectl annotate deployment <nome-do-deploy> kubernetes.io/change-cause="Messagem que queremos"

image-20211122063143936 image-20211122063143936

Voltando uma versão (rollback)

Realizando o passo anterior podemos voltar versões, (fazer um rollback) com o comando:

kubectl rollout undo deployment <nome-do-deploy> --to-revision=2

Recursos de armazenamentos

link: https://kubernetes.io/docs/concepts/storage/volumes/

Volumes

Semelhante aos volumes do docker, caso o container morrar os dados ficam armazenados no volume, a diferença aqui e que o ciclo de vida do volume no kubernetes dica atrelado a vida do pod, caso o pod tenha 2 container se um morrer, e for recriado, os dados ainda estaram lá, poré se o pod for distruido, os volumes serão perdidos.

ex:

apiVersion: apps/v1
kind: Pod
metadata:
    name: pod-volume
spec:
    containers:
      - name: nginx-container
        image: nginx:latest
        volumeMounts:
            - mountPath: /volume-dentro-do-container
              name: segundo-volume
      - name: jenkins
        image: jenkins/jenkins:alpine
        volumeMounts:
          - mountPath: /volume-dentro-do-container
            name: segundo-volume
    volumes:
    - name: segundo-volume
      hostPath:
        path: /tmp/bkp
        type: DirectoryOrCreate

o type do volume pode ser:

  • Directory - Quando o diretorio já estiver criado.
  • DirectoryOrCreate - Quando o diretorio não existir, o kubernets cria.

Para executar isso localmente no linux, você estará usando o minikube, que é um container docker que roda o kubernetes, por isso é necessario criar a pasta do mapeamento do volume (caso esteja usando o type do volume como directory) dentro do minikube , NÃO em sua maquina, para isso use os comandos abaixo:

# logar no minikube
minikube ssh

# criar a pasta
cd /tmp
mkdir bkp

# Sair do minikuve
crtl+d    

Persistents Volumes

image-20211123062417716 image-20211123062417716

A ideia de PV (persistence volume) é usar o mesmo conceito anterior, porem na nuvem, onde se criaria um volume e se linkaria esse volume com o pod, para isso é necessario criar um pv, que vai armazenar a conexão do volume criado na nuvem para ser usado no kubernetes

  • Um PV é uma instância de armazenamento virtual que é incluída como um volume no cluster. O PV aponta para um dispositivo de armazenamento físico em sua conta na nuvem e resume a API que é usada para se comunicar com o dispositivo de armazenamento. Para montar um PV em um app, deve-se ter um PVC correspondente. Os PVs montados aparecem como uma pasta dentro do sistema de arquivos do contêiner.
Comandos
# listando storage class existentes
kubectl get storageclass
#ou
kubectl get sc

# listar persistence volumes claim
kubectl get pvc

#listar persistence volume
kubectl get pv
  • Criando um PV no google cloud
apiVersion: v1
kind: PersistVolume
metadata:
    name: pv-1
spec:
    capacity:
        storage: 10Gi
    accessModes:
        - ReadWriteOnce
    gcePersistentDisk:
        pdName: pv-disk
    storageClassName: standard
  • Tipos de volumes persistentes.

Tipos de PersistentVolume são implementados como plugins. Atualmente o Kubernetes suporta os plugins abaixo:

  • awsElasticBlockStore - AWS Elastic Block Store (EBS)
  • azureDisk - Azure Disk
  • azureFile - Azure File
  • cephfs - CephFS volume
  • cinder - Cinder (OpenStack block storage) (depreciado)
  • csi - Container Storage Interface (CSI)
  • fc - Fibre Channel (FC) storage
  • flexVolume - FlexVolume
  • flocker - Flocker storage
  • gcePersistentDisk - GCE Persistent Disk
  • glusterfs - Glusterfs volume
  • hostPath - HostPath volume (somente para teste de nó único; ISSO NÃO FUNCIONARÁ num cluster multi-nós; ao invés disso, considere a utilização de volume local.)
  • iscsi - iSCSI (SCSI over IP) storage
  • local - storage local montados nos nós.
  • nfs - Network File System (NFS) storage
  • photonPersistentDisk - Controlador Photon para disco persistente. (Esse tipo de volume não funciona mais desde a removação do provedor de cloud correspondente.)
  • portworxVolume - Volume Portworx
  • quobyte - Volume Quobyte
  • rbd - Volume Rados Block Device (RBD)
  • scaleIO - Volume ScaleIO (depreciado)
  • storageos - Volume StorageOS
  • vsphereVolume - Volume vSphere VMDK
  • Modos de acessos

Os modos de acesso são:

  • ReadWriteOnce – o volume pode ser montado como leitura-escrita por um nó único
  • ReadOnlyMany – o volume pode ser montado como somente-leitura por vários nós
  • ReadWriteMany – o volume pode ser montado como leitura-escrita por vários nós

Na linha de comando, os modos de acesso ficam abreviados:

  • RWO - ReadWriteOnce
  • ROX - ReadOnlyMany
  • RWX - ReadWriteMany
  • Para usar o PV é necessario configurar uma claim para dara acessos ao containers
Persistent Volume Claim

image-20211123063855580 image-20211123063855580

Uma PVC é a solicitação para provisionar armazenamento persistente com um tipo e configuração específicos. Para especificar o tipo de armazenamento persistente que você deseja

  • Criando um PVC no google cloud
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
    name: pvc-1
spec:
    accessModes:
        - ReadWriteOnde
    resources:
        requests:
            storage: 10Gi
    storageClassName: standard

para linkar um pvc a pv, como pvc e uma “requisição de armazenamento” usa-se as especificações, ou seja, as especificações do volume contidos no pvc devem ser igual ao contido no pv.

  • Criando um pod que aponta para um pvc
apiVersion: v1
kind: Pod
metadata:
    name: pod-pv
spec:
    containers:
        - name: nginx-container
            image: nginx-latest
            volumeMounts:
                - mountPath: /volume-dentro-do-container
                name: primeiro-pv
    volumes:
        - name: primeiro-pv
            hostPath:
                persistentVolumeClaim:
                    claimName: pvc-1

Storage Classes

image-20211124053008318 image-20211124053008318

A diferença da item anteriror e que com um storage classes a criação do disco na nuvem e do persistente volume é feita automaticamente.

  • Criando um storage class (sc) no google cloud
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
    name: nome-sc
provisioner: kubernetes.io/gce-pd
parameters:
    type: pd-standard
    fstype: ext4
    replication-type: none
  • Atrelando um storage class no PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
    name: pvc-2
spec:
    accessModes:
        - ReadWriteOnde
    resources:
        requests:
            storage: 10Gi
    storageClassName: nome-sc
  • Criando um pod
apiVersion: v1
kind: Pod
metadata:
    name: pod-pv
spec:
    containers:
        - name: nginx-container
            image: nginx-latest
            volumeMounts:
                - mountPath: /volume-dentro-do-container
                name: primeiro-pv
    volumes:
        - name: primeiro-pv
            hostPath:
                persistentVolumeClaim:
                    claimName: pvc-2
Comandos
# listando storage class existentes
kubectl get storageclass
#ou
kubectl get sc

# listar persistence volumes claim
kubectl get pvc

#listar persistence volume
kubectl get pv

Statefull Set

StatefulSet | Kubernetes Engine Documentation | Google Cloud StatefulSet | Kubernetes Engine Documentation | Google Cloud

Bem similar a um Deployment, mas, ele é voltado para aplicações a Pods que devem manter o seu estado que eles são Stateful. Isso significa que quando um Pod reinicia ou falha por algum motivo dentro de um Stateful Set e volta a execução, o arquivo é mantido.

  • Criando pods usando o statefull set ao invéz de deployments
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: systema-noticias-statefull-set
spec:
  serviceName: svc-sistema-noticias
  replicas: 2
  selector:
    matchLabels:
      app: sistema-noticias
  template:
    metadata:
      labels:
        app: sistema-noticias
      name: sistema-noticias
    spec:
      containers:
      - name: sistema-noticias-container
        image: aluracursos/sistema-noticias:1
        resources:
          limits:
            memory: "128Mi"
            cpu: "500m"
        ports:
        - containerPort: 80
        envFrom:
          - configMapRef:
              name: sistema-configmap
        volumeMounts:
          - name: vl-imagem
            mountPath: "/var/www/uploads"
          - name: vl-sessao
            mountPath: /tmp
      volumes:
        - name: vl-imagem
          persistentVolumeClaim:
            claimName: imagem-pvc
        - name: vl-sessao
          persistentVolumeClaim:
            claimName: sessao-pvc

vai criar a estrutura e vai manter os dados salvos no volumes atachados, use os comandos:

# Para aplicar
kubectl apply -f <nome-file>
  • Lembrando que para isso antes é necessario criar os pvc (volumes que serão usados)
# imagem-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: imagem-pvc
spec:
  resources:
    requests:
      storage: 1Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce

# sessao-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: sessao-pvc
spec:
  resources:
    requests:
      storage: 1Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce

Salve em arquivos com os determinados nomes e de o comando abaixo

# para aplicar
kubectl apply -f <nome>

# para ver os pvcs criados
kubectl get pvc

# para ver os pvs criados
kubectl get pv

# para ver o storage classe existente
kubectl get sc

Recurso para healthcheck

o kubernetes consegue gerenciar por si proprio o pod, porem os container dentro (“a aplicação”) ele precisa de ajuda pra gerenciar se esta vivo, par isso ele utiliza o liveness e o readiness.

  • O Kubernetes nem sempre tem como saber se a aplicação está saudável
  • Podemos criar critérios para definir se a aplicação está saudável através de probes
  • Como criar LivenessProbes com o campo livenessProbe
  • LivenessProbes podem fazer a verificação em diferentes intervalos de tempo via HTTP
  • Como criar ReadinessProbes com o campo readinessProbe
  • ReadinessProbes podem fazer a verificação em diferentes intervalos de tempo via HTTP
  • LivenessProbes são para saber se a aplicação está saudável e/ou se deve ser reiniciada, enquanto ReadinessProbes são para saber se a aplicação já está pronta para receber requisições depois de iniciar
  • Além do HTTP, também podemos fazer verificações via TCP

link: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/

Liveness Prob

Entenda como forma de checagem se o contanier tem uma boa saude, declaramos junto a declaração co container.

livenessProbe:
 httpGet:  # metodo que vamos usar
  path: /  # path aonde vamos bater com a requisição
  port: 80 # porta do container
 periodSeconds: 10 # de quanto em quanto tempo vamos validar em segundos
 failureThreshold: 3 # quandos erros vamos aceitar antes de reiniciar o container    
 initialDelaySeconds: 20 # Delay inicial para que o container possa subir

ex:

image-20211126060259581 image-20211126060259581


Readiness Probes

Entenda como a prova de que um container pode receber requisições, que que ele esta “Ready” (pronto) para começar a receber requisições.

readinessProbe:
  httpGet:  # metodo que vamos usar para validar se o caontainer esta pronto
    path: /  # path aonde vamos bater com a requisição
    port: 80 # porta do container
  periodSeconds: 10 # de quanto em quanto tempo vamos validar em segundos
  failureThreshold: 5 # quanto erros são tentativas são toleraveis aonte de começar a madar requisição para o container
  initialDelaySeconds: 3 # Delay inicial após o container subir, para iniciar as validações se o container esta pronto

EX:

image-20211126061230975 image-20211126061230975


Recurso de escalabilidade

Permite escalara os pods deacordo com a demanda

  • HPA - Horizontal pod autpscale

HPA - Horizontal Pod AutoScale

  • Basea-se no uso de cpu para realizar o scalonamento. por isso precisamos informar em nossos deployments os definições de cpus usadas por aquele pod.
        resources:
          limits:
            memory: 128Mi
            cpu: 500m
          requests:
            cpu: 10m # mili core cpu
            memory: 128Mi

ex:

image-20211128085641444 image-20211128085641444

  • Criando um arquivo de configuração de HPA
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: primeiro-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: portal-noticias-deployment
  minReplicas: 1
  maxReplicas: 5
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 20

Comandos

# listar configurações de HPA
kubectl get hpa

Obs: Apenas isso não sera necessario pra que funcione, é necessario configurar um servidor de metricas vai garadar as metricas de consumo. para isso usamos o arquivo abaixo:

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: system:aggregated-metrics-reader
  labels:
    rbac.authorization.k8s.io/aggregate-to-view: "true"
    rbac.authorization.k8s.io/aggregate-to-edit: "true"
    rbac.authorization.k8s.io/aggregate-to-admin: "true"
rules:
- apiGroups: ["metrics.k8s.io"]
  resources: ["pods", "nodes"]
  verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: metrics-server:system:auth-delegator
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:auth-delegator
subjects:
- kind: ServiceAccount
  name: metrics-server
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: metrics-server-auth-reader
  namespace: kube-system
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: extension-apiserver-authentication-reader
subjects:
- kind: ServiceAccount
  name: metrics-server
  namespace: kube-system
---
apiVersion: apiregistration.k8s.io/v1beta1
kind: APIService
metadata:
  name: v1beta1.metrics.k8s.io
spec:
  service:
    name: metrics-server
    namespace: kube-system
  group: metrics.k8s.io
  version: v1beta1
  insecureSkipTLSVerify: true
  groupPriorityMinimum: 100
  versionPriority: 100
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: metrics-server
  namespace: kube-system
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: metrics-server
  namespace: kube-system
  labels:
    k8s-app: metrics-server
spec:
  selector:
    matchLabels:
      k8s-app: metrics-server
  template:
    metadata:
      name: metrics-server
      labels:
        k8s-app: metrics-server
    spec:
      serviceAccountName: metrics-server
      volumes:
      # mount in tmp so we can safely use from-scratch images and/or read-only containers
      - name: tmp-dir
        emptyDir: {}
      containers:
      - name: metrics-server
        image: k8s.gcr.io/metrics-server/metrics-server:v0.3.7
        imagePullPolicy: IfNotPresent
        args:
          - --cert-dir=/tmp
          - --secure-port=4443
        ports:
        - name: main-port
          containerPort: 4443
          protocol: TCP
        securityContext:
          readOnlyRootFilesystem: true
          runAsNonRoot: true
          runAsUser: 1000
        volumeMounts:
        - name: tmp-dir
          mountPath: /tmp
      nodeSelector:
        kubernetes.io/os: linux
---
apiVersion: v1
kind: Service
metadata:
  name: metrics-server
  namespace: kube-system
  labels:
    kubernetes.io/name: "Metrics-server"
    kubernetes.io/cluster-service: "true"
spec:
  selector:
    k8s-app: metrics-server
  ports:
  - port: 443
    protocol: TCP
    targetPort: main-port
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: system:metrics-server
rules:
- apiGroups:
  - ""
  resources:
  - pods
  - nodes
  - nodes/stats
  - namespaces
  - configmaps
  verbs:
  - get
  - list
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: system:metrics-server
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:metrics-server
subjects:
- kind: ServiceAccount
  name: metrics-server
  namespace: kube-system

Links:



Entendendo o HELM

Helm e um gerenciador de pacotes de cluster kunerntes, imagine que num deploys de apenas um item eu tenha os aquivos abaixo

image-20211128091344881 image-20211128091344881

Nesse caso teremos que dar 5 kubectl apply -f para fazer deploy da nossa aplicação, ou seja realizar o controle manual do processo. Para resolver isso é que o HELM foi criado.

Componetes

Chart - exemplos

Pense em chart com um pacote de versão que contem todos os arquivos .yaml que compoem aquela versão.

ex:

image-20211128091657361 image-20211128091657361

image-20211128091727836 image-20211128091727836

Kind


Instalando

#-----------------------------------------------------------------------------------------------
## Kind
## link: https://kind.sigs.k8s.io/docs/user/quick-start/#installation
##  Usado para criar cluter kubernets

curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.16.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind

# Cria aum cluter
kind create cluster

# cria com nome
kind create cluster --name uni-cluster

# cria cluster via arquivo <ver abaixo arquivo cluster king>
kind create cluster --config=config.yaml

# Listar os cluster
kind get clusters

# Delete lcluster
kind delete cluster -n <name>

#-----------------------------------------------------------------------------------------------
# Listando contextos possiveis
cat ~/.kube/config 
kubcetl config get-cluster

# setar um contexto
kubectl cluster-info --context <contexto>
kubcetl config use-context <contexto>

# Setando o Kind como cluster padrão no kubctl
kubectl cluster-info --context kind-kind
kubcetl config use-context kind-kind

# Setando o minikube como cluster padrão no kubctl
kubectl cluster-info --context  minikube

# Setar namespace padrão
kubectl config set-context --current --namespace=<namespace>

Criando cluster via arquivo

kind: Pod
apiVersion: v1
metadata:
  name: foo
  labels:
    app: foo
spec:
  containers:
  - name: foo
    image: hashicorp/http-echo:0.2.3
    args:
    - "-text=foo"
    ports:
    - containerPort: 5678
---
apiVersion: v1
kind: Service
metadata:
  name: foo
spec:
  type: NodePort
  ports:
  - name: http
    nodePort: 30950
    port: 5678
  selector:
    app: foo
  • Execute o comando
kind create cluster --config=config.yaml

Istio


Conceitos

Istio é um service mesh, que nada mais que é uma camada adicionada junto as aplicações deployadas no kubernetes que permite gerenciar a comunicação dos serviços num sistema distribuído.

Um service mesh gerencia toda a comunicação serviço a serviço em um sistema de software distribuído (potencialmente baseado em microservices). Isso é feito normalmente por meio do uso de proxies “laterais (sidecar)” que são implantados ao lado de cada serviço através do qual todo o tráfego é roteado de forma transparente;

Com o Istio podemos resolver os problemas:

  • Externalização da configuração de comunicação dos serviços, incluindo locais de rede de serviços externos, credenciais de segurança e metas de qualidade de serviço;
  • Fornecer monitoramento passivo e ativo de outros serviços;
  • Descentralizar a aplicação da política em um sistema distribuído;
  • Fornecer padrões de observabilidade e padronizar a coleta de dados associados.
  • Ativando o registro de solicitações (logs)
  • Configurando o rastreamento distribuído;
  • Coletando métricas

Existem outros services mesh, Linkerd, Istio, Consul, Kuma e Maesh.

image-20220813165959337 image-20220813165959337

img img


Instalação

link: instale o istio


Comandos

# Instalar istio no kunbernetes - veja outros profiles: https://istio.io/latest/docs/setup/additional-setup/config-profiles/
istioctl install --set profile=demo -y 


# comandos uteis
# lista os namespaces
kubectl get namespaces

# lista os pods de um namespace
kubectl get pods -n istio-system
kgp -n istio-system

# lista os services de um namespace
kubectl get svc -n istio-system
kgs -n istio-system


# instalar addons 
kubectl apply -f <istio-istall-folder>/samples/addons
kubectl apply -f ~/Documents/programs/istio-1.14.3/samples/addons

# Acessar dash kiali 
istioctl dashboard kiali

# abre serviços
misinikube service <nome do serviço>

# configurar uma porta local pra usar no localhost
kubectl port-forward svc/<nome-serviço> -n <namespace-serviço> <porta-local>:<porta-serviço>
  • Para ativar os proxys do Istio é necessário configurar labels nos namespace.

Após fazer isso automaticamente o istio vai subir no pod um container de proxy.

# use para listar as lables de um namespace
kubectl get ns <namespace>  --show-labels=true
kubectl get ns ucontas-app   --show-labels=true

# Use para ativar o istion no namespace
kubectl label namespace <nome-namespace> istio-injection=enabled
kubectl label namespace ucontas-app istio-injection=enabled

# E reciso reiniciar os pod para que seja adicionados os sidecar
kubectl delete pods --all -n <namespace>
kubectl delete pods --all -n ucontas-app

Link: https://www.infoq.com/br/articles/service-mesh-ultimate-guide/

ArgoCD


Aplicação de continuos deploy, usada para realizar o deploy de aplicações no kubernetes.

Estamos acostumado com o formato padrão de pipeline do jenkins onde temos um fluxo único para o CI e CD. No caso do argoCD temos uma pipeline especifica para cada itens, sendo uma especifica para o processo de Continuos Delivery que é usada pelo argo.

Introducing Argo CD — Declarative Continuous Delivery for Kubernetes | by  Mukulika Kapas | Argo Project Introducing Argo CD — Declarative Continuous Delivery for Kubernetes | by  Mukulika Kapas | Argo Project


Instalação

Diferentemente de outras ferramentas de Continuos delivery o ArgoCD tem uma particularidade que é o fato dele ser implantado no cluster do kubernetes. Na verdade ele é uma extensão do kubernetes, pois usa a maioria da ferramentas dele.

  • Isso tem diversas vantagens tais como:
    • Visibilidade do processo, coisa que o Jenkins não tem por ser um processo externo.
    • Tem um interface gráfica que mostra o processo em tempo real.
  1. Para instalar o ARGOCD devemos criar um yaml file

Neste informamos qual:

  • vai ser no repo onde vão estar os deployments.
  • vai ser o cluster kubernets, onde serão aplicados os deployments.

image-20220814214048656 image-20220814214048656


Tutoriais


Usando e configurando

# cria o namespace do argo
kubectl create namespace <namespace> 
kubectl create namespace argocd

# Para instalar o argo no namespace
kubectl apply -n <namespace> -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

# Para remover argo
kubectl delete -n <namespace>  -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl delete -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

## Acessando externamente
# 1 - Para acessar mude o serviço do argo-serve com o comando abaixo
kubectl patch svc argocd-server -n <namespace>  -p '{"spec": {"type": "LoadBalancer"}}'
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'

# 1.1 - depois de o comando para abrir o serviço
minikube service argocd-server -n <namespace> 
minikube service argocd-server -n argocd

# 1.3 Ou use o comando abaixo para liberar a porta
kubectl port-forward svc/argocd-server -n <namespace>  8080:443
kubectl port-forward svc/argocd-server -n argocd 8080:443


## Login Via UI
# Usuario padrão é admin 
# Para pegar a senha use
kubectl -n <namespace> get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo


## Login via CLI
# instale o cli - https://argo-cd.readthedocs.io/en/stable/cli_installation/
# Usuario padrão é admin 
# Para pegar a senha use
kubectl -n <namespace> get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

# Use o comando abaixo - ARGOCD_SERVER é o ip e porta exporto externamente
argocd login <ARGOCD_SERVER>
argocd login 192.168.49.2:30634


# Para altera a senha  #Nova senha - unisenha
argocd account update-password


# -------------------Register A Cluster To Deploy Apps To

# Listando os contextos validos
kubectl config get-contexts -o name

# Configurando um contexto para deploy
argocd cluster add <contexto>
argocd cluster add minikube
  • Usuario
User: admin
Senha: unisenha

Prometheus

Conceito iniciais

  • Trabalha com metricas e alertas para monitorar sistemas.
  • Toolkit de monitoramento e alerta de sistema open source.
  • Criado pela SoundCloud, Agora faz parte da Cloud Native Computer Foundation.
  • Captura e armazenamena dados em formatos dimensionais.
  • Tem coletas poderosas com o PromQL.
  • Usado em conjunto com o Grafana.
  • Tem diversas soluções para integrações.

Dinamica de funcionamento

há duas forma de funcionamento:

  • Sistema baseado em Pull.

    • Um agente do serviço de monitoramento recupera os dados da aplicação.
    • Muito usado com a Stack do ELK.
  • Sistema baseado em Push.

    • A aplicação envia os dados para um agente do serviço de monitoramento.
    • Modelo usado pelo Prometheus.
    • Recupera metricas via http. a aplicação deve disponibilizar uma endpoint /metrics no formato do Prometheus.
    • Configura-se targets para recuperar de tempos em tempos.
    • Consegue recuperar metricas de aplicação , banco de dados, sistemas operacionais. Para isso existe um conjunto de SDK e exports para isso.
  • Exports

    • Fornece um endpoint de coleta de metricas para aplicações, sistemas operacionais e banco de dados.
    • Serve como intermediário para a coleta de metricas.

Arquitetura do Prometheus

Prometheus architecture Prometheus architecture

Na arquitetura do Prometheus temos:

  • Prometheus server
    • Retrival - Componente que orquesta o processo de recebimento de metricas e o armazenamento na base de adados
    • TSDB - Base de dados do tipo de serie de tempos (timeseries database).
    • Http Server - Servidor de web, onde fica exporto endpoints para recuperar as metricas salvas e as metricas do proprio Prometheus.
  • Service discovery
    • Em arquiteturas de microserviços pode haver varias instâncias para o prometheus monitorar, por isso o Retrival tem a capacidade de se conectar a services discoverys para descobrir quais instancias ele deve recuperar as metricas.
  • PushGateway
    • Serve para agrupar as metricas de varias soluções em um só lugar para se recuperado pelo prometheus.
    • Usado em serviços que executam em janelas de execução variadas e que encerram após isso, nesse caso ao executar esses serviços envias as metricas para esse push gateway que armazena temporariamente para o prometheus.
  • Prometheus targets
    • São os endpoints de metricas dos serviços que o prometheus vai realizar pull (scraping) de tempos em tempos através Retrival .
  • Alert manager
    • Permite configurar thresholds e ações (alertas) para as metricas.
    • Recebe atualização das metricas de tempos em tempos do prometheus.
    • Pode executar ações (alertas) como enviar e-mails ou acionar outros serviços de notificação.
  • PromQL
    • Permite executar querys com as metricas através da Prometheus Web UI ou do Grafana.
    • Usando o Http Server explicado anteriormente.
  • Grafana
    • Sistema que permite montar dashboards com as métricas coletadas pelo prometheus.
    • Realiza queries usando o PromQL no Http Server do prometheus para recuperar as métricas.

Trabalhando com dados

  • Armazenamento
    • TSDB (Time Series Database).
    • Os dados mudam conforme o tempo.
    • Trabalha com label para adicionar propriedades a métricas.
    • Otimizado para esse caso, o que melhora a performance.
    • Para dados mais antigos há um compressão para liberar armazenamento, por isso talvez não sejam tão precisos.

Tipos de métricas

Tipos metricas Tipos metricas

  • Counter - é um contador, tem o valor incremental, sempre aumenta.
    • Quantidade de visitas, erros, clique em um botão.
  • Gauge - é uma métrica que varia com o tempo. pode aumentar, diminuir ou estabilizar.
    • Uso de cpu, de memoria. Quantidade de usuários ativos.
  • Histogram - é uma métrica que permite a distribuição de frequência.
    • Baseado em amostra, possível agregar valores baseados nas propriedades.
    • Quem gerar o histograma é o cliente.
  • Summary - é uma métrica que permite a distribuição de frequência.
    • Similar ao histogram, porém nessa quem calcula a distribuição é o prometheus.
    • Retorna os dados mais brutos para o prometheus e ali se cria a distribuição de frequência.

PromQL

  • Prometheus query language. (SQL do prometheus).
  • Usado para consultar dados no prometheus.

Treinando

  • Acesse a pasta treinando

  • De os comando abaixo para subir o prometheus.

  • # Para subir os container
    docker-compose up -d
    
    # Para ver os logs do prometheus
    docker-compose logs -f prometheus
    
    # Para ver os logs do node export
    docker-compose logs -f node-exporter

continuar -> https://prometheus.io/docs/concepts/metric_types/


Dashboards com Grafana