Skip to content

Instantly share code, notes, and snippets.

@reginadiana
Last active August 11, 2024 11:59
Show Gist options
  • Save reginadiana/5c60891e32d590b49fdbb3cb70869423 to your computer and use it in GitHub Desktop.
Save reginadiana/5c60891e32d590b49fdbb3cb70869423 to your computer and use it in GitHub Desktop.
Anotações sobre AWS

⭐ AWS

Pilares

  1. Segurança
  2. Eficiencia e Performance
  3. Confiabilidade: distribuida em todos os lugares do mundo (no Brasil tem 1 em SP)
  4. Excelencia operacional
  5. Otimização de custos

Serviços

  1. S3, buckets são serviços de armazenamento de arquivos

  2. RDS é um serviço de armazenamento e gereciamento de banco de dados

  3. Cloudwatch é um serviço de monitoramento que dá acesso aos logs do ambiente de staging ou prod. Os logs podem ser agrupados por serviços como elastic search, banco, erros, etc.

Conceitos de Cloud

A computação em nuvem é a entrega de recursos sob demanda por meio da internet com definição de pagamento conforme o uso. Em vez de comprar, ter e manter datacenters e servidores fisicos, voce pode acessar serviços de tecnologia como capacidade computacional, armazenamento e banco de dados, analitics e outros usando a aws (serviço publico) por exemplo.

Caracteristicas de um Cloud

Para que seja considerado cloud, deve preencher as seguintes caracteristicas:

Agilidade: permitindo que as entregas possam ser feitas de forma rápida, sem preocupação com o datacenter por exemplo.

Manutenção: é algo que quem usa o cloud pode se preocupar menos, já que esse quesito é responsabilidade do servidor.

Confiabilidade: porque existem especialistas dentro da aws, por exemplo, que vão trabalhar apenas para cuidar do sistema.

Segurança: essa preocupação na parte de quem usa o cloud é reduzida porque não é mais necessário se preocupar com a segurança fisica dos datacenters por exemplo, mas isso não quer dizer que não existam fatores de segurança para se preocupar.

Performance: upgrade de infraestrutura disponíveis.

Escalabilidade: capacidade de escalar facilmente sob demanda. Ex: Aumento de acessos gerados por eventos como Black Friday, mas que diminuem depois.

Soft Limit

É o limite de máquinas (instancias) rodando e pode ser alterado realizando uma solicitação dentro da aws.

Hard Limit

Diz respeito ao limite máximo de máquinas que a aws pode oferecer, e não pode ser alterado por quem utiliza o serviço de cloud

NIST

O NIST dita as principais caracteristicas de um serviço de cloud:

  1. Serviço sob demanda, seja, é cobrado apenas sob o que é utilizado.

  2. Acesso à uma rede distribuida.

  3. Metrificação dos processos (analytics).

  4. Escalabilidade rápida.

Tipos de cloud

Iaas (Infraestrutura como serviço): usa a infraestrutura de terceiros.

Paas (Plataforma como serviço): usa a plataforma de terceiros, ou seja, não precisamos nos preocupar com o que é necessário para execução. Ex: Heroku, AWS.

Faas (Funcionalidades como serviço): executa uma ação de tempos em tempos ou mediante outra ação. Ex: beckup do banco

Modelos de deploy

💻 Private Cloud: só é utilizado naquela empresa, ou seja, apenas ela detem o serviço.

💻 Public Cloud: todos podem acessar e usar. Ex: AWS, Azure.

💻 Hybrid Cloud: mescla dos modelos privado e publico.

💻 Multicloud: não é muito usado, ele basicamente aponto para outro cloud quando o primeiro falha.

💻 Comunity: quando um cloud é utilizado por um grupo de empresas, mas não é aberto ao publico.

Foundation

É um processo de onboarding onde é necessário pensar e utilizar as bases e recomendações da aws para criar corretamente uma conta, definir rede, utilizar serviços de forma que não haja problemas no futuro ao podem de ter que migrar a conta (o que não é fácil de fazer).

Contas

Root Account

