ラッパーAPIパッケージのコンポーネント

ラッパーAPIパッケージには、ラッパーAPIのアーカイブ・ファイル、デプロイメント用のTerraformスクリプトおよび対応するPostmanコレクションが含まれます。

  • ラッパーAPIアーカイブ・ファイルの名前は<ChaincodeName>WrapperAPI.zipです。また、スタック・リソースにデプロイする必要があるTerraformスクリプトも含まれています。
  • Postmanコレクション・ファイルの名前は<ChaincodeName>_WrapperAPI.postman_collection.jsonです。このコレクションを使用して、すべてのラッパーAPIをコールできます。

ラッパーAPIパッケージ

ラッパーAPIパッケージには、ラッパーAPIの作成に必要なすべてのOracle Cloud Infrastructure (OCI)リソースをプロビジョニングするTerraformスクリプトが含まれています。APIごとに、追加のTerraformサポート・ファイルとOracle Functionsフォルダがあります。ラッパーAPIパッケージは、次のOCIリソースを作成します。

  • Virtual Cloud Network (VCN): 通信用のネットワーク・インフラストラクチャを確立します。
  • アプリケーション(Oracle Functions): APIロジックを処理するサーバーレス・ファンクションをデプロイします。
  • APIゲートウェイ: APIリクエストを管理およびルーティングするためのゲートウェイを作成します。
  • APIデプロイメント: APIゲートウェイでAPIを構成およびデプロイします。
  • APIデプロイメント・ポリシー: セキュアなアクセスを有効にするために必要なIAMポリシーを設定します。
  • OCIレジストリ: Dockerイメージを管理するためのコンテナ・レジストリを提供します。
ラッパーAPIの生成後、構成変数を変更する場合は、Visual Studio Codeで更新するか、ラッパーAPIパッケージを抽出して、更新されたエンドポイントおよびリソース名および更新されたエンドポイントを含むroutes.goファイルでterraform.tfvarsファイルを更新できます。terraform.tfvarsファイルのfunction_paths変数を編集して、エンドポイントを更新します。function_paths変数は、{endpoint, methodType}という構文でエンドポイントを定義します。次のテキストは、function_paths変数の例を示しています。
function_paths="[{\"endpoint\":\"/activateCBDCAccount\",\"methodType\":[\"POST\"]},{\"endpoint\":\"/addCBAdmin\",\"methodType\":[\"POST\"]},{\"endpoint\":\"/approveBurn\",\"methodType\":[\"POST\"]}]"
routes.goファイルは、<ChaincodeName>OCIFunctionフォルダにあります。routeData変数には、ルート名、引数、オプションの引数があるかどうかなど、ゲートウェイで作成されたすべてのルートのメタデータが含まれます。terraform.tfvarsファイルのfunction_paths変数のエンドポイントを更新する場合は、次の例に示すように、routes.goファイルのrouteData変数の対応するエントリも更新する必要があります。
var routeData = map[string]Route{
    "/activateCBDCAccount": {
        Args:           []string{"activateAccount", "orgId", "userId", "tokenId"},
        OptionalParams: true,
    },
}

ポストマンコレクション

Postmanコレクションで、機密チェーンコードおよびOAuth 2.0認証がサポートされるようになりました。詳細は、Postmanコレクションの拡張を参照してください。

