LoginSignup
2
0

【Azure】BotpressのDBをsqlite ⇒ PostgreSQL にするときにつまずいた話

Last updated at Posted at 2024-02-08

はじめに

Botpressサーバーを立てる際は、デフォルトで内部のsqliteを使用して様々なデータを管理しています。
しかし、早いうちにPostgreSQLを使用するよう公式サイトより推奨されています。
耐障害性、安定性、拡張性、安全性が上がるから、とのこと。良いことだらけですね。

本記事では、Azure環境で上記のようなデータベースの移行を行おうとした際に激詰まりした内容を、戒めがてら紹介します。

※Botpressサーバーを立ち上げるまでの流れはこちらで紹介しております。

発生したエラー

今回はAzure Container Registryに保存したDockerイメージを使用して、Azure App ServiceにBotpressサーバーを立てておりました。

簡単な構成図は以下です。
画像1.png

ここから、Azure Database for PostgreSQLを使用し、データベースを外部に移そうと試みました。
移行後の構成図は以下のようになります。
画像2.png

移行する方法は公式サイトに記載しているように、App Serviceの「構成 > アプリケーション設定」に以下のパラメータを追加します。

key value
DATABASE postgres
DATABASE_URL postgres://dbuser:password@your-db-host.com:5432/your-db-name

※データベース側のファイヤーウォール設定などは割愛します。

これらの設定を行い再起動しましたが、以下のようなエラーが発生しました。

error: no pg_hba.conf entry for host "XX.XXX.XX.XXX", user "postgres", database "botpressdb", no encryption

XX.XXX.XX.XXXはApp ServiceのIPアドレスです。

no encryptionとあるように、通信を行う際に暗号化が行われておらず、接続できないとのことです。

結論

接続文字列にssl=trueというパラメータを追加します。

key value
DATABASE postgres
DATABASE_URL postgres://dbuser:password@your-db-host.com:5432/your-db-name?ssl=true

もう少し詳しく

Azure Database for PostgreSQLでは、デフォルトでクライアント側にSSLを使用した暗号化を使用した通信を強制します。
公式より。)

こちらのトラブルシューティングでも同じような記載があります。
image.png

なので暗号化を行うよう調整すればよいとアタリはつきましたが、具体的な方法が分からず右往左往しておりました、、。

ところで、この「暗号化の強制」は解除することができます。
上記のキャプチャにもある通り、「PostreSQL > サーバーパラメーター > require_secure_transport」をOFFにすることで暗号化を使用しない通信ができます。
image.png

こちらをOFFにして接続ができた場合は、接続文字列自体は合っていると判断できるかと思います。

最後に

今回のエラーの解決のためにかなりの時間を費やしてしまいました、、。
だれかの助けになれば幸いです。

ご紹介

株式会社ジールでは、「ITリテラシーがない」「初期費用がかけられない」「親切・丁寧な支援がほしい」「ノーコード・ローコードがよい」「運用・保守の手間をかけられない」などのお客様の声を受けて、オールインワン型データ活用プラットフォーム「ZEUSCloud」を月額利用料にてご提供しております。
ご興味がある方は是非下記のリンクをご覧ください:
https://www.zdh.co.jp/products-services/cloud-data/zeuscloud/?utm_source=qiita&utm_medium=referral&utm_campaign=qiita_zeuscloud_content-area

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0