# Amazon S3
Lea datos de sus propios buckets de Amazon S3, desde CSV y Parquet hasta imágenes, y llévelos a Nexus. El acceso de solo lectura es suficiente y ningún secreto cambia de manos.
## Antes de empezar [#antes-de-empezar]
Solo los propietarios y administradores del espacio de trabajo agregan conexiones a buckets. Consulte [Miembros y roles](/docs/es/workspace/members).
- **Su bucket.** Su nombre, su región y, si quiere, una carpeta (prefijo) para limitar lo que Klarety puede leer.
- **Permiso para editar la política del bucket**, o alguien de su equipo que lo tenga.
## Cómo funciona [#cómo-funciona]
1. Usted crea una conexión que nombra su bucket.
2. Klarety le da una política de bucket. Usted la pega en su bucket, en su propia cuenta de AWS.
3. Klarety lee ese bucket (o solo el prefijo) donde está. No se copia nada antes y no se guarda ninguna clave.
Para quitar el acceso, quite la política o elimine la conexión.
## Conecte un bucket [#conecte-un-bucket]
Las conexiones a buckets las crea en código un propietario o administrador (cambie a la vista de código arriba). Para pocos archivos, súbalos con [Agregar datos](/docs/es/data/add-data).
También puede abrir **Amazon S3** en y usar **Conéctelo con la IA de su Studio**. La IA prepara la conexión, pero solo una persona agrega la política del bucket.
### Cree la conexión [#cree-la-conexión]
```python title="connect_bucket.py"
from klarety import Nexus
nx = Nexus.connect("YOUR_API_KEY")
connection = nx.connections.create(
"raw-files",
bucket="your-bucket",
region="us-east-1",
prefix="exports/",
)
connection_id = connection["connection_id"]
grant = nx.connections.grant_policy(connection_id)
print(grant["policy"])
```
`prefix` es opcional y limita la lectura a esa carpeta. `writable` es `False` por defecto; déjelo así para solo leer.
### Pegue la política en su bucket [#pegue-la-política-en-su-bucket]
En su cuenta de AWS, agregue la `policy` impresa a la política del bucket, en sus permisos. Si ya existe una, agregue la nueva declaración en lugar de reemplazarla.
### Pruébela [#pruébela]
```python
print(nx.connections.test(connection_id))
```
`reachable` es `True` cuando Klarety puede leer el bucket; si no, `reason` dice qué corregir. `test` nunca lanza un error cuando no se puede acceder al bucket.
## Lea archivos en Nexus [#lea-archivos-en-nexus]
Pídale a la IA de su Studio que cargue archivos del bucket, por ejemplo: "Cargue todos los archivos Parquet de 2026/ en una tabla llamada pedidos." Las filas llegan a una tabla que puede consultar en el .
```python title="read_from_bucket.py"
from klarety import Nexus
nx = Nexus.connect("YOUR_API_KEY")
connection_id = "YOUR_CONNECTION_ID"
check = nx.connections.test(connection_id)
print(check["reachable"], check["reason"])
for entry in nx.connections.browse(connection_id, "2026/"):
print(entry["key"], entry["is_prefix"], entry.get("size_bytes"))
run = nx.connections.read(connection_id, "2026/orders.parquet", into="orders")
print(run["run_id"], run["state"])
print(nx.ingest_status(run["run_id"]).state)
```
- `browse(connection_id, path)` lista una página del bucket bajo `path`: carpetas (`is_prefix`) y archivos con su tamaño y formato detectado.
- `read(connection_id, path, into=..., key=[...])` carga un objeto como una subida. `into` nombra la tabla; `key` indica las columnas que identifican una fila, para que una carga posterior actualice filas en lugar de duplicarlas.
- `read` responde de inmediato con un `run_id`. Sígalo con `nx.ingest_status(run_id)`.
- `list()`, `describe(connection_id)` y `delete(connection_id)` administran las conexiones.
## Errores y soluciones [#errores-y-soluciones]
| Qué pasa | Qué hacer |
| --- | --- |
| `test` dice que no puede leer | Falta la política o no coincide. Péguela de nuevo desde `grant_policy`. |
| 403 al crear | Solo los propietarios y administradores agregan conexiones. |
| 404 en una conexión | El ID es incorrecto o usted no tiene acceso a esa conexión. |
| Se rechaza una ruta | La ruta está fuera del prefijo de la conexión o contiene `..`. |
| `read` se rechaza por la región | Klarety no puede leer un bucket en esa región. Use un bucket en una región compatible. |
Consulte [Errores](/docs/es/developers/errors) para ver el formato de los errores.
## Siguientes pasos [#siguientes-pasos]
- [Conexiones en el SDK](/docs/es/developers/connections)
- [Ingesta](/docs/es/developers/ingest)
- [Agregar datos](/docs/es/data/add-data)