Misskey: [解決済][方法記述]Google Cloud Storageを利用可能にしてほしい

Created on 6 Apr 2019  ·  17Comments  ·  Source: syuilo/misskey

Summary

Google Cloud Storageがうまく動いていない
configの設定ミスだった

Expected Behavior

GCSが利用可能になる

Actual Behavior

GCSの指定したバケット内に画像ファイルを転送、保存自体はできている
ただしストレージ内に保存された画像ファイルを読み込むことができない

Steps to Reproduce

default.ymlの S3 example (with CDN, custom domain)部分の該当箇所をを以下のように編集した
_.config/default.yml_
bucket: your_gcs_bucket_name
baseUrl: https://storage.googleapis.com/
endPoint: storage.googleapis.com

_.config/default.yml_ の S3 example 欄の
endPoint: s3-us-west-2.amazonaws.com
endPoint: storage.googleapis.com に書き換える

☁️Drive 📖Doc

All 17 comments

ファイルのURLにアクセスすると、どのようなエラーが表示されますか?

region って設定しなくても大丈夫ですか?

アップロードできているのであれば気にする必要もなさそうですね、失礼しました。

WARN 1 [api] SLOW API CALL DETECTED: drive/files/create (2388.724227000028ms)
log漁ってると画像をアップロードするたびにこの一文が出てるんですけど関係ありますかね?

関係なさそう

prefix って files のままですか?一回 bucket と同じ値を充ててみてもらえませんか?

S3 with custom domain じゃなくて通常のS3の欄に入力したら画像出力できました

解決されたようで良かったです。ただこれ非常に不親切なので、ドキュメントを書いた方が良いでしょうね。

一応解説しておきますと、baseUrlという名前は少し引っ掛けで、実際にベースとして使われるURLはbaseUrl + '/' + prefixだったりします。なぜこういう設計にされたのかは自分も理解不能です。

えーっと一応解決方法ですが
S3 example
endPoint: s3-us-west-2.amazonaws.com
endPoint: storage.googleapis.com
に書き換えるとアップロードできました

あとregion欄は合わせなくてもアップロードされるみたいです
なんでこれで解決できたんだろ........
GCSそのものがS3互換だからなのかな

これ初見殺しだと思うんでどっかに書いておくべきかもしれませんね確かに........

私が頭悪いだけかもしれないですが、初見殺しどころか何度コード読んでも理解に時間がかかります……。

とりあえずGCSの設定方法一番上に書いておいたんで誰かが参考にしてくれるのを願うばかりです

リクエスト エンドポイント

Amazon S3 などの他のクラウド ストレージ システムで使用するツールまたはライブラリ内で、Cloud Storage URI( https://storage.googleapis.com )を使用するようリクエスト エンドポイントを変更してください

Google Cloud Storageのドキュメント先生がなんでこれで解決できたかを解説してくれました

https://github.com/syuilo/misskey/issues/4643#issuecomment-480576630
https://github.com/syuilo/misskey/issues/4643#issuecomment-480577371

なにをどう勘違いしてるか書いてくれないと、単にディスってるだけなんですが

S3 example (with CDN, custom domain)

は基本的に、amazon等所有のドメインではなく独自ドメインでストレージを公開したい場合の設定になります。
endpointと公開ドメインが同じサービスの場合はS3 exampleのようにbaseUrlは明記しなくてよく
さらにregionの概念がないサービスの場合は一番最初の例でOKです。

なるほど、ありがとうございます
でもひとつだけ気になるのがGCSはリージョンの概念があるサービスなんですがregionを編集してなくても使えるんですよね......
(例:GCSのregionがUS-CENTRAL1なのにconfigに region: us-west-2 と記述してあっても使える)

bucketは全世界でユニークのようなので、本来regionはなくてもbucketは特定できるのですが
AWSだとそれでもregion指定が必要なので設定値があります。
regionはAWSの場合以外は参照されないのかもしれません。

Was this page helpful?
0 / 5 - 0 ratings