> 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アセットライブラリに継続的にミラーリングできます。ミラーリング後、画像はセマンティクス、カスタムメタデータ、タグ、または画像の類似性で検索でき、ラベリングとトレーニングのために任意のプロジェクトに追加できます。

現在、AWS S3、S3互換ストレージ、Google Cloud Storage、Azure Blob Storageバケットのミラーリングがサポートされています。

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

## Bucket Mirrorの仕組み

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

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

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

### 前提条件

1. 画像データを含むクラウドストレージバケット（AWS S3、Google Cloud Storage、またはAzure Blob Storage）
2. そのバケットから読み取れる再利用可能なRoboflow認証情報。詳細は [データソース認証情報](/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).

### 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).

ワークスペース設定の [認証情報](https://app.roboflow.com/settings/thirdpartykeys) に移動し、 [認証情報を追加](https://app.roboflow.com/settings/thirdpartykeys#create).

### バケットミラーリング用のデータソースを設定する

[新しいデータソースを作成](https://app.roboflow.com/settings/datasources) ワークスペース設定から行います。フォームには2つのタブがあります：

* 「接続」には、名前、プロバイダー、バケット、リージョン、認証情報など、バケットの詳細とアクセス情報を入力します。「認証情報」ドロップダウンから保存済みの認証情報を選択するか、その横にある「+」を使用してフォームを離れずに追加します。
* 「ミラー設定」には、インポート先、ファイルフィルター、ミラーの動作を設定します。

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

「ミラー設定」の「インポート先」セクションでは、ミラーされたファイルの保存先を制御します。各データソースは1つの保存先にインポートします。別の場所にインポートするには、別のデータソースを追加してください。

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

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

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

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

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

孤立ファイルの削除はデフォルトでオフになっているため、バケットから消えたファイルは保持されます。 `removeOrphanedSourcesWhenDisappeared` が有効な場合、バケット内に存在しなくなったファイル（またはglobパターンに一致しなくなったファイル）は、プロジェクトまたは別のデータソース設定から参照されていない限り、Roboflowワークスペースから削除されます。

これはデータソースを削除するときにも適用されます。孤立ファイルの削除が有効で、バケットが少なくとも一度ミラーリングされている場合、他のプロジェクトで使用されていないそのバケット由来の画像が、クリーンアップワーカーによって削除されることがあります。削除確認ダイアログではこの点が警告され、続行前に明示的な確認が必要です。これを回避するには、データソースを削除する前に、そのミラー設定で孤立ファイルの削除を無効にしてください。

### ファイル命名

「 `namingStrategy` 」設定は、インポートされたファイルのRoboflowでの命名および表示方法を制御します：

| 戦略         | 説明                                                       |
| ---------- | -------------------------------------------------------- |
| `fullPath` | 完全なS3キーパスをファイル名として使用します（デフォルト）                           |
| `fileName` | S3キーのファイル名部分のみを使用します                                     |
| `eTag`     | S3オブジェクトのETagを使用します                                      |
| `metadata` | 次で指定された画像メタデータの値を使用します： `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`                  | バケットから新しいキーのみを追加します。既存のキーを上書きすることはありません         |

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

いつでも手動でミラーリングをトリガーできます。 [データソース一覧](https://app.roboflow.com/settings/datasources) で、データソースの横にある再生ボタンをクリックします。

手動トリガーには、次の制限が適用されます：

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

スケジュールされた（cron）同期では、クールダウンと時間あたりの上限の両方が適用されません。

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

自動的にミラーリングするには、「ミラー設定」タブの「スケジューリング」セクションを開き、「毎日のスケジュールで自動実行」をオンにします。これにより、データソースは24時間ごとに同期されます。スケジューリングはデフォルトでオフです。

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

各 [データソースエントリー](https://app.roboflow.com/settings/datasources) には、 [アセットライブラリ](https://docs.roboflow.com/platform/workspaces/asset-library) を開く目のアイコンがあり、その特定のデータソースからの画像と動画にフィルタリングされます。データソースが少なくとも1回の同期を完了するまで、このアイコンは無効です。

任意のデータソースから同期されたすべての画像を表示するには、データソース一覧の下部にある「データソースアセットを表示」をクリックします。このリンクは、少なくとも1つのデータソースが実行されると表示されます。

どちらのリンクも、タグフィルターがあらかじめ設定されたアセットライブラリに移動します。これにより、ワークスペース画像のうちバケットからミラーリングされたサブセットのみを参照、検索、管理できます。

## S3互換ストレージ

データソースは、必要なS3 API操作を実装しているS3互換ストレージプロバイダーで使用できます。

これらのプロバイダーのいずれかを設定するには：

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

次には、プロバイダーのS3 APIエンドポイントを使用してください： `エンドポイント`。CDN URL、パブリックバケットURL、ブラウザのダウンロードURLは使用しないでください。

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

### パス形式アドレッシング

一部のプロバイダーでは、ホスト名内ではなく、URLパス内にバケット名が必要です（`endpoint/bucket/key`）ではなく（`bucket.endpoint/key`）。エンドポイントを入力すると、「接続」タブに「パス形式アドレッシングを使用する」チェックボックスが表示されます。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) に接続すると、以下のツールを使用してバケットをプロジェクトにミラーリングできます：

<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>バケットパスをプロジェクトにミラーリングするデータソースを作成します。</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>
