mastodonの画像とか動画をS3で管理しようと思ったらハマったので解決策を書きます。
ハマりどころ
.env.productionのS3の設定項目のうち、S3_PROTOCOLだけでなくS3_ENDPOINTも設定しないと、S3のSSLがうまく働かない。
原因
S3_ENDPOINTを設定しないと、画像のURLがhttps://${bucket-name}.sp-${region}.amazonaws.com/.....のようになる。
ところが、S3のSSL鍵はsp-${region}.amazonaws.comドメインに対してのものなので、「不正なSSL鍵です」という警告が出て、ブラウザでアクセスできない。
結論
.env.productionに以下のようなオプションを書き加えればよい。
S3_ENABLED=true
S3_BUCKET=${your-bucket-name}
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
S3_REGION=${your-bucket-region}
S3_PROTOCOL=https
S3_ENDPOINT=https://s3-${your-bucket-region}.amazonaws.com
感想
.env.production.sampleの書き方がわかりづらいと思った。
備考
他の記事へのコメントで、 S3_PROTOCOL は設定しなくていいよっていうのがありました。 もしかしたら、S3_PROTOCOLを指定しなければ全部うまくいくのかもしれません(未確認)。