ハマった時の状況
- Laravelを使ってる
- 環境はDockerで構築
- S3互換サービスはDocker上のminio
#結論
use_path_style_endpointをtrueにするとサブドメインを使わずにバケットを指定することができる
#タイムライン
- LaravelからS3にアップロードしたい
- S3だけローカルから外すのはびみょい
- テスト環境としてminioを選択
- minioをdocker-composeに追加してみる
- 一通りの設定をして、接続してみる
- バケット名がサブドメインになるので、docker-composeでの名前解決に失敗する
- 取り急ぎhostsに名前書いて名前解決できるようにする
- 依然としてエラー そのようなバケットはありませんと言われる
- minioのブラウザ側でバケットを作成
- それでもエラー・・・ よく見るとエラー対象のバケット名が入っていない
- ひょっとして、サブドメインでバケット名拾えない?
- ネットの海を彷徨う
- force_path_styleという設定をrubyのコードないで見つける
- ダメ元で設定を追加してみる、ダメっぽい
- AwsS3Adapterのオプションにuse_path_style_endpointというのを見つける
- 上記オプションをオンにすることで接続が成功