状況
Vercel Postgresから、AWS AuroraにDBを移行するためにAWS DMSのソースエンドポイント(移行元)を追加しようとしたら、以下のエラーが出てしまった。
Test Endpoint failed.
~~省略~~
101 Message: ERROR: Endpoint ID is not specified.
Either please upgrade the postgres client library (libpq) for SNI support
or pass the endpoint ID (first part of the domain name)
as a parameter: '?options=endpoint%3D<endpoint-id>'.
See more at https://neon.tech/sni
調査
GitHub Issueによると、VercelPostgresのlibpq
のバージョンが古く、SNIに対応していないために発生している問題らしい。(早くアップデートしてくれぃ!)
まずはエラー文の指示通り、?options=endpoint%3D<endpoint-id>
をパラメータとして追加する。
<endpoint-id>
は、ab-cdef-ghikj-12345678-pooler.ap-southeast-1.postgres.vercel-storage.com
のab-cdef-ghikj-12345678-pooler
の部分なので、追加の接続属性
に言われた通りの記述をしてみる。
しかし、AWS DMSのエンドポイントでは、渡せるパラメータに制限があるらしく、以下のようなエラーになってしまう...
解決方法
neonの公式ドキュメントに解決方法が書いてあった。
パスワードの入力フィールドに、
endpoint=<endpoint_id>;<password>
か
endpoint=<endpoint_id>$<password>
のような形式で入力すると、エンドポイントIDを特定できるようになるらしい。
AWS DMSのエンドポイント設定では、パスワードフィールドに ;
(セミコロン)を含めることはできないため、$
で区切ってあげればOK!
まとめ
公式ドキュメントはやはり至高!
焦ってStack Overflowばかり漁ってしまいがちなので反省...