AWS LightsailインスタンスでDiscourseをAWS S3構成で動作させるために3時間頭を壁に打ち付けた後、これに関するシンプルで分かりやすいチュートリアルがあれば良いと強く感じています。これにはあらゆる種類の落とし穴があります。AWS S3 URLを使用してリモートでファイルをプルできるバケットを作成することには問題ありませんが、CDN、S3エンドポイント(設定UXでは空白にできると明記されているにもかかわらず、アップロードを試みると「エンドポイントは空白にできません」という内部メッセージが表示される)、そしてAmazonのCloudFront経由でCDNを使用する場合に実際に必要となる権限レベルのような基本的なことになると、話は別です。
とにかく情報量が多すぎます。インターネットを徹底的に調べましたが、これに匹敵するものは何も見つかりませんでしたし、ましてや今日のDiscourseに対応した最新の情報など見つかりませんでした。
何かヒントがあれば感謝します。
現時点での主な障害は、DiscourseがキーIDとキーシークレットを要求するという点からすると、権限設定だと思います。IAMにユーザーは作成しましたが、S3バケットの情報には、このユーザーがそのバケットに関連付けられていることを示すものが何もないため、これが接続の切断点なのかどうかわかりません。正直なところ、LightSailとAWSを8年以上使用していますが、このS3の分野は、物事を行うための50の異なる方法がある、ある種の開発UXスタイルの難読化で書かれています。全く直感的ではありません。
pfaffman
(Jay Pfaffman)
2
「いいね!」 1
こんにちは、ジェイさん。はい、その件は何回も見直しました。2020年のものなので、DISCOURSE_S3_REGION設定のようなものがありますが、管理画面にはそのような設定がありません。
また、S3を適切に設定して動作を確認した後に、古いデータをレイキング(rake)するのではないでしょうか?
私が言いたいのは、こういうことです。Discourseの設定は、開発者のようにAWS、シェル、Discourseについてユーザーが知っていることを前提としすぎています。
現在の状況は以下の通りです。
CDNは動作しており、手動でアップロードしたファイルは動作します。
https://s3.kitmaker.net/IMG_7184.JPG
Discourse経由でアップロードすると、以下のようなエラーが出ます。
discourse-kitmaker.s3.kitmaker.net:443 への TCP 接続を開けませんでした (getaddrinfo: 名前またはサービスが不明です)
現在の設定は以下の通りです。
ああ、そういえば、無視していたリージョン設定がありましたね。ええ、しかし、それを正しく設定しても助けにはなりませんでした。
pfaffman
(Jay Pfaffman)
6
しかし、あなたはそれらの指示に従っていないことを示しています。
だからこそ、UXで設定するのではなく、それらの指示に従う必要があるのです。
これらが従うべき指示です。
そして、アセットをS3にアップロードするためにymlに追加する部分もお見逃しなく。
本番環境を台無しにしないように、テストサイトで行うことをお勧めします。
はい。ymlのenvにS3設定を追加し、再構築してから、それらが機能するかテストし、その後でrakeタスクを実行します。それらはデータベースではなく、そこに設定する必要があります。なぜUXからそれらが隠されていないのか分かりません。
しかし、これも参照してください: How are you authenticating Discourse to AWS? Help us improve the settings!
「いいね!」 1
提供していただいたリンクありがとうございます。最初に投稿されたリンクには、AWS関連の別のリンク(https://meta.discourse.org/t/set-up-file-and-image-uploads-to-s3/7229)があり、これは2013年のものです。そのため、すぐに、AWS CDNがCloudFront経由で独自のポリシーに置き換えているにもかかわらず、そこにはXバケットポリシーを入れるようにという記述にぶつかります。変更すべきでしょうか?そのままにしておくべきでしょうか?これが私が言っているくだらないことです。ううう!
「いいね!」 1
問題は、app.yml の「空欄を埋める」設定や管理者の設定というよりも、それらの設定が作成されたバケットや CDN などとどのように相互作用しているかの組み合わせです。したがって、啓発が必要なのは Amazon 側の設定です。Discourse ではないことは理解していますが、S3 を介して実際に機能するようになることは Discourse ユーザーにとって非常に役立つでしょう。ご理解いただけると幸いです。
pfaffman
(Jay Pfaffman)
9
なるほど。しばらくAWSバケットを設定していませんでした。その部分はもっと複雑になることがありますが、あなたが投稿したやり方ではありません。
しかし、それもかなり簡単で、必要なものを貼り付ければ、エラーが出た場合はそれに対処できます。
それがあなたが説明した唯一の問題です。
バケットをどのように設定しましたか?ユーザーにどのような権限を与えましたか?キーを生成しましたか?どのようなエラーが出ましたか(でも、投稿に画像を添付したら機能したと言っていませんでしたか?)
「いいね!」 1