ラッパーAPIのデプロイ

Oracle Blockchain Platform Digital Assets Editionでは、アプリケーション・ビルダーで生成されたチェーンコード内のすべてのコントローラAPIに対してラッパーAPIを生成できます。このトピックでは、スタック・リソース・マネージャにラッパーAPIパッケージをデプロイし、関連付けられたPostmanコレクションを使用してラッパーAPIをテストするための詳細なステップを示します。

ブロックチェーン・アプリケーション・ビルダーを使用してラッパーAPIパッケージが生成されると、選択したディレクトリにデフォルトの命名規則を持つ2つのファイルが作成されます。

  1. <ChaincodeName>WrapperAPI.zip: このファイルには、Oracle Cloud Infrastructure Resource ManagerにラッパーAPIをデプロイするために必要なTerraformスクリプトが含まれています。
  2. <ChaincodeName>_WrapperAPI.postman_collection.json: デプロイメント後のラッパーAPIのテストに使用されるPostmanコレクション。

ラッパーAPIをデプロイするには、WrapperAPI.zipファイルをOCI Resource Manager内で使用する必要があります。

前提条件

ラッパーAPIパッケージをデプロイするための前提条件は次のとおりです。

  • ラッパーAPIパッケージは、アプリケーション・ビルダーを使用して生成する必要があります。
  • パッケージには、ラッパーAPIに必要なすべての構成変数値とエンドポイント値を含める必要があります。
Wrapper APIパッケージの展開
  1. OCIにログインします。
    OCIコンソールを開き、https://cloud.oracle.com/にサインインします。
    スタックがデプロイされるコンパートメントにいることを確認してください。
  2. 「ナビゲーション」メニューを開きます。「開発者サービス」を選択します。「リソース・マネージャ」で、「スタック」を選択します。
    スタックのリソース・マネージャ・インタフェースが開きます。Terraform構成を使用して、既存のスタックの表示、新しいスタックの作成、およびInfrastructure as Codeの管理を行うことができます。
  3. 「スタックの作成」をクリックして、新しいスタックを作成します。
  4. スタック情報を構成します。
    1. 「Terraform構成」セクションで、「自分の構成」を選択します。
    2. 「スタック構成」「Terraform構成ソース」で、「.Zipファイル」を選択します。
    3. 「参照」をクリックし、ラッパーAPIのZipファイルに移動します。
    4. アップロードしたら、スタック名が正しいことを確認してください。
    5. 残りの設定はすべてデフォルトとして保持できます。「次へ」をクリックしてください。
  5. スタック変数を構成します。
    1. すべての構成変数値が正確で、デプロイメントの要件を満たすようにラッパーAPIパッケージで指定された構成変数と一致していることを確認します。
    2. ocir_user_nameに、OCIアカウントに関連付けられた電子メール・アドレスを入力します。
    3. ocir_user_passwordに、パスワード(Oracle Cloud Infrastructure認証トークン)を入力します。このトークンは、ユーザー設定のOCIコンソールで生成できます。認証トークンは、Oracle Cloud Infrastructure Registry (OCIR)にログインするためのパスワードとして機能します。
      認証トークンの生成方法の詳細は、認証トークンの生成を参照してください。
    4. 残りの設定はすべてデフォルトとして保持できます。「次へ」をクリックしてください。
  6. スタック情報を確認します。すべて正しいことを確認したら、「作成」をクリックします。
  7. Terraform計画を実行します。
    1. スタックの「詳細」ページで、「計画」をクリックして実行計画の作成を開始します。
    2. オプションで、ジョブ・プランを構成します。デフォルト名を編集したり、拡張オプションを選択してプロバイダ・バージョンの調整設定を変更できます。
    3. 「プラン」をクリックして、プラン・ジョブを作成および実行します。
      これにより、Terraform構成が解析され、実行計画が生成され、次の処理を行う計画が実行されます。
      • Terraformスクリプトを検証して、構文エラーや構成エラーがないことを確認します。
      • 実際のインフラストラクチャを変更せずに、リソース作成プロセスをシミュレートします。
      • スクリプトが作成、変更または破棄するリソースをリストする出力サマリーを提供します。
    4. スタックの「ジョブ」セクションでステータスをモニターします。計画が正常に完了したら、出力を確認して、作成されるリソースの数を確認し、問題がないことを確認します。
  8. Terraformプランをスタックに適用します。
    1. スタックの「詳細」ページで、「適用」をクリックします。
    2. Terraformの「適用」パネルで「適用」をクリックします。
      これにより、次のようになります。
      • Terraformスクリプトで定義されている次のリソースをすべてプロビジョニングします。
        • 仮想クラウド・ネットワーク(VCN)
        • アプリケーション(OCI関数)
        • APIゲートウェイ
        • APIデプロイメント
        • IAMポリシー
        • OCIレジストリ・リポジトリ
      • ラッパーAPIに必要なすべてのインフラストラクチャを作成します。
    3. スタックの「ジョブ」セクションのステータスをモニターして、ジョブがエラーなしで正常に完了したことを確認します。
  9. APIゲートウェイ・エンドポイントを取得します。
    1. 適用ジョブが終了したら、「適用ジョブ」ページの「出力」セクションに移動して、生成された出力値を表示します。
    2. 出力は、キーがエンドポイント名を表し、値が対応するエンドポイント値であるJSONオブジェクトを返します。
      たとえば次のようにします。
      api_gateway_endpoints{"api_gateway_endpoint":"https://grqkdiwsugp3fp2m5z3zgpo4.apigateway.ap-mumbai-1.oci.customer-oci.com/WholesaleCBDC"}
    3. エンドポイントをコピーします。API Postmanコレクションを更新する必要があります。
