Exportar datos de DynamoDB a Amazon S3 es una tarea común para respaldos, análisis o integraciones. Aquí te muestro las opciones disponibles y cómo hacerlo paso a paso:
✅ OPCIÓN 1: Exportar directamente desde DynamoDB a S3 (sin código)
🔸 Requisitos:
- La tabla debe tener DynamoDB Streams habilitado.
- Debes tener un bucket S3 disponible.
- Rol de IAM con permisos adecuados.
🔸 Pasos (consola AWS):
- Ve a la Consola de DynamoDB.
- Selecciona la tabla que quieres exportar.
- Haz clic en "Exportar a S3".
- Elige el bucket S3 y configura el prefijo (carpeta).
- Haz clic en "Exportar".
- Se generará un archivo
.parquet por cada fragmento exportado.
✅ OPCIÓN 2: Usar AWS Data Pipeline (más personalizable, pero está quedando en desuso)
Recomendado solo si necesitas exportar a formatos como CSV/JSON automáticamente.
✅ OPCIÓN 3: Exportación personalizada con AWS Lambda + Streams
Ideal si quieres:
- Exportar solo ciertos datos.
- Exportar en tiempo real a medida que se insertan.
Flujo:
- Habilita Streams en tu tabla DynamoDB.
- Crea una función Lambda que se dispare con los eventos del Stream.
- Desde Lambda, escribe los datos en un archivo y súbelos a S3 usando
boto3.
Ejemplo básico de función Lambda en Python:
import boto3
import json
s3 = boto3.client('s3')
bucket_name = 'mi-bucket-export'
def lambda_handler(event, context):
for record in event['Records']:
if record['eventName'] == 'INSERT':
new_item = record['dynamodb']['NewImage']
key = f"dynamodb-backup/{new_item['ID']['S']}.json"
s3.put_object(
Bucket=bucket_name,
Key=key,
Body=json.dumps(new_item)
)
✅ OPCIÓN 4: Usar AWS Glue para transformar y exportar datos
Si deseas analizar los datos en Athena, QuickSight o Redshift, AWS Glue puede leer DynamoDB, transformarlos y almacenarlos en S3.
🔐 Permisos IAM mínimos
Asegúrate de que el rol de IAM tenga permisos como:
{
"Effect": "Allow",
"Action": [
"dynamodb:DescribeTable",
"dynamodb:Scan",
"s3:PutObject"
],
"Resource": "*"
}