Mastodon v3.2.0 アップデートメモ (S3+CloudFront環境)

この記事は、2020/8/2 10:54にQrunchにて公開したエントリ https://qrunch.net/@shibafu528/entries/38YisAjxltKKMs8y の再公開版となります。

内容は基本的に当時のままですので、古くなっているはずです。予めご了承ください。


基本的には下記のリリース手順に従うだけ……なのはいつもの事。
https://github.com/tootsuite/mastodon/releases/tag/v3.2.0

ただし、今回はメディアを別サーバに置いている場合はCORSの設定が必要との記載あり。どうやらv3.2.0で新しくなった音声プレイヤーが正しく動作するために必要らしい。

If you are serving user-uploaded files from a differet domain/subdomain than the one the Mastodon web UI is served from, please keep in mind that you need to return CORS headers on those files, otherwise the new audio player will not work. Here is an example of nginx directives for returning the appropriate CORS headers:

```nginx
add_header 'Access-Control-Allow-Origin'  '*';
```

私が管理しているertona.netではメディアをS3にアップロードし、CloudFrontを経由して配信しているので、下記の対応が必要だった。

S3のCORS設定

S3 Management Consoleを開き、「アクセス権限」→「CORSの設定」を開く。
続いて、CORS構成エディターに下記のような感じで設定を投入する。とりあえずS3はこれだけでも動いてくれる。
詳しくはドキュメント参照。

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

2021/3/9 追記

いつの間にやら、S3 Management ConsoleのCORS設定はJSON形式になっていたらしい。当時の設定は自動でマイグレーションされていたので、コンソールからコピペしたものを補足情報として掲載します。

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "HEAD"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [],
        "MaxAgeSeconds": 3000
    }
]

CloudFrontの設定

OPTIONSリクエストを受けつけてキャッシュするようにするのと、CORS関係のヘッダーをオリジン(S3)に転送するように設定が必要。

まだ理解が浅いが、この辺に従うといい感じになった。
リクエストごっそりキャッシュされているので、設定の反映を確認するためにはどうにかしてinvalidateさせるか、単に新しくファイルをアップロードしてそれに対してリクエストすると良い。

コメント

このブログの人気の投稿

2019年の振り返り

Macを買ってmikutterを入れたときのメモ

Yukari for Android 1.2