> ## Documentation Index
> Fetch the complete documentation index at: https://docs.brightdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 如何将 LinkedIn 数据交付到 Amazon S3

> 配置 Bright Data LinkedIn Scraper API，在收集作业完成时将抓取的数据直接交付到您的 Amazon S3 存储桶。

本指南展示如何配置 Bright Data LinkedIn Scraper API，在集合作业完成时将抓取的数据直接交付到您的 Amazon S3 存储桶。

## 前提条件

* 一个 [Bright Data 账户](https://www.bright.cn/cp/start)，拥有有效的 API 密钥
* 一个拥有 S3 存储桶的 AWS 账户
* 具有对存储桶的写入访问权限的 IAM 凭证
* 熟悉 [异步请求工作流](/cn/datasets/scrapers/linkedin/async-requests)

## 步骤 1：创建 S3 存储桶

如果您已经有一个存储桶，请跳到步骤 2。

在 [AWS S3 控制台](https://s3.console.aws.amazon.com/s3/buckets)中：

1. 点击 **创建存储桶**
2. 输入存储桶名称（例如，`linkedin-scraper-data`）
3. 选择您偏好的 AWS 区域
4. 保持默认设置并点击 **创建存储桶**

## 步骤 2：设置 IAM 权限

创建一个 IAM 角色，授予 Bright Data 对您的存储桶的写入访问权限。

### 创建策略

在 [IAM 控制台](https://console.aws.amazon.com/iam/)中，转到 **策略** 并使用此 JSON 创建新策略：

```json theme={null}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:PutObject", "s3:GetObject"],
      "Resource": "arn:aws:s3:::linkedin-scraper-data/*"
    }
  ]
}
```

将 `linkedin-scraper-data` 替换为您的实际存储桶名称。

### 为 Bright Data 创建角色

1. 转到 **角色** > **创建角色**
2. 选择 **AWS 账户** 作为受信任的实体类型
3. 输入 Bright Data 的 AWS 账户 ID：`422310177405`
4. 附加您上面创建的策略
5. 为角色命名（例如，`BrightDataS3Delivery`）
6. 记下角色 ARN（例如，`arn:aws:iam::123456789012:role/BrightDataS3Delivery`）

向信任策略添加外部 ID 条件：

```json theme={null}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::422310177405:role/brd.ec2.zs-dca-delivery"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "YOUR_BRIGHT_DATA_CUSTOMER_ID"
        }
      }
    }
  ]
}
```

在 [账户设置](https://www.bright.cn/cp/setting/customer_details) 中找到您的客户 ID。

## 步骤 3：在 Bright Data 中配置交付

1. 导航到您的 [爬虫配置](https://www.bright.cn/cp/scrapers)
2. 点击 **交付设置** 标签
3. 选择 **Amazon S3** 作为交付目标
4. 输入您的凭证：
   * **存储桶名称**：您的 S3 存储桶名称
   * **角色 ARN**：步骤 2 中的 IAM 角色 ARN
   * **区域**：您的 S3 存储桶区域
   * **路径前缀**（可选）：存储桶内的文件夹路径（例如，`linkedin/profiles/`）
5. 选择您偏好的文件格式（JSON、NDJSON 或 CSV）
6. 点击 **保存**

## 步骤 4：触发集合

触发异步集合。结果自动交付到您的 S3 存储桶：

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST \
    "https://api.brightdata.com/datasets/v3/trigger?dataset_id=gd_l1viktl72bvl7bjuj0&format=json" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '[
      {"url": "https://www.linkedin.com/in/satyanadella"},
      {"url": "https://www.linkedin.com/in/jeffweiner08"},
      {"url": "https://www.linkedin.com/in/rbranson"}
    ]'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.brightdata.com/datasets/v3/trigger",
      params={"dataset_id": "gd_l1viktl72bvl7bjuj0", "format": "json"},
      headers={
          "Authorization": "Bearer YOUR_API_KEY",
          "Content-Type": "application/json",
      },
      json=[
          {"url": "https://www.linkedin.com/in/satyanadella"},
          {"url": "https://www.linkedin.com/in/jeffweiner08"},
          {"url": "https://www.linkedin.com/in/rbranson"},
      ],
  )

  print("Snapshot ID:", response.json()["snapshot_id"])
  ```

  ```javascript Node.js theme={null}
  const response = await fetch(
    "https://api.brightdata.com/datasets/v3/trigger?dataset_id=gd_l1viktl72bvl7bjuj0&format=json",
    {
      method: "POST",
      headers: {
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json",
      },
      body: JSON.stringify([
        { url: "https://www.linkedin.com/in/satyanadella" },
        { url: "https://www.linkedin.com/in/jeffweiner08" },
        { url: "https://www.linkedin.com/in/rbranson" },
      ]),
    }
  );

  const data = await response.json();
  console.log("Snapshot ID:", data.snapshot_id);
  ```
</CodeGroup>

## 步骤 5：验证交付

集合完成后，检查您的 S3 存储桶中是否有交付的文件：

```bash theme={null}
aws s3 ls s3://linkedin-scraper-data/linkedin/profiles/
```

您应该看到以快照 ID 命名的文件（例如，`s_m1a2b3c4d5e6f7g8h.json`）。

下载并检查它：

```bash theme={null}
aws s3 cp s3://linkedin-scraper-data/linkedin/profiles/s_m1a2b3c4d5e6f7g8h.json ./results.json
cat results.json | python -m json.tool | head -20
```

您也可以使用 [监视交付 API](/api-reference/scrapers/management-apis/monitor-delivery) 验证交付状态。

## 故障排除

<Accordion title="文件未出现在 S3 中？">
  * 验证 IAM 角色 ARN 和外部 ID 是否正确
  * 检查存储桶策略是否允许来自 Bright Data 账户的 `s3:PutObject`
  * 确保存储桶区域与您的配置相匹配
  * 在 Bright Data 仪表板的 **日志** 下查看交付状态
</Accordion>

<Accordion title="访问被拒绝错误？">
  验证您 IAM 角色上的信任策略包括 Bright Data 的账户 (`422310177405`)，且您的外部 ID 与您在 [账户设置](https://www.bright.cn/cp/setting/customer_details) 中找到的 Bright Data 客户 ID 相匹配。
</Accordion>

<Accordion title="交付的文件为空或记录缺失？">
  检查 Bright Data 仪表板中的集合状态。如果某些 URL 失败，交付的文件仅包含成功的结果。在单独的请求中重试失败的 URL。
</Accordion>

## 后续步骤

<CardGroup cols={2}>
  <Card title="设置 webhooks" icon="webhook" href="/cn/datasets/scrapers/linkedin/data-delivery/webhooks">
    在您的 HTTP 端点接收结果。
  </Card>

  <Card title="所有交付选项" icon="truck" href="/cn/datasets/scrapers/scrapers-library/delivery-options">
    Snowflake、Azure、GCS、SFTP 等。
  </Card>
</CardGroup>
