ラッパーAPIのデプロイ

Oracle Blockchain Platform Digital Assets Editionは、ブロックチェーン・アプリケーション・ビルダーによって生成されたチェーンコード内のすべてのコントローラAPIのラッパーAPIを生成できます。次のステップを実行して、スタック・リソース・マネージャにラッパーAPIパッケージをデプロイし、関連するPostmanコレクションを使用してラッパーAPIをテストします。

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

  • <ChaincodeName>WrapperAPI.zip: Oracle Cloud Infrastructure (OCI) Resource ManagerにラッパーAPIをデプロイするために必要なTerraformスクリプトを含むアーカイブ・ファイル。
  • <ChaincodeName>_WrapperAPI.postman_collection.json: デプロイメント後にラッパーAPIをテストするために使用されるPostmanコレクション。

ラッパーAPIをデプロイするには、WrapperAPI.zipファイルを使用してOCIリソース・マネージャにスタックを作成します。

ラッパーAPIパッケージをデプロイするには、次の前提条件を満たす必要があります。

  • ラッパーAPIパッケージは、ブロックチェーン・アプリケーション・ビルダーを使用して生成する必要があります。
  • パッケージには、ラッパーAPIに必要なすべての構成変数値とエンドポイント値が含まれている必要があります。
  1. OCIにログインしてください。
    OCIコンソールを開いてサインインします: https://cloud.oracle.com/。スタックがデプロイされるコンパートメントにいることを確認します。
  2. 「ナビゲーション」メニューを開きます。「開発者サービス」を選択します。「リソース・マネージャ」で、「スタック」を選択します。
    スタックのリソース・マネージャ・インタフェースが開きます。Terraform構成を使用して、既存のスタックの表示、スタックの作成、およびコードとしてのインフラストラクチャの管理を行うことができます。
  3. 「スタックの作成」をクリックします。
  4. スタック情報を構成します。
    1. 「Terraform構成」セクションで、「自分の構成」を選択します。
    2. 「スタック構成」「Terraform構成ソース」で、.Zipファイルを選択します。
    3. 「参照」をクリックし、ラッパーAPIの.zipファイルに移動します。
    4. .zipファイルがアップロードされたら、スタック名が正しいことを確認します。
    5. 「Terraformバージョン」ドロップダウン・リストで、v1.2以上を選択します。デフォルトでは、リソース・マネージャは最新バージョンを使用します。v1.2 より前のバージョンを選択した場合、デプロイメントは失敗します。
    6. 残りのすべての設定をデフォルトとして保持できます。「次へ」をクリックしてください。
  5. スタック変数を構成します。
    1. すべての構成変数の値が正確であり、デプロイメントの要件を満たすようにラッパーAPIパッケージで指定された構成変数と一致していることを確認します。
    2. ocir_user_nameに、OCIアカウントに関連付けられた電子メール・アドレスを入力します。
    3. ocir_user_passwordに、OCI認証トークンであるパスワードを入力します。このトークンは、OCIコンソールのプロファイルまたはユーザー設定セクションで生成できます。認証トークンは、Oracle Cloud Infrastructure Registryにログインするためのパスワードとして機能します。
      認証トークンの生成の詳細は、認証トークンの生成を参照してください。
    4. 残りのすべての設定をデフォルトとして保持できます。「次へ」をクリックしてください。
  6. スタック情報を確認します。すべてが正しい場合、「作成」をクリックします。
  7. Terraformプランを実行します。
    1. スタックの「詳細」ページで、「計画」をクリックして実行計画の作成を開始します。
    2. オプションで、ジョブ・プランを構成します。デフォルト名を編集したり、拡張オプションを選択してプロバイダのバージョンを変更したり、設定を調整できます。
    3. 「プラン」をクリックして、プラン・ジョブを作成して実行します。
      Terraform構成が解析され、実行計画が生成されて実行され、次のタスクが完了します。
      • Terraformスクリプトを検証して、構文エラーや構成エラーがないことを確認します。
      • 実際のインフラストラクチャを変更せずに、リソース作成プロセスをシミュレートします。
      • スクリプトが作成、変更または破棄するリソースをリストする出力サマリーを提供します。
    4. スタックの「ジョブ」セクションでステータスをモニターします。計画が正常に完了したら、出力をレビューして、作成されるリソースの数を確認し、問題がないことを確認します。
  8. Terraformプランをスタックに適用します。
    1. スタックの「詳細」ページで、「適用」をクリックします。
    2. 「Terraform Apply」パネルで、「Apply」をクリックします。
      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コレクションのすべての変数を構成します。動的に生成されたゲートウェイ・エンドポイントが提供されるOCIでのスタック・デプロイメントの出力からapi_gateway_endpoint値を取得します。

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

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


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

次の情報を使用して、ラッパーAPIをデプロイおよび使用する際の問題をトラブルシューティングできます。

認可されていません: ocir_user_nameまたはocir_user_passwordが無効です
このエラーは、ユーザー名またはパスワードの資格証明が正しくない場合に発生します。この問題を解決するには、次のステップを実行します。
  1. スタックの「詳細」ページの「変数」セクションに移動します。
  2. 「変数の編集」をクリックして、ユーザー名とパスワードの値を変更します。
  3. 正しい情報で資格証明を更新します。
  4. 「適用」をクリックしてスタックを再デプロイします。
デプロイメントの失敗- 「拒否: 匿名ユーザーはパブリック・リポジトリに対する読取りアクセスのみ許可されます」
場合によっては、デプロイメントが次のエラーで失敗することがあります。
denied: Anonymous users are only allowed read access on public repos

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

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

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

  1. OCIスタック・リソース・マネージャで「破棄」をクリックして、デプロイメント・プロセス中に作成されたすべてのリソースを破棄します。
  2. リソースが破棄されたら、「適用」を再度クリックしてスタックを再デプロイします。これにより、適切なDocker認証を含む必要なリソースの作成がトリガーされます。
一般的なデプロイメントの失敗: 断続的な問題
スタック・デプロイメントは、ランダムなDocker関連の問題のために失敗することがあります。これが発生した場合は、次のステップに従って問題を解決します。
  1. 「破棄」をクリックして、失敗したデプロイメント中に作成されたすべてのリソースを削除します。
  2. リソースが破棄されたら、スタックに戻り、「適用」をクリックしてスタックを再デプロイします。

これにより、断続的な問題が解決され、デプロイメントが成功する可能性があります。