É a conta mais poderosa da aws, ela serve para criar novas contas, mas o ideal é que ela não seja muito utilizada, pode ela gerencia outras contas. Não é uma boa prática usar essa conta para fazer deploy de recursos.

Organisational Unit (OU)

Serve para organizar as contas, sendo possível aplicar regras para grupos de contas. Cada conta tem seu score (soft limit) e seu gerenciador de identidade (IAM). Vale lembrar, que o plano de suporte para contas novas é o básico, sendo possível fazer upgrade para ter mais ajuda do pessoal de suporte.

Polices

polices para contas/usuários e organizações, permitindo a restrição/acesso a ações em serviços. Também é possível criá-las.

Master Account

É a primeira conta criada na aws e root account é o usuário de uma aws account.

Well-Archited

É um guia de boas práticas para usar a aws. O ciclo é aprender, mensurar e melhorar. É baseado em 5 pilares. Existe um formulário que pode ser aplicado para saber se o time está seguindo as boas práticas.

ARN

É uma especie de id para tudo o que tem na aws (aws resource number)

Internet Getway

Vai levar as redes "para o mundo". Só podemos ter 1 por VCP.

Route Table

Faz a ligação entre a internet gatway e as subnets.

Network ACL

Controle de acesso

Zonas de Disponibilidade

São pontos onde os datacenters estão localizados dentro de uma região. Ao odar a aplicação em diversas regiões, o acesso pode ser mais rápido, já que os usuários estarão mais próximos dos datacenters.

Acesso so serviços

É necessário criar um usuário de serviço IAM e realizar a autenticação via chaves access key id e secret access key

EC2 (Elastic Compute Cloud)

Ela é o nosso computador na nuvem, permitindo criar instancias de servidores virtuais com sistemas operacionais linux ou windows. Existem vários tipos de máquinas que podem ser criadas, uma delas são as low code, usadas para sites pequenos. As máquinas são pagas por hora, também variando conforme o tipo de máquina e região.

Com ela é possivel:

  • Acessar o terminal da máquina;

  • Instalar o Docker e executar uma imagem;

  • Rodar o nginx;

  • Simular stress dentro da máquina e ver quais os efeitos causados;

  • Realizar o rebot da máquina.

Quando uma instancia do EC2 é removida, o volume do tipo root onde o sistema operacional está instalado também é removido.

Podemos liberar uma porta da instancia EC2 em security group.

5 mim. é o intervalo padrão para monitoramento básico sem estar com o cloud watch habilitado.

VPC

Tem a ver com network/redes, funcionando como uma rede virtual isolada. Ao usar essa rede teremos acesso a um interválo de IP's (IPV4). Obs: Estudar sobre enderacamento de IP's.

Não é possivel rodar volumes em regiões diferentes.

Snapshots

E recomendado parar a execução da instancia antes de criar um snapshot.

Fazer copia de snapshot é usado para fazer migrações.

É possivel criar uma rotina para gerar snapshots com o lifecycle (recomendado realizar durante a madrugada).

Os snapshots são armazendados no S3 de forma incremental, por isso, o primeiro sempre será o mais demorado.

O melhor placement group para baixa latencial é o cluster.

Podemos entrar em cada container em cada task que está rodando.

Amazon Route Table

É um conjunto de regras, também conhecidos como conjunto de rotas, que são usados para determinar o tráfico de rede de sua subnet.

Amazon Security Group

É um componente de atua como um firewall virtual que controla o tráfego para uma ou mais instancias.


É possível configurar um MFA Virtual (gerando um QRCode, chanve, etc) ou fisico (ex: pendrive).

Role

São grupos de polices

S3

Fornece uma API que pode ser gerenciada com diversas linguagens pela ferramenta aws-sdk

Bucket: corresponde as pastas

Objetos: correspodem aos arquivos e metadados (nome, tamanho, tipo, etc).

Ao criar um bucket, precisamos definir uma região. Essa escolha é importante pois irá determinar o quão rápido as entregas serão feitas. Seu usuário é unico a ter acesso ao recurso. É possivel configurá-lo para gerar log de atividades. Como as requisições do S3 são do tipo GET, cada arquivo inserido em bucket terá sua própria url.

