AWS Cognito
こちらはユーザプールの作成をしていただければOKです。
基本的にはそのままの設定でよいはずです。
Supabaseとの連携に必要なidやアクセスキーを把握しておいてください。
- AWSのアクセスキーID
- AWSのシークレットアクセスキー
- AWSのリージョン
- CognitoのユーザプールID
SupabaseとCognitoの連携
それではCognitoとの連携部分を作っていきます。
内容は下記のSupabaseのドキュメントそのままなので英語が得意な方はこちらで。
https://supabase.com/docs/guides/database/extensions/wrappers/cognito
Supabase Wrappersの設定
Supabaseには外部データを扱うための拡張機能、Wrappers
があります。
https://github.com/supabase/wrappers
この機能を有効にして設定していきましょう。
SQLエディタで下記を入力してください。
create extension if not exists wrappers with schema extensions;
これで拡張機能は有効になりました。
次はwrapperを作成しましょう。
下記で作成できます。
create foreign data wrapper cognito_wrapper
handler cognito_fdw_handler
validator cognito_fdw_validator;
Vaultの利用
SupabaseにはVault
という安全にシークレットキーを管理するための仕組みがあるので今回のようにシークレットキーを管理する必要がある際は利用しましょう。
下記のSQLでシークレットキーをVaultに追加できます。
※ここでは説明しませんが、事前にAWSのアクセスキーを作成しておいてください。
insert into vault.secrets (name, secret)
values (
'cognito_secret_access_key',
'AWSのシークレットアクセスキー'
)
returning key_id;
設定するとVaultにキーが追加されます。これで直接シークレットキーを入力せず、idの入力で代用できます。

Cognitoと接続する
Wrappersのサーバを立ち上げてCognitoと接続できるようにしましょう。
create server cognito_server
foreign data wrapper cognito_wrapper
options (
aws_access_key_id 'AWSのアクセスキー',
api_key_id 'vaultから取得したAWSのシークレットアクセスキーID',
region 'AWSのリージョン',
user_pool_id 'CognitoのユーザプールID'
);
Cognitoのユーザデータを表示するための外部テーブルを作成
下記でcognitoのサーバからデータを同期して取得するためのテーブルを作成します。
(Select以外はできないテーブルです。)
create foreign table cognito (
email text,
username text
)
server cognito_server
options (
object 'users'
);
Cognitoとの同期を確認
Cognito側で手動でユーザを作成してみましょう。
ここまでの処理が成功していればテーブルにデータが追加されることがわかります。
