# 云存储

网页爬虫API 作业结果存储在我们的存储中。你可以通过 `GET`获取 `/results` 端点来从我们的存储中获取结果。

或者，我们可以将结果上传到你的云存储。这样，你无需发起额外请求来获取结果——所有内容都会直接进入你的存储桶。

{% hint style="info" %}
云存储集成仅适用于 [**Push-Pull**](https://developers.oxylabs.io/documentation/cn/zhua-qu-jie-jue-fang-an/web-scraper-api/integration-methods/push-pull) 集成方法。
{% endhint %}

目前，我们支持以下云存储服务：

* [**Google Cloud Storage**](#google-cloud-storage)
* [**Amazon S3**](#amazon-s3)
* [**Alibaba Cloud 对象存储服务 (OSS)**](#alibaba-cloud-object-storage-service-oss)
* [**BytePlus Torch 对象存储 (TOS)**](#byteplus-tos)
* [**其他兼容 S3 的存储**](#other-s3-compatible-storage)

如果你想使用其他类型的存储，请联系你的客户经理以讨论该功能的交付时间表。

上传路径如下所示： `YOUR_BUCKET_NAME/job_ID.json`。你可以在提交作业后从我们收到的响应中找到作业 ID。

#### 输入

<table><thead><tr><th>参数</th><th width="187.33333333333331">说明</th><th>有效值</th></tr></thead><tbody><tr><td><code>storage_type</code></td><td>你的云存储类型。</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> （任何兼容 S3 的存储）。</p></td></tr><tr><td><code>storage_url</code></td><td>你的云存储桶名称 / URL。</td><td><ul><li>任意 <code>s3</code> , <code>gcs</code> ，或 <code>tos</code> 存储桶名称；</li><li>任意 <code>兼容 S3 的</code> 存储 URL。</li></ul></td></tr></tbody></table>

## **Google Cloud Storage**

下面的负载会让 网页爬虫API 抓取 `https://example.com` 并将结果放入 Google Cloud Storage 存储桶中。

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

要将你的作业结果上传到你的 Google Cloud Storage 存储桶，请按如下所示为我们的服务设置特殊权限：

{% stepper %}
{% step %}
**创建自定义角色**

<div align="left"><img src="https://2655358775-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FpMD51jtIU5SRROKn44uU%2Fgcs-1.png?alt=media&#x26;token=11a7b4bd-6065-4cd9-a54b-f78ba0950207" alt=""></div>
{% endstep %}

{% step %}
**添加 `storage.objects.create` 权限**

<div align="left"><img src="https://2655358775-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FAGQ77gWpG52CENqdPFH6%2Fgcs-2.png?alt=media&#x26;token=dd9c9cdb-e314-4d7f-b44c-d24ade92ba03" alt=""></div>
{% endstep %}

{% step %}
**将其分配给 Oxylabs**

在 **New members** 字段中，输入以下 **Oxylabs 服务账号电子邮件**:

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

<div align="left"><img src="https://2655358775-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FSPPnxlcOgf9M7oNgFa6p%2Fgcs-3.png?alt=media&#x26;token=c37c98fb-6465-4137-a1d6-6d13883036df" alt=""></div>
{% endstep %}
{% endstepper %}

## **Amazon S3**

下面的负载会让 网页爬虫API 抓取 `https://example.com` 并将结果放入 Amazon S3 存储桶中。

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

要将你的作业结果上传到你的 Amazon S3 存储桶，请为我们的服务设置访问权限。为此，请前往 [**https://s3.console.aws.amazon.com/**](https://s3.console.aws.amazon.com/) → **`S3`** → **`存储`** → **`存储桶名称`**` ``（如果你还没有，请新建一个）` → **`权限`** → **`存储桶策略`**.

<div align="left"><img src="https://2655358775-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2Fys4s7QoGvRxiqUF1HLMJ%2Fs3_bucket_policy.png?alt=media&#x26;token=bb48a995-8623-4358-bee6-b5e358874591" alt=""></div>

你可以在下方或代码示例区域找到附带的存储桶策略。

{% file src="<https://2655358775-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FDk6z5zm41f4Z0YMlHjmp%2Fs3_bucket_policy.json?alt=media&token=831c33a5-86c3-4627-88d9-b6dbc9bd3002>" %}
s3 存储桶策略
{% endfile %}

不要忘记更改 `YOUR_BUCKET_NAME`下的存储桶名称。此策略允许我们向你的存储桶写入、为你提供对已上传文件的访问权限，并获知存储桶的位置。

```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)

下面的负载会让 网页爬虫API 抓取 `https://example.com` 并将结果放入 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"
}
```

### 构建存储 URL <a href="#forming-the-storage-url" id="forming-the-storage-url"></a>

存储 URL 格式：

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

{% hint style="warning" %}
目前， **我们无法上传到根存储桶**。请为你的上传提供一个具体的文件夹名称。
{% endhint %}

你可以在这里找到你的存储桶的 `BUCKET_NAME` 和 `oss-REGION` ：

<figure><img src="https://2655358775-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2F9u06pWqKmDdieoCxhA7z%2Fimage.png?alt=media&#x26;token=5e11fd2c-1ed6-4f64-b757-5b33e332f452" alt=""><figcaption></figcaption></figure>

### 创建 Access Key 和 Secret <a href="#creating-the-access-key-and-secret" id="creating-the-access-key-and-secret"></a>

为了通过兼容 S3 的接口使用 Alibaba OSS，你必须创建 `ACCESS_KEY_ID` 和 `ACCESS_KEY_SECRET` ，如下所示。更多信息，请参阅 [![](https://img.alicdn.com/tfs/TB1ugg7M9zqK1RjSZPxXXc4tVXa-32-32.png)如何使用 Amazon S3 SDK 访问 OSS](https://www.alibabacloud.com/help/en/oss/developer-reference/use-amazon-s3-sdks-to-access-oss?spm=a2c63.p38356.0.i1).

{% stepper %}
{% step %}
前往 **AccessKey 账户菜单**

<div align="left"><figure><img src="https://2655358775-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2F8PTfsezldRgtJxg1BIFP%2Fimage.png?alt=media&#x26;token=b6d5a855-af2e-45a8-9089-f271f460d675" alt="" width="422"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
登录 **RAM console**

使用 [RAM console](https://ram.console.aliyun.com/) 访问 **Alibaba Cloud 账户** 或 **RAM 用户** ，其具有管理员权限。
{% endstep %}

{% step %}
前往 **身份** → **用户** （在左侧导航窗格中）
{% endstep %}

{% step %}
选择 **创建用户** 并使用 **RAM User AccessKey：**

<div align="left"><figure><img src="https://2655358775-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FEttslEfZDeCk3xj2JM2v%2Fimage.png?alt=media&#x26;token=47c0a6ea-1c45-410d-a3ba-9eaf386d021f" alt=""><figcaption></figcaption></figure></div>

<div align="left"><figure><img src="https://2655358775-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FFPmvTj6XvjPRWEgBal9v%2Fimage.png?alt=media&#x26;token=75012ded-20e2-4b0b-9cf6-9f97c0ecd695" alt=""><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
**向 RAM User 授予权限**

新创建的 RAM User 没有任何权限。你必须向 RAM User 授予 **AliyunOSSFullAccess** 权限。然后，RAM User 就可以访问所需的 Alibaba Cloud 资源。更多信息，请参阅 [向 RAM 用户授予权限](https://www.alibabacloud.com/help/en/ram/user-guide/grant-permissions-to-the-ram-user#task-187800).

<div align="left"><figure><img src="https://2655358775-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2F5QWg84VYUgbasaDa2JVH%2Fimage.png?alt=media&#x26;token=ea29159b-2b43-4dec-bf97-5d11ecd1e21e" alt=""><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
获取你的 **AccessKey ID** 和 **AccessKey Secret**

授予权限后，返回 **身份验证** 部分，然后在 **Access Key** 部分中，选择 **Create AccessKey**。选择为 **第三方服务**创建 Access Key。然后你将看到一个 `ACCESS_KEY_ID` 和 `ACCESS_KEY_SECRET`，然后你就可以在请求中使用它。
{% endstep %}
{% endstepper %}

### Alibaba OSS 速率限制 <a href="#alibaba-oss-ratelimits" id="alibaba-oss-ratelimits"></a>

在并发上传到 Alibaba OSS 时，可能会触发其账户/存储桶速率限制，上传将开始因以下错误而超时：

<div align="left"><figure><img src="https://2655358775-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FkTaFNVnlGImMKuAMGXso%2Fimage.png?alt=media&#x26;token=85b4ca21-c9dc-4489-bc91-da7e9ffa22e7" alt="" width="563"><figcaption></figcaption></figure></div>

在这种情况下，请联系 Alibaba OSS 支持以提高你的 OSS 速率限制。

## BytePlus TOS

你可以将抓取结果直接上传到 BytePlus Torch 对象存储 (TOS) 存储桶。

要成功连接，你需要：

* 一个正确配置的 TOS 存储桶。
* 你的访问密钥和秘密密钥。
* 一个兼容 S3 的端点。

你可以在 BytePlus 官方 [文档](https://docs.byteplus.com/en/docs/tos/docs-region-and-endpoint).

### 示例

以下负载将抓取 `https://example.com` 并将结果上传到你的 TOS 存储桶。

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

### 参数 <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">参数</th><th width="165">可用值</th><th>说明</th></tr></thead><tbody><tr><td><code>storage_type</code></td><td><code>tos</code></td><td>指定 BytePlus TOS 作为存储提供方。</td></tr><tr><td><code>storage_url</code></td><td>URL 字符串</td><td>到你的 TOS 存储桶的认证 URL（见下方格式）。</td></tr></tbody></table>

### 存储 URL 格式

该 `storage_url` 必须使用你的 TOS 凭证和存储桶详细信息来构建。

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

| 组成部分          | 说明                                            |
| ------------- | --------------------------------------------- |
| `access_key`  | 你的 BytePlus access key ID。                    |
| `secret_key`  | 你的 BytePlus secret access key。                |
| `endpoint`    | 区域专属端点（例如， `tos-cn-hongkong.bytepluses.com`). |
| `bucket_name` | 目标存储桶名称。                                      |
| `path`        | *（可选）* 存储桶的特定文件夹路径。                           |

{% hint style="warning" %}
如果你的 Access Key 或 Secret Key 包含特殊字符（例如 `/`, `+`，或 `=`），它们 **必须进行 URL 编码** 然后再构建该字符串。
{% endhint %}

### 输出文件命名

Oxylabs 会根据作业详细信息自动为上传的对象生成文件名：

* **HTML/内容：** `{query_id}_{timestamp}.html`
* **解析后的数据：** `{query_id}_results.json`

文件将在你的存储桶中以下位置可访问： `tos://{bucket_name}/{path}/{filename}`

## 其他兼容 S3 的存储

如果你想将结果传送到兼容 S3 的存储位置，你必须在负载中的 `ACCESS_KEY:SECRET` 认证字符串包含在 `storage_url` 值中：

```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/documentation/cn/zhua-qu-jie-jue-fang-an/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.
