> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/datasets/ja/toappurdo/adding-data/datasources.md).

# データソース

外部ストレージから画像とメタデータを Roboflow ワークスペースに自動同期します。

Datasources を使うと、クラウドストレージから Roboflow のアセットライブラリへ画像とメタデータを継続的にミラーできます。ミラーリング後は、画像を意味、カスタムメタデータ、タグ、または画像の類似性で検索でき、任意の Project に追加してラベリングや学習に利用できます。

現在、AWS S3、S3 互換ストレージ、Google Cloud Storage、Azure Blob Storage のバケットミラーリングに対応しています。

{% hint style="warning" %}
ソースデータが AWS S3、Google Cloud Storage、Azure Blob Storage などのクラウドストレージにある場合は、Datasources と Bucket Mirror を、Roboflow に取り込み、吸収し、同期するためのデフォルトの方法として使用してください。署名付き URL アップロードやローカルダウンロードのワークフローは、1 回限りまたは随時のインポートにのみ使用してください。
{% endhint %}

## Bucket Mirror の仕組み

Datasource を設定すると、Roboflow はバケットをクロールし、一致するすべての画像ファイルをワークスペースの [アセットライブラリ](https://docs.roboflow.com/platform/workspaces/asset-library).

* 対応画像形式: JPEG、PNG、BMP、WebP、AVIF
* ワークスペース内に既に存在するファイル（バケットの場所とハッシュで一致するもの）は再インポートされず、転送コストを削減します
* もし `.json` サイドカーファイルが同じベース名の画像と並んで存在する場合、そのメタデータがインポートされます。ネストされたキーはドット表記で平坦化されます（例: `capture.temperature`) - 詳しくは [メタデータ サイドカー](#metadata-sidecars)
* バケットから消えたファイルはデフォルトでは保持されます。代わりに削除するにはオーファン削除を有効にします（ [孤立ファイルの削除](#removing-orphaned-files))

### 動画

Roboflow は MP4 と QuickTime（`.mov`）の動画も、各 3 GB までミラーします。動画はアセットライブラリにのみ保存され、Project には追加されず、フレームも抽出されません。動画は `.json` 画像と同じ方法でサイドカーメタデータを読み取ります。動画を除外するには、画像ファイルだけに一致する glob パターンを使用してください。

## バケットを Roboflow にミラーリングする

### 前提条件

1. 画像データを含むクラウドストレージのバケット（AWS S3、Google Cloud Storage、または Azure Blob Storage）
2. そのバケットから読み取り可能な再利用可能な Roboflow 認証情報。詳しくは [Datasource 認証情報](/datasets/ja/toappurdo/adding-data/datasource-credentials.md)、続けて [AWS S3 認証情報](/datasets/ja/toappurdo/adding-data/datasource-credentials/aws-s3.md), [Google Cloud Storage 認証情報](/datasets/ja/toappurdo/adding-data/datasource-credentials/gcs.md)、または [Azure Blob Storage 認証情報](/datasets/ja/toappurdo/adding-data/datasource-credentials/azure.md).

### Roboflow で認証情報を追加する

Roboflow はバケットアクセスを安全に暗号化された再利用可能な認証情報として保存します。プロバイダーごとの設定手順と最小権限のガイダンスについては、 [AWS S3 認証情報](/datasets/ja/toappurdo/adding-data/datasource-credentials/aws-s3.md), [Google Cloud Storage 認証情報](/datasets/ja/toappurdo/adding-data/datasource-credentials/gcs.md)、または [Azure Blob Storage 認証情報](/datasets/ja/toappurdo/adding-data/datasource-credentials/azure.md).

移動先: [認証情報](https://app.roboflow.com/settings/thirdpartykeys) を Workspace 設定で開き、 [認証情報を追加](https://app.roboflow.com/settings/thirdpartykeys#create).

### バケットミラーリング用の Datasource を設定する

[新しい Datasource を作成する](https://app.roboflow.com/settings/datasources) を Workspace 設定から。フォームには 2 つのタブがあります:

* 「Connection」にはバケットの詳細とアクセス情報が含まれます: 名前、プロバイダー、バケット、リージョン、認証情報。保存済みの認証情報を「Credential」ドロップダウンから選ぶか、横の「+」を使ってフォームを離れずに追加できます。
* 「Mirror Configuration」にはインポート先、ファイルフィルター、ミラー動作が含まれます。

「Bucket」フィールドにはバケット名のみを入力します（例: `my-bucket`, `s3://my-bucket`）。名前の後にパスが付いたバケット値は拒否されます。バケットの一部だけをミラーリングするには、次のような glob パターンを追加してください: `images/**/*` 「Mirror Configuration」タブの「File Filters」の下に。Azure Blob Storage では、同じルールがコンテナー名にも適用されます。

### インポート先の選択

「Mirror Configuration」内の「Import Destination」セクションで、ミラーされたファイルの保存先を制御します。各 Datasource は 1 つの保存先にインポートされます。別の場所にインポートするには、別の Datasource を追加してください。

* 「Workspace」は [アセットライブラリ](https://docs.roboflow.com/platform/workspaces/asset-library)にミラーします。「Import into」ドロップダウンでファイルをワークスペースのルートに保持するか、Project を選択してその Project にも追加できます。
* 「Folder」は、ミラーされた画像をプロジェクトフォルダーに限定し、そのフォルダーのチームだけが閲覧できるようにします。このオプションは [Project フォルダ権限](/datasets/ja/guan-li/project-folders/project-folder-permissions.md).

### Glob パターンによるフィルタリング

デフォルトでは、バケット内の対応画像ファイルがすべてインポートされます。インポート対象を glob パターンで制限できます。直接指定するか、 `.txt` というバケット内に保存されたファイルを介して指定できます。

glob パターンの代わりに、ファイルパスの明示的なホワイトリストを指定することもできます。

### パターンの意味

* `*` は次を除く任意の文字に一致します `/` （単一のディレクトリ階層）
* `**` は次を含む任意の文字に一致します `/` （複数のディレクトリ階層）

### 例

**プレフィックスで一致:**

```
harvest**
```

一致するもの: `harvest`, `harvest2024`, `harvest/sun/file.jpg`, `harvest-data.png`\
一致しないもの: `Harvest`, `my-harvest`

**フォルダー内のすべてに一致:**

```
/harvest/sun/**
```

一致するもの: `/harvest/sun/file.txt`, `/harvest/sun/subfolder/image.jpg`, `/harvest/sun/deep/nested/path/data.png`\
一致しないもの: `/harvest/moon/file.txt`, `/other/sun/file.txt`

**サブツリー内で末尾で一致:**

```
/planting/**/*crops.png
```

一致するもの: `/planting/wheat-crops.png`, `/planting/subfolder/rice-crops.png`\
一致しないもの: `/planting/wheat.png`, `/other/wheat-crops.png`

**特定のディレクトリ階層で名前パターンに一致:**

```
/*/a/**/*weed*2025-10-27.png
```

一致するもの: `/farm/a/field/weed-2025-10-27.png`, `/garden/a/plot/seaweed-data-2025-10-27.png`\
一致しないもの: `/farm/b/field/weed-2025-10-27.png`

**完全なパス:**

```
/exact/path/to/file.jpg
```

その特定のファイルのみに一致します。

**ファイル名にリテラルのワイルドカードを使う場合:**\
パターンを引用符で囲んで `*` をリテラル文字として扱います:

```
"/path/to/file*.jpg"
```

### 孤立ファイルの削除

オーファン削除はデフォルトではオフです。そのため、バケットから消えたファイルは保持されます。When `removeOrphanedSourcesWhenDisappeared` が有効な場合、バケットに存在しなくなったファイル（または glob パターンに一致しなくなったファイル）は、いずれの Project や別の Datasource 設定からも参照されていなければ、Roboflow ワークスペースから削除されます。

Datasource を削除する場合も同様です。オーファン削除が有効で、バケットが少なくとも 1 回ミラーリングされている場合、そのバケット由来で他の Project から使われていない画像は、クリーンアップワーカーによって削除されることがあります。削除確認ダイアログではこの点が警告され、続行前に明示的な承認が必要になります。これを避けるには、削除する前に Datasource のミラー設定でオーファン削除を無効にしてください。

### ファイル名付け

この `namingStrategy` 設定で、インポートされたファイルの命名方法と Roboflow 内での表示方法を制御します:

| 戦略         | 説明                                                            |
| ---------- | ------------------------------------------------------------- |
| `fullPath` | S3 キーの完全なパスをファイル名として使用します（デフォルト）                              |
| `fileName` | S3 キーのファイル名部分のみを使用します                                         |
| `eTag`     | S3 オブジェクトの ETag を使用します                                        |
| `metadata` | image のメタデータから、次で指定した値を使用します `namingStrategyMetadataKey` （必須） |

### 画像の更新

S3 の画像が変更されたとき、Roboflow はワークスペース内のコピーを更新できます:

* `updateImageWhenNewer` （デフォルト: `true`） - S3 オブジェクトが保存済みバージョンより新しい場合に画像を再インポートします
* `updateImageStrategy`  - 更新の適用方法を制御します。現在は `overwrite` （既存の画像を置き換える）のみ対応しています

### メタデータ サイドカー

各画像の横に同じベース名を使ってバケット内に `.json` サイドカーファイルを置くことで、画像にメタデータを添付できます:

```
my-bucket/
  images/
    photo_001.jpg
    photo_001.json      # photo_001.jpg のメタデータ
    photo_002.jpg
    photo_002.json      # photo_002.jpg のメタデータ
```

サイドカーファイルにはキーと値のペアが含まれます:

```json
{
  "camera_id": "cam001",
  "location": "warehouse-3",
  "capture": { "temperature": 72.5, "humidity": 45 }
}
```

ネストされたオブジェクトはドット表記で平坦化されます。上の例では次のようになります:

| キー                    | 値               |
| --------------------- | --------------- |
| `camera_id`           | `"cam001"`      |
| `location`            | `"warehouse-3"` |
| `capture.temperature` | `72.5`          |
| `capture.humidity`    | `45`            |

サイドカーファイルの制約:

* 最大ファイルサイズ: 256 KB
* 有効な JSON である必要があります
* `null` と `undefined` 値は除外されます

### メタデータ同期の戦略

画像のメタデータサイドカー `.json` ファイルが S3 で更新された場合、どのように更新を適用するかを制御する 2 つの設定があります:

* `updateMetadataWhenNewer` （デフォルト: `true`） - サイドカーファイルが保存済みバージョンより新しい場合にメタデータを再同期します
* `updateMetadataStrategy`  - 同期されたメタデータが、UI または API で手動設定したメタデータとどのように相互作用するかを制御します:

| 戦略                        | 動作                                           |
| ------------------------- | -------------------------------------------- |
| `mergeBucketWins` （デフォルト） | 両方のソースをマージします。キーの競合時はバケットの値が優先されます           |
| `mergeUserWins`           | 両方のソースをマージします。キーの競合時はユーザー設定の値が優先されます         |
| `overwrite`               | バケットのメタデータが既存のすべてのメタデータを完全に置き換えます            |
| `untilFirstChange`        | ユーザーがメタデータフィールドを手動で編集するまでバケットから同期し、その後は停止します |
| `append`                  | バケットから新しいキーのみを追加し、既存のキーは上書きしません              |

## ミラーリングのトリガー

任意の時点で [Datasources リスト](https://app.roboflow.com/settings/datasources) から Datasource の横にある再生ボタンをクリックして手動でミラーを開始できます。

手動トリガーには次の制限があります:

* **進行中**: すでに同期が実行中の場合、それが完了するまで別の同期は開始できません。
* **クールダウン**: 同期完了後、手動での再トリガーは 15 分間ブロックされます。ボタンのツールチップには残り時間が表示されます。以下の場合はクールダウンがスキップされます:
  * 前回の同期で新規にインポートするものが見つからなかった場合（キューに入ったファイルが 0 件、またはすべて失敗した場合）。
  * 前回の実行以降に Datasource 設定を編集した場合。
  * 最後の実行がエラーで完了した場合。
* **毎時上限**: Datasource は 1 時間の移動ウィンドウ内で最大 10 回まで同期できます。この上限は、クールダウンのスキップで即時再トリガーできる場合でも適用されます。

スケジュールされた（cron）同期は、クールダウンと毎時上限の両方を回避します。

### 日次スケジュールで実行する

自動ミラーリングするには、「Mirror Configuration」タブの「Scheduling」セクションを開き、「Run automatically on a daily schedule」にチェックを入れます。すると datasource は 24 時間ごとに同期されます。スケジューリングはデフォルトではオフです。

## 同期済みアセットの表示

各 [datasource エントリ](https://app.roboflow.com/settings/datasources) には目のアイコンがあり、 [アセットライブラリ](https://docs.roboflow.com/platform/workspaces/asset-library) その特定の Datasource の画像と動画に絞り込まれたものを開きます。Datasource が少なくとも 1 回同期を完了するまで、このアイコンは無効です。

任意の Datasource から同期されたすべての画像を表示するには、Datasources リストの下部にある「View Datasource Assets」をクリックします。このリンクは、少なくとも 1 つの Datasource が実行された後に表示されます。

どちらのリンクも、あらかじめタグフィルターが設定された Asset Library に移動するので、ワークスペースの画像のうちバケットミラーされた部分だけを閲覧、検索、管理できます。

## S3 互換ストレージ

Datasources は、必要な S3 API 操作を実装した S3 互換ストレージプロバイダーで動作します。

そのようなプロバイダーを設定するには:

1. Datasource の「Connection」タブで `S3` をプロバイダーとして選択します。
2. 通常どおりバケット名と認証情報を入力します。
3. プロバイダー独自の `エンドポイント` URL を定義します。
4. リージョンを `auto` またはプロバイダー固有のリージョン値に設定します。

プロバイダーの S3 API エンドポイントを `エンドポイント`使用します。CDN URL、公開バケット URL、またはブラウザ用ダウンロード URL は使用しないでください。

エンドポイントはインターネット上の公開経路から到達可能でなければなりません。Roboflow は、 `localhost`、プライベートネットワークアドレス、またはリンクローカルアドレスを指すエンドポイントを拒否し、それらに解決されるホスト名も拒否します。

同じ glob パターンによるフィルタリング、メタデータサイドカーの動作、ミラー設定は、これらのプロバイダーでも利用できます。

### パススタイルアドレッシング

一部のプロバイダーは、バケット名を URL パス（`endpoint/bucket/key`）ではなくホスト名（`bucket.endpoint/key`）。エンドポイントを入力すると、「Connection」タブに「Use path-style addressing」チェックボックスが表示されます。Roboflow はエンドポイントに一致する設定を自動で選択し、変更してもその選択を保持します。

MinIO やその他のセルフホストまたは NAS ゲートウェイ、Oracle Cloud 互換エンドポイント、IP アドレスやポートで到達する任意のエンドポイント、そして名前にドットを含むバケットではオンにしてください。仮想ホスト形式の URL を提供するプロバイダー（例: Cloudflare R2、Backblaze B2、Wasabi、DigitalOcean Spaces、Alibaba Cloud OSS）ではオフのままにしてください。設定が間違っていると、ファイル一覧取得時に接続テストが失敗し、エラーで切り替えが促されます。

対応する S3 互換ストレージプロバイダーには以下が含まれます:

| プロバイダー                                            | エンドポイントホスト名の例                                      |
| ------------------------------------------------- | -------------------------------------------------- |
| Cloudflare R2                                     | `<account-id>.r2.cloudflarestorage.com`            |
| Backblaze B2                                      | `s3.<region>.backblazeb2.com`                      |
| DigitalOcean Spaces                               | `<region>.digitaloceanspaces.com`                  |
| Akamai Linode Object Storage                      | `<region>.linodeobjects.com`                       |
| Wasabi                                            | `s3.<region>.wasabisys.com`                        |
| Vultr Object Storage                              | `<region>.vultrobjects.com`                        |
| OVHcloud Object Storage                           | `s3.<region>.io.cloud.ovh.net`                     |
| Scaleway Object Storage                           | `s3.<region>.scw.cloud`                            |
| Open Telekom Cloud                                | `obs.<region>.otc.t-systems.com`                   |
| Exoscale SOS                                      | `sos-<region>.exo.io`                              |
| IONOS Cloud Object Storage                        | `s3-<region>.ionoscloud.com`                       |
| IBM Cloud Object Storage                          | `s3.<region>.cloud-object-storage.appdomain.cloud` |
| Oracle Cloud Infrastructure Object Storage S3 互換性 | `compat.objectstorage.<region>.oraclecloud.com`    |
| Seagate Lyve Cloud                                | `s3.<region>.lyvecloud.seagate.com`                |
| Huawei Cloud OBS                                  | `obs.<region>.myhuaweicloud.com`                   |
| Alibaba Cloud OSS                                 | `oss-<region>.aliyuncs.com`                        |
| Tencent Cloud COS                                 | `cos.<region>.myqcloud.com`                        |
| Yandex Object Storage                             | `storage.yandexcloud.net`                          |
| Storj Hosted S3 Gateway                           | `gateway.storjshare.io`                            |

## MCP サーバー

AI エージェントを [MCP サーバー](https://docs.roboflow.com/agents/mcp-server) に接続すると、次のツールを使ってバケットを Project にミラーできます:

<table data-search="false"><thead><tr><th width="290">ツール</th><th>説明</th></tr></thead><tbody><tr><td><code>connect_cloud_storage</code></td><td>認証情報から最初の実行まで、バケットミラーをエンドツーエンドで設定します。</td></tr><tr><td><code>credentials_create</code></td><td>クラウドストレージの認証情報を作成します。</td></tr><tr><td><code>credentials_list</code></td><td>ワークスペース内のクラウドストレージ認証情報を一覧表示します。</td></tr><tr><td><code>datasource_create</code></td><td>バケットパスを Project にミラーする datasource を作成します。</td></tr><tr><td><code>datasource_validate</code></td><td>Roboflow がバケットに到達できることを確認します。</td></tr><tr><td><code>datasource_trigger</code></td><td>ミラー実行を開始します。</td></tr><tr><td><code>datasource_job_get</code></td><td>1 回のミラー実行のステータスと統計を取得します。</td></tr></tbody></table>
