# Armazenamento em nuvem

Os resultados dos jobs da Scraper API são armazenados em nosso storage. Você pode obter seus resultados do nosso storage por `GET`ando o `/results` endpoint.

Como alternativa, podemos enviar os resultados para o seu armazenamento em nuvem. Dessa forma, você não precisa fazer requisições extras para buscar os resultados – tudo vai diretamente para o seu bucket de armazenamento.

{% hint style="info" %}
A integração com armazenamento em nuvem funciona apenas com [**Push-Pull**](/products/pt-br/web-scraper-api/integration-methods/push-pull.md) método de integração.
{% endhint %}

Atualmente, oferecemos suporte a estes serviços de armazenamento em nuvem:

* [**Google Cloud Storage**](#google-cloud-storage)
* [**Amazon S3**](#amazon-s3)
* [**Alibaba Cloud Object Storage Service (OSS)**](#alibaba-cloud-object-storage-service-oss)
* [**BytePlus Torch Object Storage (TOS)**](#byteplus-tos)
* [**Outro armazenamento compatível com S3**](#other-s3-compatible-storage)

Se você quiser usar outro tipo de armazenamento, entre em contato com seu gerente de conta para discutir o prazo de entrega do recurso.

O caminho de upload é assim: `YOUR_BUCKET_NAME/job_ID.json`. Você encontrará o ID do job na resposta que recebe de nós após enviar um job.

#### Entrada

<table><thead><tr><th>Parâmetro</th><th width="187.33333333333331">Descrição</th><th>Valores válidos</th></tr></thead><tbody><tr><td><code>storage_type</code></td><td>O tipo de armazenamento em nuvem.</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> (qualquer armazenamento compatível com S3).</p></td></tr><tr><td><code>storage_url</code></td><td>O nome / URL do seu bucket de armazenamento em nuvem.</td><td><ul><li>Qualquer <code>s3</code> , <code>gcs</code> , ou <code>tos</code> nome do bucket;</li><li>Qualquer <code>s3-compatible</code> URL de armazenamento.</li></ul></td></tr></tbody></table>

## **Google Cloud Storage**

O payload abaixo faz a Web Scraper API raspar `https://example.com` e colocar o resultado em um bucket do Google Cloud Storage.

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

Para fazer com que os resultados do seu job sejam enviados para o seu bucket do Google Cloud Storage, configure permissões especiais para o nosso serviço, como mostrado abaixo:

{% stepper %}
{% step %}
**Crie uma função personalizada**

<div align="left"><img src="/files/7009d19bcab83420d6e63edafa6915f23fb4b85d" alt=""></div>
{% endstep %}

{% step %}
**Adicione `storage.objects.create` permissão**

<div align="left"><img src="/files/10be09c94598b8c72c3a93f26e3f122f9f787cd6" alt=""></div>
{% endstep %}

{% step %}
**Atribua-a à Oxylabs**

Em **Novos membros** o campo, insira o seguinte **e-mail da conta de serviço da Oxylabs**:

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

<div align="left"><img src="/files/313915fd2662822e2d7d13416642f825e7c89090" alt=""></div>
{% endstep %}
{% endstepper %}

## **Amazon S3**

O payload abaixo faz a Web Scraper API raspar `https://example.com` e coloque o resultado em um bucket do Amazon S3.

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

Para fazer com que os resultados do seu job sejam enviados para o seu bucket do Amazon S3, configure permissões de acesso para o nosso serviço. Para isso, vá para [**https://s3.console.aws.amazon.com/**](https://s3.console.aws.amazon.com/) → **`S3`** → **`Armazenamento`** → **`Nome do bucket`**` ``(se você não tiver um, crie um novo)` → **`Permissões`** → **`Política do bucket`**.

<div align="left"><img src="/files/21b427d9b3ce11c089ae8722a7f4e42a06cea39f" alt=""></div>

Você pode encontrar a política do bucket anexada abaixo ou na área de exemplo de código.

{% file src="/files/84c463db620bbf6d7d2c55b109d8ab03aaf6bccf" %}
política de bucket s3
{% endfile %}

Não se esqueça de alterar o nome do bucket em `YOUR_BUCKET_NAME`. Esta política nos permite gravar no seu bucket, dar a você acesso aos arquivos enviados e saber a localização do bucket.

```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 Object Storage Service (OSS)

O payload abaixo faz a Web Scraper API raspar `https://example.com` e coloque o resultado em um bucket do Alibaba Cloud OSS.&#x20;

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

### Formando a Storage URL <a href="#forming-the-storage-url" id="forming-the-storage-url"></a>

Formato da Storage URL:

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

{% hint style="warning" %}
Atualmente, **não podemos enviar para o bucket raiz**. Forneça um nome de pasta específico para seus uploads.
{% endhint %}

Aqui é onde você encontrará o `BUCKET_NAME` e `oss-REGION` do seu bucket:

<figure><img src="/files/e022a76f2a194e2b189186f590dc0efa19a6ca70" alt=""><figcaption></figcaption></figure>

### Criando o Access Key e o Secret <a href="#creating-the-access-key-and-secret" id="creating-the-access-key-and-secret"></a>

Para usar a interface compatível com S3 com o Alibaba OSS, você deve criar o `ACCESS_KEY_ID` e `ACCESS_KEY_SECRET` como mostrado abaixo. Para mais informações, veja [![](https://img.alicdn.com/tfs/TB1ugg7M9zqK1RjSZPxXXc4tVXa-32-32.png)Como usar SDKs do Amazon S3 para acessar o OSS](https://www.alibabacloud.com/help/en/oss/developer-reference/use-amazon-s3-sdks-to-access-oss?spm=a2c63.p38356.0.i1).

{% stepper %}
{% step %}
Vá para o **Menu da Conta AccessKey**

<div align="left"><figure><img src="/files/58aa29c107767994cac11a3d9fe1f6ee6ce0472d" alt="" width="422"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
Faça login no **RAM console**

Acesse o [RAM console](https://ram.console.aliyun.com/) usando uma **conta Alibaba Cloud** ou um **usuário RAM** que tenha direitos administrativos.
{% endstep %}

{% step %}
Vá para **Identidades** → **Usuários** no painel de navegação à esquerda
{% endstep %}

{% step %}
Selecione **Criar usuário** e use o **RAM User AccessKey:**

<div align="left"><figure><img src="/files/ce82a5687095093ca9bb2779e2ab5b995ae41090" alt=""><figcaption></figcaption></figure></div>

<div align="left"><figure><img src="/files/c03af1a3e99a8219e0b902234bc13b4d1e0c9cc8" alt=""><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
**Conceda permissões ao usuário RAM**

O usuário RAM recém-criado não tem permissões. Você deve conceder permissões **AliyunOSSFullAccess** ao usuário RAM. Então, o usuário RAM poderá acessar os recursos necessários da Alibaba Cloud. Para mais informações, veja [Conceder permissões aos usuários RAM](https://www.alibabacloud.com/help/en/ram/user-guide/grant-permissions-to-the-ram-user#task-187800).

<div align="left"><figure><img src="/files/bc36f28bffc0943a572e63f092c0fcdabcaaa251" alt=""><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
Obtenha seu **AccessKey ID** e **AccessKey Secret**

Quando as permissões forem concedidas, volte para a seção **Autenticação** e, na seção **Access Key** selecione **Criar AccessKey**. Escolha criar um Access Key para um **serviço de terceiros**. Você verá então um `ACCESS_KEY_ID` e `ACCESS_KEY_SECRET`, que você poderá usar em suas requisições.
{% endstep %}
{% endstepper %}

### Limites de taxa do Alibaba OSS <a href="#alibaba-oss-ratelimits" id="alibaba-oss-ratelimits"></a>

Ao fazer uploads simultâneos para o Alibaba OSS, é possível atingir os limites de taxa da conta/bucket, e os uploads começarão a expirar com o seguinte erro:

<div align="left"><figure><img src="/files/484b4b68046fcccbdf7707f450e08b6fc4aac2a6" alt="" width="563"><figcaption></figcaption></figure></div>

Nesse caso, entre em contato com o suporte do Alibaba OSS para aumentar seus limites de taxa do OSS.

## BytePlus TOS

Você pode enviar resultados raspados diretamente para um bucket do BytePlus Torch Object Storage (TOS).

Para uma conexão bem-sucedida, você precisará de:

* Um bucket TOS configurado corretamente.
* Sua access key e secret key.
* Um endpoint compatível com S3.

Você pode encontrar uma lista de todos os endpoints S3 disponíveis na documentação oficial da BytePlus [documentação](https://docs.byteplus.com/en/docs/tos/docs-region-and-endpoint).

### Exemplo

O payload a seguir irá raspar `https://example.com` e enviar os resultados para o seu bucket TOS.

```json
{
    "source": "universal",
    "query": "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 disponíveis</th><th>Descrição</th></tr></thead><tbody><tr><td><code>storage_type</code></td><td><code>tos</code></td><td>Especifica o BytePlus TOS como provedor de armazenamento.</td></tr><tr><td><code>storage_url</code></td><td>string de URL</td><td>URL autenticada para o seu bucket TOS (veja o formato abaixo).</td></tr></tbody></table>

### Formato da Storage URL

A `storage_url` deve ser construída usando suas credenciais TOS e os detalhes do bucket.

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

| Componente    | Descrição                                                                        |
| ------------- | -------------------------------------------------------------------------------- |
| `access_key`  | Seu ID da access key da BytePlus.                                                |
| `secret_key`  | Sua secret access key da BytePlus.                                               |
| `endpoint`    | O endpoint específico da região (por exemplo, `tos-cn-hongkong.bytepluses.com`). |
| `bucket_name` | Nome do bucket de destino.                                                       |
| `path`        | *(Opcional)* Caminho da pasta específica do bucket.                              |

{% hint style="warning" %}
Se sua Access Key ou Secret Key contiver caracteres especiais (como `/`, `+`, ou `=`), eles **devem ser codificados em URL** antes de construir a string.
{% endhint %}

### Nomeação do Arquivo de Saída

A Oxylabs gera automaticamente nomes de arquivo para os objetos enviados com base nos detalhes do job:

* **HTML/Content:** `{query_id}_{timestamp}.html`
* **Dados analisados:** `{query_id}_results.json`

Os arquivos estarão acessíveis no seu bucket em: `tos://{bucket_name}/{path}/{filename}`

## Outro armazenamento compatível com S3

Se você quiser que seus resultados sejam entregues em um local de armazenamento compatível com S3, você terá que incluir a `ACCESS_KEY:SECRET` string de autenticação no `storage_url` valor no payload:

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


---

# Agent Instructions: 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:

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

The question should be specific, self-contained, and written in natural language.
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.
