> For the complete documentation index, see [llms.txt](https://developers.oxylabs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.oxylabs.io/products/es/web-scraper-api/features/result-processing-and-storage/cloud-storage.md).

# Almacenamiento en la nube

Recupera tus resultados extraídos directamente en tu almacenamiento S3, GCS, OSS u otro compatible con S3.

Los resultados del trabajo de Scraper API se almacenan en nuestro almacenamiento. Puede obtener sus resultados desde nuestro almacenamiento mediante `GET`obteniendo el `/results` endpoint.

Como alternativa, podemos subir los resultados a su almacenamiento en la nube. De esta manera, no tiene que hacer solicitudes extra para obtener los resultados: todo va directamente a su contenedor de almacenamiento.

{% hint style="info" %}
La integración con almacenamiento en la nube funciona solo con [**Push-Pull**](/products/es/web-scraper-api/integration-methods/push-pull.md) método de integración.
{% endhint %}

Actualmente, admitimos estos servicios de almacenamiento en la nube:

* [**Google Cloud Storage**](#google-cloud-storage)
* [**Amazon S3**](#amazon-s3)
* [**Alibaba Cloud OSS**](#alibaba-cloud-object-storage-service-oss)
* [**BytePlus Torch Object Storage (TOS)**](#byteplus-tos)
* [**Otro almacenamiento compatible con S3**](#other-s3-compatible-storage)

Si desea usar otro tipo de almacenamiento, póngase en contacto con su gestor de cuenta para hablar sobre el plazo de entrega de la funcionalidad.

La ruta de carga se ve así: `YOUR_BUCKET_NAME/job_ID.json`. Encontrará el ID del trabajo en la respuesta que recibe de nosotros después de enviar un trabajo.

#### Entrada

<table><thead><tr><th>Parámetro</th><th width="187.33333333333331">Descripción</th><th>Valores válidos</th></tr></thead><tbody><tr><td><code>storage_type</code></td><td>Su tipo de almacenamiento en la nube.</td><td><p><code>gcs</code> (Google Cloud Storage);</p><p><code>s3</code> (AWS S3); <code>tos</code> (BytePlus TOS);</p><p><code>s3_compatible</code> (cualquier almacenamiento compatible con S3).</p></td></tr><tr><td><code>storage_url</code></td><td>El nombre del contenedor / URL de su almacenamiento en la nube.</td><td><ul><li>Cualquiera <code>s3</code> , <code>gcs</code> , o <code>tos</code> nombre del contenedor;</li><li>Cualquiera <code>compatible con S3</code> URL de almacenamiento.</li></ul></td></tr></tbody></table>

## **Google Cloud Storage**

La carga útil siguiente hace que Web Scraper API rastree `https://example.com` y ponga el resultado en un contenedor de Google Cloud Storage.

```json
{
    "source": "universal",
    "url": "https://example.com",
    "storage_type": "gcs",
    "storage_url": "bucket_name/path"
}
```

Para que los resultados de su trabajo se suban a su contenedor de Google Cloud Storage, configure permisos especiales para nuestro servicio como se muestra a continuación:

{% stepper %}
{% step %}
**Cree un rol personalizado**

<div align="left"><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-32292235b253d2435d5e0a8d88558c068872956d%2Fgcs-1.png?alt=media" alt=""></div>
{% endstep %}

{% step %}
**Añada `storage.objects.create` permiso**

<div align="left"><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-815bad910c08ed706d3df43ddb20fff0f0563d6d%2Fgcs-2.png?alt=media" alt=""></div>
{% endstep %}

{% step %}
**Asígnelo a Oxylabs**

En el **Nuevos miembros** campo, introduzca lo siguiente **correo electrónico de la cuenta de servicio de Oxylabs**:

```
oxyserps-storage@oxyserps-storage.iam.gserviceaccount.com
```

<div align="left"><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-df5b74908cc6943c8d620b5e14487f2d003ebe43%2Fgcs-3.png?alt=media" alt=""></div>
{% endstep %}
{% endstepper %}

## **Amazon S3**

La carga útil siguiente hace que Web Scraper API rastree `https://example.com` y ponga el resultado en un contenedor de Amazon S3.

```json
{
    "source": "universal",
    "url": "https://example.com",
    "storage_type": "s3",
    "storage_url": "bucket_name/path"
}
```

Para que los resultados de su trabajo se suban a su contenedor de Amazon S3, configure permisos de acceso para nuestro servicio. Para hacerlo, vaya a [**https://s3.console.aws.amazon.com/**](https://s3.console.aws.amazon.com/) → **`S3`** → **`Almacenamiento`** → **`Nombre del contenedor`**` `` ``(si no tiene uno, cree uno nuevo) ` → **`Permisos`** → **`Política del contenedor`**.

<div align="left"><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-1c27676a6e925e4a8c257cf422e991c8a6a1af2c%2Fs3_bucket_policy.png?alt=media" alt=""></div>

Puede encontrar la política del contenedor adjunta abajo o en el área de ejemplo de código.

{% file src="/files/e069034d243398f8dc01f795c1600a61c351f20f" %}
política del contenedor s3
{% endfile %}

No olvide cambiar el nombre del contenedor en `YOUR_BUCKET_NAME`. Esta política nos permite escribir en su contenedor, darle acceso a los archivos subidos y conocer la ubicación del contenedor.

```json
{
    "Version": "2012-10-17",
    "Id": "Policy1577442634787",
    "Statement": [
        {
            "Sid": "Stmt1577442633719",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::324311890426:user/oxylabs.s3.uploader"
            },
            "Action": "s3:GetBucketLocation",
            "Resource": "arn:aws:s3:::YOUR_BUCKET_NAME"
        },
        {
            "Sid": "Stmt1577442633719",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::324311890426:user/oxylabs.s3.uploader"
            },
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*"
        }
    ]
}
```

## Alibaba Cloud OSS

La carga útil siguiente hace que Web Scraper API rastree `https://example.com` y ponga el resultado en un contenedor de Alibaba Cloud OSS.

```json
{
    "source": "universal",
    "url": "https://example.com",
    "storage_type": "s3_compatible",
    "storage_url": "https://ACCESS_KEY_ID:ACCESS_KEY_SECRET@BUCKET_NAME.oss-REGION.aliyuncs.com/FOLDER_NAME"
}
```

### Formación de la URL de almacenamiento <a href="#forming-the-storage-url" id="forming-the-storage-url"></a>

Formato de la URL de almacenamiento:

```http
https://ACCESS_KEY_ID:ACCESS_KEY_SECRET@BUCKET_NAME.oss-REGION.aliyuncs.com/FOLDER_NAME
```

{% hint style="warning" %}
Actualmente, **no podemos subir a la raíz del contenedor**. Proporcione un nombre de carpeta específico para sus cargas.
{% endhint %}

Aquí encontrará el `BUCKET_NAME` y `oss-REGION` de su contenedor:

<figure><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-3258197766d6326f572b9230603b3f700738db36%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

### Creación de la clave de acceso y el secreto <a href="#creating-the-access-key-and-secret" id="creating-the-access-key-and-secret"></a>

Para usar la interfaz compatible con S3 con Alibaba OSS, debe crear `ACCESS_KEY_ID` y `ACCESS_KEY_SECRET` como se muestra a continuación. Para obtener más información, consulte [![](https://img.alicdn.com/tfs/TB1ugg7M9zqK1RjSZPxXXc4tVXa-32-32.png)Cómo usar los SDK de Amazon S3 para acceder a OSS](https://www.alibabacloud.com/help/en/oss/developer-reference/use-amazon-s3-sdks-to-access-oss?spm=a2c63.p38356.0.i1).

{% stepper %}
{% step %}
Vaya al **menú de cuenta AccessKey**

<div align="left"><figure><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-7a0c00eac6fd02fed28c7be5a5522985de3625d5%2Fimage.png?alt=media" alt="" width="422"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
Inicie sesión en el **RAM console**

Acceda a [RAM console](https://ram.console.aliyun.com/) utilizándolo con una **cuenta de Alibaba Cloud** o un **usuario RAM User** que tenga permisos administrativos.
{% endstep %}

{% step %}
Vaya a **Identidades** → **Usuarios** en el panel de navegación izquierdo
{% endstep %}

{% step %}
Seleccione **Crear usuario** y use el **RAM User AccessKey:**

<div align="left"><figure><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-e06b15f92c10028d2f5c368321821a90abf01f3f%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure></div>

<div align="left"><figure><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-4103046af7ce401cd189cd53f238fddf41b64ab5%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
**Conceda permisos al usuario RAM User**

El usuario RAM User recién creado no tiene permisos. Debe conceder **AliyunOSSFullAccess** permisos al usuario RAM User. Entonces, el usuario RAM User podrá acceder a los recursos necesarios de Alibaba Cloud. Para obtener más información, consulte [Conceder permisos a usuarios RAM User](https://www.alibabacloud.com/help/en/ram/user-guide/grant-permissions-to-the-ram-user#task-187800).

<div align="left"><figure><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-6d76a9af42bd9f8eaabdbee6c4baadd5824a0a09%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
Obtenga su **AccessKey ID** y **AccessKey Secret**

Cuando se hayan concedido los permisos, vuelva a la **Autenticación** sección y, en la **Access Key** sección, seleccione **Crear AccessKey**. Elija crear una Access Key para un **servicio de terceros**. Entonces verá un `ACCESS_KEY_ID` y `ACCESS_KEY_SECRET`, que luego puede usar en sus solicitudes.
{% endstep %}
{% endstepper %}

### Límites de tasa de Alibaba OSS <a href="#alibaba-oss-ratelimits" id="alibaba-oss-ratelimits"></a>

Al realizar cargas concurrentes a Alibaba OSS, es posible alcanzar los límites de tasa de cuenta/contenedor, y las cargas comenzarán a agotar el tiempo de espera con el siguiente error:

<div align="left"><figure><img src="https://2786356907-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBQ7Zf9paoN3FTeGcyfY1%2Fuploads%2Fgit-blob-8c6734c7968642444e43843fb1f200f0ab739c81%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure></div>

En este caso, póngase en contacto con el soporte de Alibaba OSS para aumentar sus límites de tasa de OSS.

## BytePlus TOS

Puede subir los resultados rastreados directamente a un contenedor de BytePlus Torch Object Storage (TOS).

Para una conexión exitosa, necesitará:

* Un contenedor TOS correctamente configurado.
* Su access key y secret key.
* Un endpoint compatible con S3.

Puede encontrar una lista de todos los endpoints S3 disponibles en la documentación oficial de BytePlus [documentación](https://docs.byteplus.com/en/docs/tos/docs-region-and-endpoint).

### Ejemplo

La siguiente carga útil rastreará `https://example.com` y subirá los resultados a su contenedor TOS.

```json
{
    "source": "universal",
    "url": "https://example.com",
    "storage_type": "tos",
    "storage_url": "https://access_key:secret_key@endpoint/bucket_name/path"
}
```

### Parámetros <a href="#docs-internal-guid-dbfc45c7-7fff-9754-b71a-bacb24e2ac54" id="docs-internal-guid-dbfc45c7-7fff-9754-b71a-bacb24e2ac54"></a>

<table><thead><tr><th width="166">Parámetro</th><th width="165">Valores disponibles</th><th>Descripción</th></tr></thead><tbody><tr><td><code>storage_type</code></td><td><code>tos</code></td><td>Especifica BytePlus TOS como proveedor de almacenamiento.</td></tr><tr><td><code>storage_url</code></td><td>Cadena de URL</td><td>URL autenticada a su contenedor TOS (consulte el formato abajo).</td></tr></tbody></table>

### Formato de la URL de almacenamiento

La `storage_url` debe construirse usando sus credenciales TOS y los detalles del contenedor.

```bash
https://access_key:secret_key@endpoint/bucket_name/path
```

| Componente    | Descripción                                                                     |
| ------------- | ------------------------------------------------------------------------------- |
| `access_key`  | Su ID de access key de BytePlus.                                                |
| `secret_key`  | Su secret access key de BytePlus.                                               |
| `endpoint`    | El endpoint específico de la región (p. ej., `tos-cn-hongkong.bytepluses.com`). |
| `bucket_name` | Nombre del contenedor de destino.                                               |
| `path`        | *(Opcional)* Ruta específica de la carpeta del contenedor.                      |

{% hint style="warning" %}
Si su Access Key o Secret Key contiene caracteres especiales (como `/`, `+`, o `=`), estos **deben codificarse en URL** antes de construir la cadena.
{% endhint %}

### Nomenclatura del archivo de salida

Oxylabs genera automáticamente los nombres de archivo de los objetos subidos según los detalles del trabajo:

* **HTML/Contenido:** `{query_id}_{timestamp}.html`
* **Datos analizados:** `{query_id}_results.json`

Los archivos estarán disponibles en su contenedor en: `tos://{bucket_name}/{path}/{filename}`

## Otro almacenamiento compatible con S3

Si desea que sus resultados se entreguen en una ubicación de almacenamiento compatible con S3, deberá incluir la `ACCESS_KEY:SECRET` cadena de autenticación en el `storage_url` valor de la carga útil:

```json
{
    "source": "universal",
    "url": "https://example.com",
    "storage_type": "s3_compatible",
    "storage_url": "https://ACCESS_KEY:SECRET@s3.oxylabs.io/my-videos"
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://developers.oxylabs.io/products/es/web-scraper-api/features/result-processing-and-storage/cloud-storage.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
