S3 チャネルを追加する
適している場合
S3 チャネルは、次の場合に使用します。
- Cloudflare R2、Backblaze B2、MinIO、AWS S3、その他の互換プロバイダーなど、S3 互換のオブジェクトストレージサービスに接続したい。
Endpoint、Access Key、Secret Key を使う標準的な S3 設定モデルを使いたい。- Cloudflare R2 のネイティブバインディングチャネルを使いたくない、またはストレージプロバイダーが Cloudflare R2 ではない。
始める前に必要なもの
| 必要なもの | 用途 |
|---|---|
| S3 Endpoint | オブジェクトストレージサービスの S3 API エンドポイント。 |
| Bucket name | ファイルを保存するバケット。 |
| Region | ストレージリージョン。Cloudflare R2 では通常 auto です。 |
| Access Key ID | S3 アクセスキー ID。 |
| Secret Access Key | S3 シークレットアクセスキー。 |
| CDN domain | ファイルアクセス用の任意のカスタムドメイン。 |
S3 API 経由で Cloudflare R2 を使う場合の例:
text
Endpoint: https://your-account-id.r2.cloudflarestorage.com
Bucket: your-r2-bucket-name
Region: auto
Access Key ID: copied from the Cloudflare R2 API token
Secret Access Key: copied from the Cloudflare R2 API token追加する場所
- システム設定を開きます。
- アップロード設定に移動します。
- 右上のチャネル追加をクリックします。
S3を選択します。
項目リファレンス
| 項目 | 役割 | 必須 |
|---|---|---|
| チャネル名 | この S3 チャネルを識別しやすい名前。例: s3test、R2-S3。 | はい |
| チャネルを有効化 | このチャネルをアップロード先の選択に参加させるかどうかを制御します。 | 推奨 |
| Endpoint | https:// を含む完全な S3 サービスエンドポイント。 | はい |
| Custom CDN domain | 任意。設定すると、生成されるファイルリンクではこのドメインが優先されます。 | いいえ |
| Bucket name | バケット名。例: s3test、img-r2。 | はい |
| Bucket region | リージョン。Cloudflare R2 では通常 auto です。 | はい |
| Access Key ID | S3 アクセスキー ID。 | はい |
| Secret Access Key | S3 シークレットアクセスキー。 | はい |
| Path-style access | 互換性用のスイッチ。デフォルトではオフです。一部の MinIO、OpenList、自己ホスト型 S3 サービスでは必要になる場合があります。 | いいえ |
| Quota limit | この S3 チャネルを容量に基づくアップロード先の選択に参加させるかどうかを制御します。 | いいえ |
| Capacity limit | クォータ制限を有効にした後に必要です。例: 10 GB。 | クォータ制限が有効な場合は必須 |
| Threshold | 使用量がこの割合に達したら書き込みを停止します。例: 90%。 | クォータ制限が有効な場合は必須 |
| Remark | 保守用のメモ。 | いいえ |
Cloudflare R2 S3 API キーを作成する
- Cloudflare Dashboard を開きます。
R2 Object Storageに移動します。Manage R2 API Tokensまたは API トークン管理項目を見つけます。

- 対象バケットにアクセスできる R2 API トークンを作成します。

- 生成された
Access Key IDとSecret Access Keyをコピーします。

- R2 バケットページに戻り、バケット名を確認します。
- アカウントの S3 API エンドポイントを記録します。通常は次のような形式です。
text
https://your-account-id.r2.cloudflarestorage.com設定手順
- アップロード設定を開きます。
- チャネル追加をクリックします。
S3を選択します。- 識別しやすいチャネル名を入力します。例:
s3test。 Endpointに S3 API エンドポイントを入力します。- カスタム CDN を使う場合は
Custom CDN domainに入力します。使わない場合は空のままにします。 - バケット名を入力します。
- リージョンを入力します。Cloudflare R2 の例では
autoを使います。 - Access Key ID と Secret Access Key を入力します。
- プロバイダーが明示的に要求しない限り、path-style access はオフのままにします。
- 容量制御を使う場合は、クォータ制限を有効にし、capacity limit と threshold を入力します。
- 保存をクリックします。

確認方法
| 確認項目 | 確認方法 |
|---|---|
| チャネルカードが表示される | 保存後、アップロード設定ページに S3 チャネルカードが表示されます。 |
| チャネルが有効 | カード右上のスイッチがオンのままになります。 |
| 重要項目が保存されている | 詳細ビューに Endpoint、Bucket、Region、path-style access、および関連項目が表示されます。 |
| アップロードできる | テスト画像をアップロードし、対象バケットにオブジェクトが表示されることを確認します。 |
| リンクを開ける | アップロード後に返された画像リンクを正常に開けます。 |
| 容量表示が機能する | クォータ制限が有効な場合、カードに使用済み容量と設定済みの上限が表示されます。 |
S3 の容量統計は、プロバイダーのバケットをリアルタイムに照会するのではなく、ImgHost のローカルファイル記録から計算されます。S3 設定を保存すると、システムは現在の D1 records から quota ledger を再計算します。

FAQ
path-style access を有効にする必要はありますか?
通常は必要ありません。
S3 互換プロバイダーが virtual-hosted-style URL をサポートしていない場合、またはプロバイダーのドキュメントが path-style access を明示的に要求している場合にのみ有効にしてください。一部の MinIO、自己ホスト型 S3、OpenList 互換エンドポイントでは必要になることがあります。
CDN domain は何に使いますか?
バケットの前段に CDN またはカスタムアクセスドメインを置く場合は、ここに入力します。
設定後、生成されるファイルリンクではこのドメインが優先されます。CDN を使わない場合は空のままにします。
アップロードが失敗するのはなぜですか?
まず次の項目を確認してください。
- Endpoint に
https://を含む完全な URL が入っている。 - バケット名が正しい。
- Region がプロバイダーの要件と一致している。
- Access Key ID と Secret Access Key が完全にコピーされている。
- キーに対象 bucket への書き込み権限がある。
- プロバイダーが path-style access を要求していない、または必要な場合は path-style access が有効になっている。
クイックチェックリスト
text
Prepare S3 Endpoint, Bucket, Region, Access Key, and Secret Key
-> Open Upload Settings
-> Add Channel
-> Select S3
-> Enter Endpoint / Bucket / Region / Access Key / Secret Key
-> Enter a CDN domain if needed
-> Leave path-style access off by default
-> Enable quota limit if needed
-> Save
-> Upload a test image and check the result