カスタムS3ストレージの使用中にエラーが発生しました

Azure Blob Storage プラグインの不具合に常に苛立たされているため、Azure プロトコルを S3 プロトコルに変換する Flexify.IO サーバーを運用しています。

しかし、Discourse に設定しても動作しません。エラーは以下の通りです。

Failed to open TCP connection to support.xxx.xxx.xxx.xxx:443 (getaddrinfo: Name or service not known)

ここで xx.xx.xx.xx は S3 ゲートウェイの IP アドレス、support はバケット名です。

面白いことに、S3 Browser でエンドポイントをテストしたところ、問題なく動作しました。

そこで、親切な方にお尋ねしたいのですが、私がどこを間違えているのでしょうか?

エンドポイントが露出しているリージョンが eastasia(有効な Azure リージョン)であるため、これはリージョンに起因する可能性しか考えられません。しかし、リストから選択できるのは標準的な AWS リージョンのみです。それでもなお、エラーはリージョンの不一致ではなく、エンドポイント自体への接続失敗を示しているように見えるため、奇妙です。

bucket_name の設定が間違っているような気がします。エンドポイント URL にバケット名がそのまま付加されてしまうからです。

代わりに bucket/folder 形式を使うべきでしょうか?それぞれの項目には何を設定すればよいですか?

追記:ソースコードを確認すると、これはハードコードされているようです。ストレージプロバイダーがバケット名をプレフィックスとして使用しない場合、どうすればよいでしょうか?

アップロードにオブジェクトストレージを使用する(S3 およびそのクローン)という文書に従ってご活用ください。より柔軟性が高まります。動作を確認できたら、ウィキへの追加もご検討ください!

「いいね!」 2

これについて:

であれば、これは 明らかに 誤りです:

エラーメッセージがそれを示しています。getaddrinfo: Name or service not known は DNS 解決失敗を意味します。「support.303.303.303.303」のようなホスト名は存在し得ません。

「support」の部分はどこから来たのですか?

flexify のドキュメント によると:

アプリケーションが使用する S3 エンドポイントを s3.flexify.io(または設定に表示されている別のホスト名)に変更してください。

つまり、管理コンソールで変更することはできません。代わりに、@falco が言及しているトピックを参照し :arrow_double_up: 、以下から始めてください:

  DISCOURSE_S3_ENDPOINT: https://s3.flexify.io
「いいね!」 2

あ、すみません。support はバケット名です。S3 は単にドメイン名にバケット名を先頭に付加するだけで、Discourse もそれを前提としていることがわかります。

はい、そこまではわかりました。つまり、エンドポイントを app.yaml にハードコードする必要がある、ということで合っていますか?

@Falco @schleifer 承知しました。試してみましたが、残念ながら同じエラーが発生したままです。

そのため、app.yaml にハードコードしても機能しないのではないかと考えています。これらは同じコードストリームに流れているように見えます。

これが私の app.yaml の設定です:

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: eastasia
  DISCOURSE_S3_ENDPOINT: https://??.??.??.??
  DISCOURSE_S3_ACCESS_KEY_ID: ???
  DISCOURSE_S3_SECRET_ACCESS_KEY: ???
  DISCOURSE_S3_BUCKET: support

まだ support.??.??.??.??:443 へのアクセスを試みています。

つまり、Discourse ではバケットがサブドメインを形成しなければならないのでしょうか?

編集 1

さて、app.yaml の設定を破棄し、support を持つサブドメインを作成して xx.xx.xx.xx を指すように設定しました。これでアップロードすると、しばらく回転アイコンが表示された後、一般的なエラーが返ってきました:

Aws::S3::Errors::BadRequest

正確なエラーメッセージを取得する方法はありますか?

/logs ページを確認してみましたか?

はい、でもそこには何もありません…

エンドポイント環境変数に設定している正確な値は何ですか?

OK、Flexify.IO にサブドメインモードを設定するオプションが見つかりました。これで動作するようになりました。:champagne:

ウィキを更新します!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.