よりひろい フロントエンド
Author : Kazuhiro Hara
Author : Kazuhiro Hara
Wed Jul 03 2024

Directus で S3 にアップロードした画像が表示できなかった問題の解決

Directus で記事を移行していて詰まった。画像が表示できず 403 エラーとなる。ちなみに画像などの静的ファイルはアプリケーション上にアップロードするわけではなく S3 上にアップロードすることにしている。

Directus の Config のストレージ設定には local, s3, gcs, azure, cloudinary, supabase など様々なストレージオプションが用意されている。

S3 バケット上に画像をアップロードするように設定してあり、実際にアップロードをすると S3 上に配置されたことは AWS マネジメントコンソールからも確認できた。加えて S3 のパーミッション関係についても問題なさそうだ。となれば Directus 側の権限制御がおかしいのかもしれない。

Directus は管理画面の Settings から Access Control にて各種コレクションの権限制御を行うことが出来るが、実は System Collections というメニューがあり、これを押すことで Directus 自体のコレクションについてのアクセス制御を行うことが出来る。

この中にある directus_files というのが、ファイル関係のコレクションのアクセス制御の設定なのだ。初期状態だとすべて拒否となっている。ということで、ここを変えれば表示が出来るようになりそうだ。

Directus のファイル関係のアクセス権限設定

ただし、すべてのアクセスを OK にしてしまうとセキュリティ上問題がありそうなので S3 にアップロードしたオブジェクトだけを読み込み可とした。ルールは storages3 だった場合のみ Read を可と設定した。

結果、画像は表示されるようになった。めでたしめでたし。

DirectusAWS

Share

About site

カンソクインダストリーズのロゴ

「よりひろいフロントエンド」運営元 カンソクインダストリーズ では、フロントエンドを中心によろずご相談お受けいたします。お気軽にお問い合わせください。