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.
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:
¿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.