Enhanced Uploader: permite o upload de pastas e arquivos diferente do upload de arquivos tradicional.

É possível armazenar sites estáticos dentro do S3.

Os objetos podem ter até 5 terabytes

É possível ter/usar autenticação em modo MFA ao tentar excluir recursos do bucket

S3 Replication: é possivel replicar objetos em outros buckets

Podemos ter diferentes classes de armazenamento dependendo da frequencia de acesso a performance requerida, por exemplo.

S3 Object Lambda: chama nosso próprio código para manipulação de arquivos, processamento de dados, etc.

R red O openshift S service A aws

O ROSA é a junção dos serviços openshift e aws. Na conta aws, deve exigir um usuário IAM para gerenciamento.

AWS SES

É um serviço para gerencialmento de envio de emails da AWS. Este serviço é pago com base no volume de emails enviados e recebidos, ou seja, é pago sob demanda. Existe uma API da SESque contém endpoints para enviar e receber emails.

Permite:

📧 Gerenciamento de emails.

📧 Configuração de emails.

📧 Mapear reputação.

Amazon SNS

É usado para notificar sobre os emails que foram devolvidos, produziram uma reclamação ou foram entregues com sucesso ao destinatário.

Quotas

Determinam a capacidade de infraestrutura do serviço SES.


Existem arquivos que são incompativeis para erem enviados em anexo no email.

Score

Caso a taxa de devoluções for maior do que o permitido, a AWS pode sinalizará este problema. Se não for dada uma resposta ou o problema que causa a taxa de devoluções não for solucionado nos próximos 88.000 emails enviados após a primeira notificação, a AWS pode bloquear o funcionamento do SES.

Uma das medidas para evitar que essa taxa aumente é não enviar emails para destinatários que colocaram outros emails como span e realizar alterações no processo de envio com base na analise do time técnico.

A resposta para a AWS deve conter:

  • O método utilizado para rastrear as devoluções

  • Como será garantido que os destinatários são válidos antes de realizar os envios.

Falhas intermitentes e temporais como uma caixa postal cheia ou devolução por endereços bloqueados não contam para a alta na taxa de devoluções.

É necessário manter uma taxa de devolução (também conhecido como bounce rate) abaixo de 2%. Taxas acima deste valor podem afetar a capacidade de entrega dos emails.

Apenas os emails para domunios não verificados são considerados ao calcular a taxa de devolução.

Remover endereços devolvidos da sua lista, sem uma investigação mais profunda, pode não resolver o problema subjacente.

A AWS não fornece uma lista de emails que fizeram as devoluções para proteger a identidade deles (LGPD) e nem quais emails que foram devolvidos.

As devoluções não estão relacionadas as cotas de envio.

Complaint Race

Taxa de reclamação


Monitore o engajamento com os emails que voce envia e interroma o envio para destinatários que não abrirem e nem clicam nas mensagens.

Forneça aos usuários uma maneira clara para não receber mais os emails.

Configuração

aws configure set aws_access_key_id <AWS_ACCESS_KEY_ID>
aws configure set aws_secret_access_key <AWS_SECRET_ACCESS_KEY>

IAM

Retorna informações do usuário:

aws iam get-user

S3

Listando buckets

aws s3 ls

Listando recursos de um bucket

aws s3 ls <bucket_name>

Listando os arquivos do bucket

aws s3 ls <bucket_name> --recursive

Copiando um recurso da máquina para o bucket

aws s3 cp <local_path.type> s3://<bucket_name>/<local_path.type>

Sistemas Operacionais

Os SOS são programas que gerenciam e alocam recursos de hardware do computador como CPU, memória, disco rígido, dispositivos de entrada e saída e rede. Além de estar presente na nossa máquina, está nos servidores que hospedam nossas aplicações.

Redes

Uma rede é um grupo de computadores e outros dispositivos conectados para a troca de informações

Observalidade

É entender o que está acontecendo no sistema por meio de métricas, logs e rastreabilidade, identificando sua saúde em termos de infraestrutura e aplicação

IAC

