💻
S3 - Networking
Date @March 19, 2025
Tags Clase
Adding a storage layer
Tipos de almacenamiento
1. File storage: la metadata del producto me jerarquiza la memoria que está
guardada en un determinado formato (como por ejemplo excel). Adecuado
para compartr archivos y colaborar en red, ya que permite el acceso
simultáneo a los missmos archivos por parte de múltiples usuarios.
ARCHIVOS Y CARPETAS.
En AWS hay Elastic File System (EFS) → todos los que estamos
trabajando sobre un mismo archivo vamos a poder accederlo y editarlo.
Por ejemplo, cuando en el trabajo cada uno tiene acceso a su máquina
virtual, se define este espacio para poder guardar y compartir el acceso
a los mismos archivos.
2. Block storage: se dividen los datos en bloques numerados y permite a los
sistemas acceder a estos bloques individualmente. Los bloques se tratan
como dispositivos de almacenamiento separados.
Se suele utilizar para datos estructurados
Sirve por temas de eficiencia. puedo acceder a estos bloques pero no
tengo la granularidad que si tengo en otros tipos de storage.
Ejemplo platos: permite usar lo que tenes libre mientras no usas lo que
está ovcupado en vez de solicitar borrar lo que está ocupado. Si tenes
los platos 1, 2, 3 y 4 y el 3 está en tu cuarto con tostadas, podes usar el
resto que estan libres.
Se usa para attachear memoria durable a los programas. si tengo que
correr y guardar una instancia de un programa o una base de datos, la
S3 - Networking 1
attacheo a esto.
SOLO LO PUEDE ESTAR USANDO UNO A LA VEZ.
También es útil para guardar cosas que hay en una instancia y hacer
como un back up de esa instancia para que se guarde cuando la
instancia muera.
Hay tipos → dissco rígido y disco sólido, también hay distintos niveles,
etc
3. Object storage: se organizan los datos como objetos, donde c/u contiene
datos, metadatos y un identificador único. me parmite almacenar datos
como objetos completos, como un todo (nunca voy a poder acceder a una
parte puntual del objeto, siempre accedo al todo).
Muy eficientes para datos no estructurados, son más pesados.
El servicio de Object Storage de AWS es S3
S3 - Networking 2
💡 S3 es un servicio de AWS que ofrece almacenamiento
ilimitado de datos no estructurados.
Los datos se almacenan como objetos dentro de un bucket.
Es un servicio regional → NO VA ADENTRO DE LA VPC !!!
Es una gran base de datos de la cuál nos dan una pequena
parte que es un bucket. Un bucket es una instancia de S3.
SLA → Service Level Agreement: determina cuánto estoy
dispuesto a pifiar. Proveedor se compromete a cumplir con X
tiempo al anio de uptime (% del tiempo del anio que voy a
estar arriba).
Provee 11 9’s de durabilidad (casi infinito, no falla nunca). Esto
quiere decir que no voy a perder el archivo (pierdo 1 en cada
100mil millones de archivos)
Provee 4 9’s de disponibiliad. Cuando guardas un archivo en
un bucket, en realidad se está replicando en 2 buckets más de
distintas AZs.
Los archivos pueden tener un tamanio máximo de hasta 5 TB.
Todos los buckets se tienen que llamar distinto!!!
Ofrece un control de acceso muy flecible → puedo definir
quienes pueden acceder y hay muchas opciones.
Versionado → si lo tengo prendido y hago cambios en una
foto por ejemplo, puedo pisarla y si me arrepiento puedo
volver atrás. NO ES GRATIS, cuesta lo que ocupa cada cosa
que updateo. Nunca quiero tener prendido el versionado para
front end porque…
Permite hostear sitios estáticos → la pág web (si uso los
recursos correspondientes, que son HTML, JavaScript y CSS)
puede estar guardada acá. Pero entonces la instancia sería tu
computadora.
Objetos dentro de un bucket
Identificador único: para diferenciarlo de todo el resto
S3 - Networking 3
Privados por default:
Accesibles globalmente: accedidos mediante una URL
Parámetros adicionales: los objetos contarán con metadata y un id de
versión
Privacidad en S3
Encriptación
At rest: se encripta cuando está ahí guardado
In transit: cuando estas mandando la contrasenia, se encripta
Client side encryptation: vos podes encriptar por tu parte para que lo
que vos envíes (por ejemplo, tu contrasenia), antes de enviarlo y que
pase por los protocolos de internet y todo. Cuando entra al servidor
público se vuelve a encriptar. Es por si no confío en el servidor. Acá
AWA no está, es previo.
Server side encryptation: los datos se encriptan una vez que llegan al
bucket de AWS antes de almacenarlos.n Hay dos formas de encriptar:
Confío en que amazon haga la clave y lo encripte. Yo no se la clave
y no la accedo.
Puedo usar KMS (key management store), me permite hacer dos
cosas:
Crear una clave que me la genera amazon pero la manejo yo, se
cuál es.
S3 - Networking 4
La genero yo y se la doy a amazon para que me la guarde. Esta
forma tiene sentido porque la forma en la que generas la clave
ES IMPORTANTE.
Transferencia de datos en S3
Existen 3 formas de subir datos a S3:
SDK → es un enlatado que me ayuda a facilitar la integración entre mis
archivos y S3. Acá escribo código. Lo usan los programas, si mi app
quiere conectarse con S3 lo hace así.
A través de la consola de AWS → abris la consola de AWS y arrastras
archivos, human friendly
A través de la AWS command line interface → haces un comando
codeando en vez de arrastrar los archivos, lo haces vos en la terminal.
💡 Qué pasa si tengo que subir archivos grandes y se me
interrumpe la conexión? → MULTIPART UPLOAD: agarra un
objeto grande, lo separa en partecitas, las numera y las va
subiendo en orden. SI se frena, vuelve a arrancar en la que se
frené porque no tiene registro de tener esa partecita completa. No
se pierde el progreso. Para este tipo de cosas grandes, se usa
consola o SDK.
Versionado
S3 - Networking 5
.
Consistencia de datos en S3
Read After Write Consistency → si yo acabo de escribir un archivo que
acabo de crear, a penas AWS me de el okay y lo suba, otro usuario puede
ver instantaneamente lo que acabo de hacer. Pero cuando tengo el
versionado activado y hago un cambio y lo subo, no se garantiza esto
instantáneamente, SOLO SUCEDE A PENAS SON CREADOS. No es que no
lo voy a ver actualizado, sino que quizás no va a ser al toque.
Replicación de datos
Cross region replication → me sirve para poder replicar lo que hay en
s3 en una región en otra. Por ejemplo, MELI quiere replicar todos los
objetos de un bucket fuente en eeuu a uno en europa.
Es casi instantáneo.
Para poder activarlo, hay que tener el versionado activado en todos
los buckets !! No sabemos bien por qué jaja
Transferencia de datos
S3 Transfer Acceleration → para optimizar la trasferencia usando AWS
Edge Location, o sea optimizando todos los puntos de presencia. En
vez de viajar por internet como todos, va por este otro lado y es más
rápido.
Y si tengo que transferir muchísima data?? AWS Snowball permite
transportar múltiples TBs de datos sin la necesidad de que los mismos
viajen a través de internet. Es literal una caja que te traen y la conectan
con un cable a tu servidor (tarda aprox 1 día en comparación a hacerlo
normal que puede tardar muchísimos días). Suele ser para pasar cosas
de on premise a cloud. Carísimo.
Y SI TENGO MAS DATA TODAVIA??? AWS Snowmobile es un camión
de 14 metros (wtf) que permite transferir hasta 100 PB por camión.
Tipos de storage
S3 - Networking 6
S3 standard → se resuelve casi que todo problema que tengas, es muy
flexible pero caro.
S3 standard Infrequent access → es lo más barato, pero no es que
puedo meter directo cualquier data acá. solo puedo meter data que
haya viviso al menos 30 días en standard. Seguro tarda un poquito más
en acceder cuando lo busco. Para cosas que no se usan mucho pero
que si las necesito tienen que estar.
S3 One zone IA → a diferencia del resto, se guarda solo en una zona.
Sacrifico disponibilidad y durabilidad. Para cosas que no se usan
mucho y no me importan mucho. Se ahorra mucho costo.
S3 Glacier → para gusrdar objetos a los que no se accede mucho, pero
son muchos. Ejemplo más común son los logs, son muchos y solo
quiero acceder si se me llega a caer el sistema y tengo que ir a ver que
pasó. hay 3 formas de acceso, la elegís según convenga. El expedited
es si sabes exáctamente donde está el log que queres buscar. Bulk es
el otro extremo porque no se bien donde está lo que necesito o porque
encesito una información de un período muy largo. Esto está bueno
porque ahorras mucho en almacenamiento. Se paga por cada pedido
de acceso que haces.
Deep Archive es para lo que no se accede nunca, quizás tarda 2
meses en acceder y tener esa info. Para las cosas que no se
pueden borrar por “regla”, pero quiero pagar lo menos posible.
S3 - Networking 7
Intelligent Tiering → caudno ya tenes las cosas en standard infrequent,
podes acceder a intelligent tiering que te cambia el lugar (standard o
standard infrequent access) según convenga. Si lo prendes, va a actuar
solo, no yte va a preguntar cuando quiera mover algo.
Lifecycle policies
Costos en S3
Antes → GB entrantes son gratis (escritura), GB salientes son pagas
(lectura, modificación)
Ahora → GB entrantes y salientes son gratis, solo que cada GB te sale
más caro (básicamente te cobran por otro lado)
Hosting de Static sites → uno de los casos más comunes de uso de S3
es para hostear pags web estáticas, sin la necesidad de manejar un
sevridor. La lógica de la pag se corre en tu computadora. SI DICE PHP,
NO VALE HACER EL FRONT EN S3 !!!
Con HTML yo defino la estructura, donde va el texto, las fotos, etc.
CSS lo pone lindo. Detrás de todo esto está javascript si es un sitio
estático, LO VA A BUSCAR S3.
Si tengo PHP, manda un rqeuest a un servidor y el servidor agarra
el pedido, lo procesa y devuelve la foto solicitada para poner en la
página. FUI AL SERVIDOR O SEA NO ES PARA PAGS ESTATICAS.
S3 - Networking 8
‼️ Si toca un front con PHP tengo que usar una instancia que vive en
una VPC en una subnet pública. No puedo usar S3.
Algunos ejemplos
‼️ El front end lo guardas en github que es gratis y lo reversionas
ahí, por eso no usas el versionado de S3 para front end.
3. Depende de cuándo lo voy a acceder, cada cúanto y cuántas veces lo
voy a usar. Ponele si te exige tener guardados los datos con los que
entrenaste, podes arrancar en standard y una vez que ya entrenaste y
ya pasaron 30 días lo vas pasando a otros tiers más bajos.
4. Depende falta mucha info !
S3 - Networking 9