> 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/roboflow/roboflow-jp/datasets/adding-data/datasources.md).

# Datasources

Datasourcesを使うと、クラウドストレージからRoboflowのAsset Libraryへ画像とメタデータを継続的にミラーリングできます。ミラーリング後、画像はセマンティクス、カスタムメタデータ、タグ、または画像類似度で検索でき、ラベリングとトレーニングのために任意のProjectに追加できます。

現在、AWS S3およびS3互換ストレージバケットのミラーリングがサポートされています。Azure Blob StorageとGoogle Cloud Storageのサポートも近日公開予定です。

{% hint style="warning" %}
ソースデータがAWS S3などのクラウドストレージにある場合は、Roboflowへの標準的な取り込み経路としてDatasourcesとBucket Mirrorを使用してください。署名付きURLアップロードやローカルダウンロードのワークフローは、単発または随時のインポートにのみ使用してください。
{% endhint %}

## Bucket Mirrorの仕組み

Datasourceを設定すると、RoboflowがS3バケットをクロールし、一致するすべての画像ファイルをWorkspaceの [Asset Library](/roboflow/roboflow-jp/workspaces/asset-library.md).

* サポートされている画像形式: JPEG、PNG、BMP、WebP、AVIF
* すでにWorkspace内に存在するファイル（S3の場所とハッシュで一致するもの）は再インポートされず、エグレスコストを削減できます
* もし `.json` 同じベース名の画像の横にsidecarファイルが存在する場合、そのメタデータがインポートされます。ネストされたキーはドット表記でフラット化されます（例: `capture.temperature`）— 参照: [Metadata Sidecars](#metadata-sidecars)
* バケットから消えたファイルはデフォルトでは保持されます。代わりに削除するには、orphan removalを有効にしてください（参照: [Removing Orphaned Files](#removing-orphaned-files))

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

### 前提条件

1. 画像データを含むAWS S3バケット
2. そのバケットを読み取れる再利用可能なRoboflowのCredential。参照: [Datasource Credentials](/roboflow/roboflow-jp/datasets/adding-data/datasources/datasource-credentials.md)、次に従ってください: [AWS S3 Credentials](/roboflow/roboflow-jp/datasets/adding-data/datasources/datasource-credentials/aws-s3.md).

### RoboflowでCredentialを追加する

Roboflowは、バケットアクセスを再利用可能なCredentialとして安全かつ暗号化して保存します。AWSの設定手順と最小権限のガイダンスについては、 [AWS S3 Credentials](/roboflow/roboflow-jp/datasets/adding-data/datasources/datasource-credentials/aws-s3.md).

移動してください: [Credentials](https://app.roboflow.com/settings/thirdpartykeys) をWorkspace settingsで開き、次をクリックします: [Add Credential](https://app.roboflow.com/settings/thirdpartykeys#create).

### Bucket Mirroring用のDatasourceを設定する

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

* "Connection"には、バケットの詳細とアクセス情報（name、provider、bucket、region、Credential）が含まれます。保存済みのCredentialは"Credential"ドロップダウンから選択するか、その横の"+"を使ってフォームを離れずに追加できます。
* "Mirror Configuration"には、インポート先、ファイルフィルター、ミラーリングの動作が含まれます。

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

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

* "Workspace"は次へミラーリングします: [Asset Library](/roboflow/roboflow-jp/workspaces/asset-library.md). ファイルをWorkspaceのルートに置くには"Import into"ドロップダウンを使用するか、Projectを選択してそのProjectにも追加します。
* "Folder"は、ミラーリングされた画像をProjectフォルダに限定し、そのフォルダのチームだけが閲覧できるようにします。このオプションは、次を含むプランで利用できます: [Project Folder Permissions](/roboflow/roboflow-jp/datasets/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"
```

### Removing Orphaned Files

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

これはDatasourceを削除する場合にも適用されます。orphan removalが有効で、かつバケットが少なくとも1回ミラーリングされている場合、そのバケット由来で他のProjectで使われていない画像はcleanup workerによって削除される可能性があります。削除確認ダイアログではこれが警告され、続行前に明示的な承認が必要になります。これを避けるには、削除前にDatasourceのmirror configsでorphan removalを無効にしてください。

### ファイル命名

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

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

### 画像の更新

S3内の画像が変更されると、RoboflowはWorkspace内のコピーを更新できます:

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

### Metadata Sidecars

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

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

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

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

sidecarファイルの制約:

* 最大ファイルサイズ: 256 KB
* 有効なJSONでなければなりません
* `null` および `undefined` の値は除外されます

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

画像のメタデータsidecar `.json` ファイルがS3で更新されると、2つの設定が更新の適用方法を制御します:

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

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

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

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

手動トリガーには次のガードが適用されます:

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

スケジュール済み（cron）同期は、クールダウンと1時間あたりの上限の両方を回避します。

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

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

## 同期されたアセットを表示する

あなたの各 [datasource entries](https://app.roboflow.com/settings/datasources) には、次を開く目のアイコンがあります: [Asset Library](/roboflow/roboflow-jp/workspaces/asset-library.md) その特定のDatasourceの画像と動画に絞り込まれたものです。このアイコンは、Datasourceが少なくとも1回同期を完了するまで無効です。

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

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

## S3互換ストレージ

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

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

1. Datasourceの"Connection"タブで、 `S3` をproviderとして選択します。
2. 通常どおりバケット名と認証情報を入力します。
3. プロバイダー固有の `endpoint` URLを指定します。
4. regionを `auto` またはプロバイダー固有のregion値に設定します。

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

同じglobパターンのフィルタリング、metadata sidecarの動作、mirror settingsもこれらのプロバイダーで利用できます。

サポートされているS3互換ストレージプロバイダーには以下が含まれます:

| プロバイダー                                                      | endpointホスト名の例                                     |
| ----------------------------------------------------------- | -------------------------------------------------- |
| 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 Compatibility | `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`                            |
