プライベート OSS バケットをオリジンとするコンテンツデリバリーネットワーク (CDN) 加速ドメイン名にアクセスすると、以下のエラーが表示されます。
X-Tengine-Error: You are forbidden to list buckets本トピックでは、このエラーの原因と解決手順について説明します。
原因
プライベートバケットに対する CDN の back-to-origin 機能を有効化すると、加速ドメイン名のルートパス(例:`/`)へのアクセスが `GetBucket (ListObjects)` リクエストをトリガーします。CDN は `ListObjects` をデフォルトで拒否します。
主な原因は以下の 2 つです。
静的 Web サイトホスティングとの競合 — OSS の静的 Web サイトホスティング機能は、CDN のプライベートバケット向け back-to-origin と互換性がありません。両方を有効化している場合、CDN が OSS へリクエストを正しく署名・転送できなくなります。
back-to-origin リクエストにおける `index.html` の欠落 — ルートパス(例:
www.example.com)へのリクエストが発生すると、CDN はそのパスに対して署名を行います。一方、OSS は実際にはwww.example.com/index.htmlを提供します。署名はルートパスを対象としており、ファイルパスを含まないため、OSS はリクエストを不正と判断して拒否します。
OSS の静的 Web サイトホスティングは、CDN のプライベートバケット向け back-to-origin と競合します。バケットで静的 Web サイトホスティングが有効になっている場合は、署名の不一致に関するトラブルシューティングを行う前に、まずこれを無効化してください。
解決方法
ステップ 1:静的 Web サイトホスティングの有効/無効状態を確認する
OSS バケットの設定画面に移動し、静的 Web サイトホスティングの状態を確認します。
静的 Web サイトホスティングが有効になっている場合、ご利用のユースケースに応じて、以下のいずれかのオプションを選択してください。
| オプション | 適用条件 | 実施内容 |
|---|---|---|
| 静的 Web サイトホスティングを無効化する | OSS による静的サイト配信機能を必要としない場合 | 静的 Web サイトホスティングを無効化します。詳細については、「静的 Web サイトホスティング」をご参照ください。 |
| パブリック読み取りに変更し、プライベート back-to-origin を無効化する | 静的 Web サイトホスティング機能が必要です | バケットの ACL を パブリック読み取り に設定し、CDN のプライベートバケット向け back-to-origin を無効化します。詳細については、「プライベート OSS バケットへのアクセス設定」をご参照ください。 |
静的 Web サイトホスティングが有効になっていない場合は、ステップ 2 に進んでください。
ステップ 2:CDN に URL 書き換えルールを追加する
CDN 側で、ルートパスへのリクエストを `index.html` にリダイレクトする書き換えルールを追加します。たとえば、`www.example.com` を `www.example.com/index.html` に書き換えます。
これにより、CDN の署名と実際の OSS ファイルパスが一致し、エラーが解消されます。
書き換えルールの作成手順については、「アクセス URL の書き換え」をご参照ください。