Postmanコレクションには、すべてのAPIの更新されたエンドポイントおよびペイロードが含まれます。次のコードに、ペイロードの例を示します。
{
    "orgId": "{{bc-org-id}}",
    "userId": "user1",
    "tokenType": "fungible",
    "applicationGroups": "[\"application_groups value\"]",
    "dailyLimits": "{\"max_daily_amount\":10000,\"max_daily_transactions\":100}",
    "endorsers": {{endorsers}}
}
次の表に、Postmanコレクション変数を示します。
可変 説明 デフォルト値
bc-admin-user adminロールを持ち、すべてのPOSTリクエストにアクセスできる管理ユーザー。デフォルトでは、このユーザーはチェーンコード内のすべてのPOSTリクエストのコール元です。 bc-admin-user値
bc-admin-user-password 管理ユーザーのパスワード。 bc-admin-user-password値
bc-org-id すべてのPOSTリクエストにおけるデフォルトの組織ID(orgIdはパラメータ名) bc-org-id値
bc-user-id すべてのPOSTリクエストのデフォルト・ユーザーID(userIdはパラメータ名) bc-user-id値
bc-token-id すべてのPOSTリクエストにおけるデフォルトのトークンID(tokenIdはパラメータ名) bc-token-id値
endorsers エンドサ配列には、このトランザクションを承認する特定のピア(peer1、peer2など)がリストされます。 [「org1-xyz-abc.blockchain.ocp.oraclecloud.com:20009」、「org2-xyz-abc.blockchain.ocp.oraclecloud.com:20009」]
api-gateway-endpoint 各リクエストのエンドポイント。ラッパーAPIエンドポイントのベース・パスとして機能します。

APIが50未満の場合は、単一のエンドポイントが使用されます。50を超えるAPIがある場合、エンドポイントはAPIの数に基づいてapi-gateway-endpoint1api-gateway-endpoint2などとして動的に生成されます。

https://xyz.apigateway.region.oci.customer-oci.com/CBDC
bc-url Oracle Blockchain PlatformインスタンスのRESTプロキシURL。 https://test-xyz-abc.blockchain.ocp.oraclecloud.com:7443/restproxy
access-token-url Oracle Identity Cloud Service (IDCS)アクセス・トークンURL。たとえば: <idcs_endpoint>/oauth/v1/token access-token-url値
client-id Oracle Blockchain PlatformインスタンスのクライアントID。 クライアントID
client-secret Oracle Blockchain Platformインスタンスのクライアント・シークレット。 クライアント・シークレット
peer この変数は、すべてのsetterおよびgetter APIのピア・ヘッダーを必要とする機密チェーンコード・ラッパーAPI Postmanコレクションにのみ存在します。 org-xyz-abc.blockchain.ocp.oraclecloud.com:20009

ラッパーAPIパッケージをデプロイすると、スタック・リソース・デプロイメントからの出力は、ゲートウェイ・エンドポイント値を含むJSONオブジェクトになります。50を超えるAPIを生成すると、50 APIごとに1つずつ、複数のゲートウェイ・エンドポイントが生成されます。これらのエンドポイントに関連するPostmanコレクション変数を更新する必要があります。Postmanコレクション内のエンドポイント関連変数は、スタック・リソース・マネージャ内のラッパーAPIパッケージ・デプロイメントの出力からの適切な値で更新する必要があります。

ラッパーAPI Postmanコレクション内のすべてのセッターAPIには、リクエスト・ペイロードのendorsersまたはsameOrgEndorserパラメータが含まれます。sameOrgEndorserパラメータを必要とするAPIを指定する情報は、チェーンコードの.ochain.jsonファイルのsameOrgEndorserOptionInWrapperAPIパラメータで定義されます。このパラメータにリストされているAPIのペイロードでは、sameOrgEndorserがtrueに設定されます。他のすべてのセッターAPIには、かわりにendorsersパラメータが含まれます。次の例は、卸売CBDCチェーンコードのパラメータを示しています。
"sameOrgEndorserOptionInWrapperAPI": ["addConversionRate","addTokenAdmin","addTokenAuditor","approveBurn","approveMint","burnTokens","createExchangePoolAccounts","deleteHistoricalTransactions","initializeCBDCToken","initializeExchangePoolUser","mintWithFundingExchangePool","rejectBurn","rejectMint","removeTokenAdmin","removeTokenAuditor","requestBurn","requestMint","updateCBDCToken","updateConversionRate"]
必要に応じて、.ochain.jsonファイルのsameOrgEndorserOptionInWrapperAPIパラメータをカスタマイズできます。ラッパーAPIを生成すると、指定されたAPIは、ペイロードにsameOrgEndorserパラメータをtrueとして含めます。
Postmanコレクションの使用方法の詳細は、次のトピックを参照してください。