É uma prática que permite com que a pltaforma seja suportada por uma infra com mais rápidez.

  • S3

    • If your website doesn’t run server-side scripts, it is a static website;
    • S3 bucket doesn’t need deploy, has automatically scale;
    • Bucket is a container of objects;
    • Object is any type of file and any metadata that describes that file;
    • HTML, java-script and styles belongs to client-server;

    Cases of use:

    • Website;
    • Mobile;
    • Enterprise app;
    • Backup restore;
    • Archive;
    • IOT devises;
    • Big data analytics.

    Versioning: object is not permanently deleted, because can be controlled by tag

    • Time limed url;
    • By default, data is not encrypted in your S3;
    • You can use s3 to host a static website hosting, setting permissions, and adding an index document. Options such as redirects, logging and error document are also available;
    • Bucket policy and user policy are two different aspects and can be used together;
    • Has no limit of object that can be stored in bucket.
  • EC2

    • Elastic Load Balancer distributes traffic across available zones;
    • EC2 is a virtual service. We can choice the processor, storage, networking, operating system and purchase model. Each instance type has your own group of this resources, but with different values;
    • We can increase the size of an EC2 instance to provide better application performance;
    • Key pairs: public and private keys;
    • Instance metadata is data about your instance that you can running instance. Instance metadata is divided into categories; for example, host name, events, and security groups;
    • EC2 Instance Connect provides an efficient and secure way to connect to your Linux instances. EC2 Instance Connect uses AWS Identity and Access Management (IAM) polices and principals to control SSH access to your instances, removing the need to share and manage SSH keys;
    • You can connect to your instance by using an SSH client on your local device through your instance key pair. Your device might have an SSH client by default or you might need to install SSH client;
    • After an instance stops, CPU usage and data transfer changes cease, but storage charges for any attached Amazon EBS volumes continue;
    • We need stop instance to change your type;
  • Cloud Economics

    • If you need more resources, you can scale your systems horizontally, which means that you can add more serves when you need them. If your current resources are too weak to run your app, you can sale vertically, which means that you can increase the computing power on one or instances;
    • Different architectures can be used to achieve the same solution;
    • Matching infrastructure to demand uses a concept called scaling;
    • For new cloud customers, we often recommend using On-Demand Instances. After customers have established enough usage data, and are certain of their commitment, they can save future cost by using other plans.
    • How works pricing to S3?
    • Saving plan is most cheap
  • Networking Concepts

    In AWS, by default, VPC’s are configured with internet gateways routing to the internet, and a security group. When you create a new VPC, you can choose whether all or part of the VPC should be exposed to the internet. This way, you can customize your own network security configuration to met your requirements;

    An instance to web server, for example, can be deployed inside a publicly exposed sub net and is assigned a public IP address to make it accessible from the internet. The instance to database can be protected and be only accessible from the sub net in which the web server resides;

    An instance that is configured as a web server needs security group rules that allow inbound HTTP and HTTPS access. Likewise, a database instance needs rules that allow access for the type of database, such as access over port 3306 for MySQL;

    With VPC, you can launch AWS resources into a virtual network; You too can launch AWS resources into a specified sub net. Each sub net must reside entirely within one AZ and cannot span zones;

    A route table contains a set of rules, called routes, that are used to determine where network traffic from your sub net or gateway is directed. Use a public sub net for internet-connected resources and a private sub net for resources not connected to the internet;

    A NAT gateway is a network address translation service. With a NAT gateway, instances in a private sub net can connect to services outside your VPC. External services cannot initiate a connection with those instances;

    An internet gateway serves two purposes:

    • Provide a target in your VPC route tables for internet routable traffic.
    • Perform network address translation (NAT) for instances that have been assigned public IPv4 address.

    For each security group, you can add rules that control the traffic based on protocols and port numbers. Separate sets of rules exist for inbound traffic and outbound traffic.

    To deploy a working internet gateway, the following must be completed:

    • The internet gateway must be attached to a VPC;
    • Route tables associated with your public sub net must have a route to your internet gateway;
    • Security groups associated with your VCP must allow traffic to/from the internet;
    • Any instances in the VPC must have a public IP or Elastic IP address assigned.

    Na atividade, criamos uma conexão publica para uma instancia de aplicação web que pode se conectar com a internet. Depois, foi preciso criar uma conexão privada entre a aplicação web e a instancia do banco de dados, onde a primeira acessava a segunda a partir de uma porta especifica. Foi preciso criar um grupo de segurança pra aplicação web e adicionar uma regra na instancia do banco. Reparei que para cada tipo de banco há uma porta especifica para conexão.

  • Connecting VPCs

    Goal: config VPC peering between the Marketing and Finance networks;

    Amazon VPC offers a feature called VPC peering. After you create a peering connection between two VPCs, you can route traffic between the VPCs by using private IPv4 or IPv6 address;

    The route tables, for each VPC, point to the relevant VPC peering connection to access the entire CIDR block of a peering VPC;

    By default, VPCs are isolated from each other;

    Instances in either VPC can communicate with each other as if they are in the same network;

    After you establish a peering connection, you must modify the route table associated with each VPC. You must add a route into each route table to allow traffic to be routed to the peered VPC;

    Peered VPCs do not necessarily accept all data between them. Security features, such as network access control lists and security groups, still apply. Be sure to update them accordingly;

    Se não tem IP, quer dizer que não pode se conectar com nada?

    No AWS Systems Manager podemos dar um comando ping <IPv4> para verificar se uma instancia está se conectando com outra.

    Na atividade, criamos uma peering connection entre a instancia da área de desenvolvimento e a instancia da área do financeiro. Depois, indo na sub net e depois na route table de cada instancia permitimos a conexão do peering adicionando o IPv4 de quem iria se conectar e especificando o tipo da conexão.

  • Databases in Practice

    Amazon RDS removes the operational burden of patching and managing underlying infrastructure, can perform routine backups and snapshots on database, deploy in multiple Availability Zones;

    If you are doing read-intensive workloads, you can deploy something called a read replica. Read replicas have the same data as your primary database, but they allow only read operations. You can direct queries to read replica so that your primary database is free to do more write operations;

    You only pay for the resources that you actually consume;

    RDS helps you control network access to your database. You can also run your RDS DB instances in a VPC This way, you can isolate your DB instances and connect to your existing TI infrastructure through an industry standard encrypted IPsec VPN.

    O processo de criação do banco demora e passa por vários status 😟

  • First NoSQL Database

    DynamoDB is a NoSQL database, so you don’t have to worry about a schema. Each row can have any number of columns at any point in time. This way, you can quickly adapt the tables as your business requirements change, without having to redefine the table schema as you would in relational databases. It automatically scales, and it has single-digit millisecond latency.

    He automatically scales tables up and down to adjust for capacity and maintain performance.

    Support two types of primary keys: a partition key only, or a partition key and sort key.

  • Core Security Concepts

    IAM is a service offered at no additional charge;

    Is possible create a group of users. When IAM users are added to a group, they inherit all the permissions attached to the group;

    A user can belong to multiple user groups;

    An AWS IAM user with admin permissions is not the same thing as the AWS account root user

  • File Systems in the Cloud

    Amazon EFS is a serverless, at set and forget solution that you can use to share file data without provisioning or managing storage, provides petabyte-scale storage that grows and shrinks automatically as you add and remove files;

    After creating the EFS file system, you create mount targets on each subnet. The mount target enables communication from Amazon EC2 instances on the subnet. Amazon EFS uses the Network File System (NFSv4) protocol. EC2 instances that connect to the file system are NFS clients;

    When you create an EFS mount target, you must attach a security group. The security group determines which EC2 instances can access the file system as NFS clients;

    Security groups are inked to a single VPC. You can assign a security group to one or more EC2 instances, but each instance must be in the same VPC as the security group.

    EFS file systems require an inbound NFS rule. By selecting a security group as the incoming source, any EC2 instances linked to the security group you select will have NFS client access to the file system.

    Para criar um recurso EFS, precisamos de um IAM

    In most cases, you will assign the same security group to each mount target.

    An ENI is logical networking component in a VPC that represents a virtual network card. The ENI automatically receives an IP address from the VPC.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment