Amazon S3

Resumen General

S3 (Simple Storage Service) es un servicio de almacenamiento de objetos en la nube, ideal para alojar archivos estáticos, respaldos, sitios web, imágenes y más. Es altamente escalable, duradero y seguro.

Links de Contenido

Anotaciones:

¿Qué es Amazon S3?

Amazon S3 permite almacenar objetos (archivos) dentro de contenedores llamados buckets. Cada objeto tiene una clave única y puede ser accedido mediante URL. Ideal para almacenar datos estáticos como imágenes, documentos, backups o sitios web estáticos.

  • Integración con servicios como CloudFront, Lambda y Glacier.
  • Acceso programático vía AWS CLI o SDKs.
  • URLs firmadas para acceso temporal y seguro.

Clases de almacenamiento

S3 ofrece distintas clases de almacenamiento que se adaptan a patrones de acceso y optimización de costos:

  • Standard: Acceso frecuente, baja latencia.
  • Intelligent-Tiering: Optimiza automáticamente el costo según el acceso.
  • S3 Glacier y Glacier Deep Archive: Para archivado y backups a largo plazo.
  • One Zone-IA: Para datos de acceso infrecuente pero sin alta disponibilidad.

Permisos y políticas

El acceso a los buckets se controla mediante políticas de bucket, listas de control de acceso (ACLs) y configuraciones de bloqueo de acceso público. Asegurate de deshabilitar el bloqueo de acceso público si necesitás servir archivos públicamente.

Cargando contenido...

Subir un sitio web estático con AWS CLI

  • Instalá AWS CLI y configurá con aws configure.
  • Creá un bucket y habilitá el modo de hosting estático.
  • Parate sobre tu carpeta /out (por ejemplo de Next.js) y ejecutá: aws s3 sync ./out s3://tobias-s3-prueba.
  • Habilitá el acceso público y configurá el archivo de inicio y error en la consola de S3.

Generar URLs temporales (firmadas)

Podés usar Boto3 (Python) para generar URLs firmadas que permiten acceso temporal a archivos privados:

Cargando contenido...

¿Cómo habilitar HTTPS en un sitio S3?

S3 no soporta HTTPS directamente para sitios estáticos. Para lograr HTTPS, se utiliza CloudFront como capa de distribución segura.

  • Creamos una distribución en CloudFront apuntando al bucket.
  • Usamos ACM para emitir un certificado SSL válido.
  • Configuramos la distribución para redirigir HTTP a HTTPS.
  • Podemos usar un dominio propio y configurar DNS en Route53.

Tips finales

  • El comando aws s3 sync solo sube archivos modificados.
  • Podés configurar redirección de errores (por ejemplo, a /404.html).
  • S3 soporta versiones de archivos y puede integrarse con eventos Lambda.