El examen tiene 4 unidades

Amazon tiene muchisimos services

En general todo lo del primer video es muy básico como IaaS, PaaS y SaaS. Pero las ventajas son un poquito diferentes:

  1. CaPex a Opex
  2. Economía de escala
  3. Capacidad a la medida
  4. Más rápido y ágil
  5. Más barato que con tus data centers
  6. Global en minutos

Availability zone en general es un data center, Region son muchos data centers en un área geográfica. Como escoger una data region?

  1. Leyes y compliance
  2. Latency y rapidez para el usuario
  3. Precio y AWS services

Billing alarm

Esta parte es crítica para cuando estas aprendiendo porque tienen tu tarjeta de crédito. Así al menos te enteras si te va a costar un ojo de la cara ja.

Para hacerlo services ->cloudwatch-> billing-> static -> 10-> create a new topic
Igual es bueno activar el cost explorer para saber como van los tiros a futuro ja.

Nota, este y otros servicios tardan hasta 24 horas en activarse despues de que te subscribes 

Despues de eso puedes crear usuarios y grupos, por ejemplo el power user access pero no pueden cambiar users y groups.

S3

S3 Simple storage service es para guardar flat files. Flat files son archivos que no cambian.

  1. Object-based
    1. Key (nombre)
    2. Value (sequence of bytes)
    3. Version (override y delete pueden tardar en propagarse)
    4. Metadata
    5. Subresources
      1. ACL
      2. Torrent
  2. 0-5 tb
  3. Unlimited storage
  4. Files están en buckets (folders)
  5. Nombres únicos globales (https //s3-eu-west-1.amazonaws.com/mexicanpenteser)
  6. 99.9% availability y 99.999999999% (9) durability
  7. Features
    1. Tiered storage
    2. lifecycle management
    3. Versioning
    4. Encryption
    5. ACL y bucket policies
  8. Tiers
    1. Standard
    2. IA (infrequent access) te cobran por ver data pero esta siempre available
    3. One Zone IA más barata
    4. S3 Intelligent tiering, la mueve automaticamente y te cobra menos
    5. Glacier (cold storage) Tarda en ser accessible
    6. Glacier Deep archive. Lo mismo pero tarda más

Nota: ahora es muy complicado hacer un archivo público, pero si lo haces te generará un link directo al archivo. Puedes poner un Static website con auto scale ahí. 

Restricting bucket access

  1. All buckets
  2. Bucket policy: Solo esa bucket
  3. Object policy: Solo ese archivo
  4. IAM to users y groups: Dependiendo tu user o grupo por ejemplo HR solo debe ser available para HR.

Nota: Es muy interesante ver la diferencia entre usar y no transfer acceleration. (bucket -> properties -> advanced -> file transfer acceleration) 

EC2

Payment

  1. On demand (per second)
  2. Reserverd (+year contract)
  3. Spot (auction como fb y google sirve por ejemplo cuando puedes trabajar a media noche para hacer un estudio lo más barato posible) Se paga por hora
  4. Dedicated host (físicos solo para tí)

EC2 usan EBS (son los discos para las EC2)

  1. SSD
    1. General (GP2)
    2. IOPS optimized (IO1)
  2. Magnetic
    1. Throughput optimized (ST1)
    2. Cold HHD (SC1)

Command Line

NOTE: USING THE COMMAND LINE video Certified cloud practitioner

If you create a user with a lot of permissions he/she can do whatever he wants, there is an example of creating a bucket and moving a file but the important part is that the credentials are stored in 

cd ~/.aws/credentials

How to fix it? use roles instead of credentials? Video using roles 

Create a role and apply it to the EC2

Then delete the credential

rm -rf ~/.aws
(igual .azure existe)

Puedes usar scripts cuando estas creando tu VM. Por ejemplo el que esta abajo en Advanced details va a updatearlo e instalar apache y encenderlo.

Note: Con ElasticBeanstalk puedes provisionar automáticamente un servicio. Por ejemplo si escoges PHP va a ponerte una EC3, bucket, load balancer y te va a instalar todo. La otra cosa que puedes hacer es subir código y amazon va a decidir que tiene que provisionar con auto-updates y todo.

Note: puedes pedir con CURL información del EC2 como IP e información que corrio en boostrap. Desde la EC2. Video arch/EC2/Lab Instance Metadata

http://169.254.169.254/latest/meta-data/
http://169.254.169.254/latest/user-data/
cool hack of this for prezi in : https://engineering.prezi.com/prezi-got-pwned-a-tale-of-responsible-disclosure-ccdc71bb6dd1
otro ejemplo https://krebsonsecurity.com/2019/08/what-we-can-learn-from-the-capital-one-hack/

 Note: lo de arriba no se logea en los VPC flow logs.
Igual hay en azure  algo similar https://wp.me/paINna-qz

Database

  1. RDS (SQL o OLTP)
  2. DynamoDB (NoSQL)
  3. RedShift (warehousing para cuando necesitas hacer super complejos requests)
  4. Elasticache es para eso cachear DB
  5. Features
    1. Multi-AZ Disaster recovery
    2. Read replicas performance

CloudFormation: Infra to cloud

Es un servicio que modela resources y las implementa por ti. No tienes que crear algo y descubrir que depende de que. Amazon sabe que es muy complicado y lo hace por ti ja.

Hay muchos templates y los puedes ver en una manera muy gráfica por ejemplo.
Nota: Cloudformation -> create a stack -> use wordpress template o domain controller ja.

Si quieres soluciones de terceros como SAP o wordpress o confluence puedes usar quickstart

Cuál es la diferencia con beanstalk? Beanstalk es limitado y no se puede programar/modificar y cloudformation puedes cambiar todo.

Traditional computing vs Cloud

  1. It assets como provisioned resources: No necesitas comprarlos, los tienes solo y cuando los necesitas.
  2. Global, available and scalable: pues eso
  3. Higher-Level Managed Services: Son más baratos de operar
  4. Built-in Security: tienes que hacerlos inseguros, en su default deben ser seguros además de WAF, grupos, MFA, etc.
  5. Architecting for Cost: No solo es más barato, sino que también sabes exactamente en donde te gastas el dinero
  6. Operation on cloud:
    1. Migrated
    2. Refactor: para mayores niveles de automation usas lo que esta en la nube en vez de lo que usabas
    3. Rearchitechture: diseñas todo para la nube

Design Principles

  1. Scalability
    1. Scale horizontal (más cpu o ram)
    2. Scale vertical (vertical, osea más instances)
      1. Stateless application (no saben que pasa, empieza hace y muere)
      2. Distributed loads a muchos nodes
      3. Stateless components (nadie la guarda o la guarda el usuario
      4. Stateful component (la app guarda la información)
      5. Session affinity (que la instance que te estaba procesando te siga procesando se sabe con cookies)
      6. Distributing processing (dividir un trabajo en muchas computadoras) o Implemented distributing processing
  2. Disposable Resources Instead of Fixed Servers
    1. Instantiating Compute Resources (lo más automático posible para evitar errores)
      1. Bootstrapping: are scripts that install software or copy data to bring that resource to a particular state.
      2. Golden Images:
      3. Containers
      4. Hybrid (containers con EC2)
    2. Infrastructure as a code (como cloudformation)
  3. Automation
    1. Infrastructure Management and Deployment
      1. Beanstalk
      2. EC2 Autorecovery
      3. AWS system manager
      4. Auto-scaling
    2. Serverless Management and Deployment
  4. Alarms and Events
    1. CloudWatch Alarm: Alarma cuando una metrica pasa cierto nivel.
    2. CloudWatch events: Cuando alguien hace algo como subir una foto a una bucket se activa otra cosa como una lambda fuction que por ejemplo le pone una watermark
    3. AWS Lambda scheduled events
  5. Loose Coupling (las partes de tu sistema son independientes unos de otros)
    1. Well defined interfaces
      1. Amazon API gateaway
    2. Service discovery
      1. Implement service discovery (si cambia el IP tu EC2 como la encuentras? pues con un loadbalancer, apuntas al loadbalancer y el loadbalancer redirige.
    3. Asynchronous Integration
    4. Distributed Systems Best Practices
      1. Graceful Failure in Practice ( si algo falla que no explote todo ja)
  6. Services not servers
    1. Managed services: Cuando usas lo que te da amazon para evitar que te compliques como sus DB y sus queues
    2. Serverless applications: Cuando subes tu código y AWS lo ejecuta por ti
  7. Databases
    1. Relational (aurora
    2. NoSql (DinamoDB)
    3. Data warehouse (redshift)
    4. Graph databases (Neptune)
  8. Remove Single points of failure
    1. Redundancy
    2. Detect failure
    3. Durable data storage
    4. Automated multi data center resilience
    5. Fault isolation
  9. Optimize for Cost
    1. Right sizing
    2. Elasticity
    3. Use purchaising options
      1. Spot
      2. Reserve
  10. Caching
    1. Application
    2. Edge
  11. Security
    1. Defense in depth
    2. Share security model
    3. Least privilege
    4. Security as code
    5. Real time auditing

Global Services

  1. IAM
  2. Route53
  3. Cloudfront (como cloudflare)
  4. SNS Simple notification service
  5. SES Simple email service

Services that can be use on premise

  1. Snowball 80 tb
  2. Snowball edge (disco duro que tiene procesamiento como lambda)
  3. Storage gateway (cachean tus archivos y los mueve a tus buckets)
  4. CodeDeploy
  5. Opsworks (automate how servers are configured, deployed, and managed)
  6. IoT greengrass

AWS system management

Para manejar muchas EC2 y on-premise