PostmanによるラッパーAPIのテスト

PostmanでAPIをテストできます。適切な値を割り当てて、ラッパーAPI Postmanコレクション内のすべての変数を構成します。api_gateway_endpoint値は、動的に生成されたゲートウェイ・エンドポイントが提供されるOCIのスタック・デプロイメントの出力から取得する必要があります。

Postmanコレクション内の変数が更新されたら、ラッパーAPIをテストできます。コレクション内の各APIリクエストには、対応するラッパーAPIに固有の必要なペイロードが含まれます。

図6-1 Postmanを使用したAPIラッパー・コレクションのテスト


イメージは、生成されたゲートウェイAPIを使用してコレクションからAPIを実行するPostmanを示しています。

トラブルシューティング

次に、一般的な問題とその解決策をいくつか示します。

未認可: ocir_user_nameまたはocir_user_passwordが無効です
このエラーは、ユーザー名またはパスワードの資格証明が正しくない場合に発生します。この問題を解決するには、次のステップを実行します。
  1. スタックの詳細ページの「変数」セクションに移動します。
  2. 「変数の編集」をクリックして、ユーザー名とパスワードの値を変更します。
  3. 正しい情報で資格証明を更新します。
  4. 変更が完了したら、「適用」をクリックしてスタックを再デプロイします。

これにより、認証の問題が解決され、デプロイメントが正常に続行されます。

デプロイメントの失敗- "denied: Anonymous users are only allowed read access on public repository"
場合によっては、次のエラーでデプロイメントが失敗することがあります。
denied: Anonymous users are only allowed read access on public repos

これは、スタックのバックエンド内のDocker操作に関連する断続的な問題です。具体的には、このエラーは、Dockerイメージを適切な認証なしでOracle Cloud Infrastructure Registry (OCIR)にプッシュしようとしたときに発生します。

ラッパーAPIパッケージには、イメージをプッシュする前にdocker loginを実行するスクリプトが含まれていますが、適切な認証を確保していますが、このエラーは散発的に発生する可能性があります。これは通常、イメージ・プッシュ時にDocker認証ステップがシステムによって正しく認識されない場合に発生します。

このエラーが発生した場合は、次のステップに従って問題を解決してください。

  1. 既存のリソースの破棄:

    OCIスタック・リソース・マネージャで「破棄」をクリックして、デプロイメント・プロセス中に作成されたすべてのリソースを破棄します。

  2. スタックを再適用します。

    リソースを破棄した後、再度「適用」をクリックしてスタックを再デプロイします。これにより、適切なDocker認証を含む必要なリソースの作成がトリガーされ、問題が解決されます。

一般的なデプロイメントの失敗: 断続的な問題
場合によっては、docker関連の問題のようにランダムにスタック・デプロイメントが失敗することがあります。このような場合は、次の手順に従って問題を解決します。
  1. 「破棄」をクリックして、失敗したデプロイメント中に作成されたすべてのリソースを削除します。
  2. リソースが破棄されたら、スタックに戻り、「適用」をクリックしてスタックを再デプロイします。

多くの場合、このプロセスでは断続的な問題が解決され、デプロイメントを正常に続行できます。