Supabase + Cognitoの連携で外部連携を試す

目次

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側で手動でユーザを作成してみましょう。

ここまでの処理が成功していればテーブルにデータが追加されることがわかります。

SupabaseのTIPSリンク集
  • システム開発、アプリ開発
  • マッチングアプリ開発
  • インフラ構築支援等、なんでもご相談ください。
よかったらシェアしてね!
  • URLをコピーしました!
目次