2023年5月19日金曜日

Autonomous DatabaseのStripe Viewにアクセスする

 Autonomous Databaseでは、Stripeに登録された顧客や製品などを一覧するビューが提供されています。

https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/stripe-autonomous-database.html

以前にStripeを使う記事を書いたことがありStripeのアカウントが作成済みだったため、動作を確認してみました。

Stripeには以下の2つの商品が登録されています。


商品を一覧するビューSTRIPE_PRODUCTSを、対話モード・レポートで表示してみました。Stripeに登録されている商品がリストされています。


以下より、実施した作業について紹介します。

Oracle APEXのワークスペース・スキーマはWKSP_APEXDEVとします。ワークスペース・スキーマが異なる場合は、使用しているワークスペース・スキーマの名前に置き換えてください。

マニュアルの手順に従って作業を行います。

最初にAPEXのワークスペース・スキーマにネットワークACLを追加して、Stripeへのアクセスを許可します。principal_nameにワークスペース・スキーマWKSP_APEXDEVを指定します。
BEGIN
  DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
         host => 'stripe.com',
         ace  => xs$ace_type(privilege_list => xs$name_list('http'),
                             principal_name => 'WKSP_APEXDEV',
                             principal_type => xs_acl.ptype_db)
   );
END;
/
管理者ユーザーADMINでデータベース・アクションに接続し、SQLワークシートより実行します。


今回の例ではビューSTRIPE_PRODUCTSにアクセスします。APEXのワークスペース・スキーマに、ビューSTRIPE_PRODUCTSへの読み込み権限を与えます。

GRANT READ on STRIPE_PRODUCTS to WKSP_APEXDEV;


Autonomous Databaseでは、STRIPE_ACCOUNTSSTRIPE_COUPONSSTRIPE_CUSTOMERSSTRIPE_INVOICESSTRIPE_PLANSSTRIPE_PRODUCTSSTRIPE_SUBSCRIPTIONSといったビューが提供されています。READ権限は、これらのビューそれぞれに付与する必要があります。

管理者ユーザーADMINでの作業は完了です。

アプリケーション作成ウィザードを起動し、空のアプリケーションを作成します。名前Stripe Productsとします。


アプリケーションが作成されたら、ページ・デザイナホーム・ページを開きます。

対話モード・レポートのリージョンを作成します。

ソースの表名として、STRIPE_PRODUCTSを設定します。


以上でアプケーションを実行します。

クリデンシャルにアクセスができない、といったエラーが発生します。

ORA-20004: Credential "ORDS_PLSQL_GATEWAY"."STRIPE$CRED" does not exist


マニュアルによると、credential_nameSTRIPE$CREDであれば、デフォルトのクリデンシャルとして使用されると記述されています。これは、管理者ユーザーADMINに限定されているようです。ワークスペース・スキーマのデフォルト・クリデンシャルの指定ではスキーマ名による修飾が必須です。

ワークスペース・スキーマWKSP_APEXDEVに、Stripeへのアクセスで使用するクリデンシャルMY_STRIPE_CREDを作成します。

引数usernameStripeのユーザ名(通常メールアドレス)、passwordには、シークレットキーを指定します。


BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'MY_STRIPE_CRED',
        username        => 'Stripeのユーザー名',
        password        => 'シークレットキー' );
END;
/

作成されたクリデンシャルを、ビューUSER_CREDENTIALSより確認します。

select * from user_credentials where credential_name = 'MY_STRIPE_CRED';


クリデンシャルMY_STRIPE_CREDを、APEXアプリケーションが参照するようにします。

アプリケーション定義セキュリティデータベース・セッション初期化PL/SQLコードに以下を記述します。
begin
    execute immediate 'alter session set default_credential = ''WKSP_APEXDEV.MY_STRIPE_CRED''';
end;


以上で記事の先頭にあるように、対話モード・レポートにStripeに登録されている商品が一覧されます。

簡単なアプリケーションですが、今回作成したアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/stripe-products.zip

Oracle APEXのアプリケーション作成の参考になれば幸いです。