ノート:

OCI APIゲートウェイ、ファンクションおよび可観測性を使用したJSONコンテンツの検証とAPIヘッダーおよび本体の監視

イントロダクション

特にマイクロサービスに基づくアーキテクチャで分散アプリケーションを開発する場合、その実行において適切にスケーリングおよびパフォーマンスを発揮するコンポーネントが必要です。非常に複雑なアーキテクチャ、他のコンポーネントを実行するコンポーネント、他のコンポーネントなどを無限のコール数で実行します。

それぞれをどのように開発するかは大きな課題です。Kubernetesクラスタ上に構築されたマイクロサービスは、Oracle Cloud Infrastructure API Gateway (OCI API Gateway)を通じて公開できます。コール認証および認可の実行、データ検証およびコール最適化の実行など、いくつかの機能があります。また、既存の方法ではニーズを解決するのに十分でない場合に、パーソナライズされた認証および認可メカニズムを作成することを目的として、OCI Functionsでコールを実行する可能性もあります。

このチュートリアルでは、カスタム・メカニズムを使用して、次のようなユースケースを検証する方法を示します。

OCI APIゲートウェイでの認証および認可のメカニズムであるにもかかわらず、次のような他のニーズにも役立ちます。

目的

前提条件

タスク1: OCI Observabilityの構成

  1. OCIテナンシにログを作成して、ファンクションからログを取り込みます。「監視および管理」に移動し、OCIコンソールで「ログ」を選択します。

    ロギング-1

  2. 「カスタム・ログの作成」をクリックします。

    ロギング-2

  3. 「カスタム・ログ名」フィールドに名前を入力し、適切なコンパートメントおよびログ・グループを選択します。

    ロギング-3

ノート: ログのOCIDを取得することが重要です。コードにはこれが必要です。

ロギング-4

タスク2: APIリクエストからHEADERおよびBODYを取得するOCIファンクションの作成

次のステップを実行するには、function.zipからコードをダウンロードします。

コードの理解

このコードは、function.zipにあります。

ノート: APIゲートウェイでファンクションを開発およびコールする方法がわからない場合は、APIゲートウェイを使用したファンクションのコールを参照してください。

OCIへのSDK認証の構成

構成ファイルをOCIにデプロイする前に、構成ファイルを構成し、OCI秘密キーおよびフィンガープリントをファンクションとともに配置する必要があります。Oracle Cloud Infrastructureコマンドライン・インタフェース(OCI CLI)のインストールおよび構成でconfigおよび秘密キー・ファイルを生成する必要があります。

OCI CLIをインストールおよび構成するには、OCI CLIのインストールを参照してください。このインストールと構成では、2つのファイルが生成されます。configおよび private keyファイルを見つけます(デフォルトは oci_api_key.pem)。フォルダ・パスはインストール手順で通知されます。

コード-2

function.zipをダウンロードして、コード、構成ファイルおよび秘密キーを確認します。構成および秘密キー・ファイルをOCI CLIファイルに置き換えます。

OCI関数の構築とデプロイ

このステップでは、OCI CLIを使用してOCI関数を作成し、コードをテナンシにデプロイする必要があります。OCIファンクションを作成するには、OCIファンクションQuickStartを参照し、Pythonオプションを検索します。次の情報を使用してファンクションを作成する必要があります:

ファンクションをデプロイしたコンパートメントを覚えておいてください。OCI APIゲートウェイ・デプロイメントを構成するには、この情報が必要になります。

タスク3: APIゲートウェイでのOCIファンクションの構成

APIをデプロイし、OCI Functionsと統合してリクエスト・パラメータ(ヘッダーおよびBODY)を検証し、OCI Observabilityに送信しましょう。OCI APIゲートウェイでバックエンドを公開する方法がわからない場合は、OCI APIゲートウェイ: APIの設定、作成およびデプロイを参照してください。

  1. 「デプロイメントの編集」を開きます。

    config-apigw-1

  2. 「Authentication」セクションをクリックします。

    config-apigw-2

  3. 「単一認証」をクリックし、「認可プロバイダ・ファンクション」を選択します。

    config-apigw-2a

  4. (ファンクションをデプロイした場所)ファンクション・コンパートメントを選択し、fn_apigw_jsonアプリケーションおよびファンクションpython-json-headerを選択します。

    config-apigw-2b

  5. HEADERおよび BODYを取得するように関数引数を構成します。headerheader2という名前の HEADER、および bodyという名前の BODYコンテンツを取得します。

    config-apigw-2c

  6. 「ルート」をクリックし、ヘッダー変換を構成します。この構成はオプションであり、リクエスト・データ(HEADERおよびBODYコンテンツ)またはリクエストで生成されたエラーを含むレスポンス・コンテンツを表示します。ファンクションのデバッグに役立ちます。

    config-apigw-3

タスク4: リクエストのテスト

ノート: APIデプロイメントでは、認可プロバイダ・ファンクションを構成してファンクション引数を設定すると、ファンクション引数のキャッシュがアクティブ化されます。キャッシュされるデータ型を設定できます。問合せパラメータまたはヘッダーのキャッシュは構成できますが、本文コンテンツには構成できません。

APIリクエストをテストできます。本文の配列に1つの項目のみを使用してテストします。

curl --location 'https://xxxxxxxxxxxxxxxxxxxx.apigateway.us-ashburn-1.oci.customer-oci.com/path_index/path' \
    --header 'Content-Type: text/plain' \
    --header 'header: header' \
    --header 'header2: header2' \
    --header 'header3: header3' \
    --data '{"data": {"clientID": "xxxxxxxxxxxxxxxxxxx", "secretID": "xxxxxxxxxxxxxxxxxxx", "jList":[{"added_by":"Ani","description":"example description.","start_date":"2014-10-10","mark":255,"id":975}]}}' -i

header3は送信されましたが、OCI APIゲートウェイでファンクション引数として構成されていないため、ログに表示されました。BODY JSON配列には1つの項目しかないため、有効な認可リクエストです。

テスト-1

配列とテストに、もう1つの項目を入れてみましょう。

curl --location 'https://xxxxxxxxxxxxxxxxxxxx.apigateway.us-ashburn-1.oci.customer-oci.com/path_index/path' \
--header 'Content-Type: text/plain' \
--header 'header: header' \
--header 'header2: header2' \
--header 'header3: header3' \
--data '{"data": {"clientID": "xxxxxxxxxxxxxxxxxxx", "secretID": "xxxxxxxxxxxxxxxxxxx", "jList":[{"added_by":"Ani","description":"example description.","start_date":"2014-10-10","mark":255,"id":975}, {"added_by":"Ani","description":"example description.","start_date":"2014-10-10","mark":255,"id":975}]}}' -i

テスト2

確認

その他の学習リソース

docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントは、Oracle Help Centerを参照してください。