演習 - API Management で関数アプリから新しい API を作成する

完了

Azure Functions を単一の API の一部としてユーザーに提示するには、それらを Azure API Management に追加します。

あなたのオンライン ストア会社では、開発者がマイクロサービスとして複数の Azure 関数を作成しました。 各関数には、ストアの機能のごく一部が実装されています。 あなたは、これらの関数を 1 つの API にまとめたいと考えています。

この演習では、新しい API Management インスタンスを作成し、そこに製品詳細関数を追加します。

関数の作成

次の手順で、Azure 関数アプリを Azure API Management に追加します。 後で、同じ API Management インスタンスに 2 つ目の関数アプリを追加して、複数の関数から 1 つのサーバーレス API を作成します。 まず、スクリプトを使用して関数を作成しましょう。

  1. 関数プロジェクトを複製するには、右側の Azure Cloud Shell で次のコマンドを実行します。

    git clone https://github.com/MicrosoftDocs/mslearn-apim-and-functions.git ~/OnlineStoreFuncs
    
  2. Cloud Shell で次のコマンドを実行して、この演習に必要な Azure リソースを設定します。

    cd ~/OnlineStoreFuncs
    bash setup.sh
    

    setup.sh スクリプトで、このモジュールに対してアクティブにしたサンドボックス リソース グループに 2 つの関数アプリを作成します。 次の図に示すように、各アプリは 1 つの関数 (OrderDetailsProductDetails) をホストしています。 また、このスクリプトでは、関数のストレージ アカウントも設定します。 両方の関数は、azurewebsites.net ドメイン内の URL を持っています。 関数名は、一意になるように乱数を含んでいます。 スクリプトの完了には数分かかります。

    setup.sh スクリプトの結果と、関数がアプリケーション全体の設計にどのように関係するかを示す図。

ProductDetails 関数をテストする

次は ProductDetails 関数をテストして、API Management に追加する前に、その動作を確認してみましょう。

  1. サンドボックスのアクティブ化に使ったのと同じアカウントを使って、Azure portal にサインインします。

  2. Azure portal のメニューまたは [ホーム] ページで、[すべてのリソース] を選択します。 [すべてのリソース] ペインが表示されます。

  3. 名前が ProductFunction で始まる関数アプリを選択します。 [Function App] (関数アプリ) ペインが表示され、[概要] タブが選択されています。

    ProductDetails 関数を開くメニュー選択のスクリーンショット。

  4. 関数アプリの関数の一覧から、[ProductDetails] を選択します。 ProductDetails 関数ペインが表示されます。

  5. ProductDetails のメニューで、[Developer] の下にある [コードとテスト] を選択します。 ProductDetails 関数の [コードとテスト] ペインが表示され、function.json ファイルの内容を確認できます。

    ProductDetails の [コードとテスト] ペインのスクリーンショット。コマンド バーで [テストと実行] が選択されています。

  6. コマンド バーの [テストと実行] を選択します。 HTTP 要求をテストするための入出力ペインが表示されます。

  7. [入力] タブの [HTTP メソッド] フィールド ドロップダウン リストで、[GET] を選択します。

  8. [クエリ][パラメーターの追加] を選択します

  9. [名前] フィールドに「id」と入力し、[値] フィールドに「3」と入力して、[実行] を選択します。

    [テストと実行] の入力ペインのスクリーンショット。HTTP GET メソッドの入力パラメーターが強調表示されています。

  10. 要求を接続するためのログ ペインが表示されます。 [出力] タブには、HTTP 応答コード (200 OK) とデータベース内の項目 3 の内容が表示されます。

    [テストと実行] のペインの出力を表すスクリーンショット。GET メソッドを実行した結果としての応答を示しています。

    必要に応じて、ID 値 1 と 2 を入力して関数をテストすることもできます。

  11. [閉じる] を選択して [コードとテスト] の [入力] および [出力] タブを閉じます。

  12. ProductDetails の [コードとテスト] ペインのコマンド バーで、[関数の URL の取得] を選択します。 URL のサブドメインが関数アプリの名前であり、その後に azurewebsites.net ドメインが続くことに注意してください。

Note

この URL を使用して、ブラウザーで関数をテストできます。 URL には入力が必要です。クエリ文字列 &id=1 を追加して製品コレクション内の最初の項目に関する詳細を要求します。

Azure API Management を使用して関数アプリを API として公開する

関数アプリをデプロイしてテストした後は、他のアプリやサービスから呼び出しができるように、Azure API Management を使用して API としてエクスポートしましょう。

  1. リソース メニューで [すべてのリソース] を選択します。 [すべてのリソース] ペインが表示されます。

  2. リソースの一覧を種類別に並べ替えます。 OrderFunction アプリと ProductFunction アプリがあることに注目してください。

  3. ProductFunction 関数アプリを選択します。

  4. 関数アプリのメニューで、[API] カテゴリまでスクロールし、[API Management] を選択します。 ProductFunction 関数アプリの [API Management] ペインが表示されます。

    API Management アプリ サービスを開くメニューの選択を示すスクリーンショット。

  5. [API Management] フィールドで、[新規作成] を選択します。 [API Management ゲートウェイのインストール] ペインが表示されます。

    API Management サービスの設定を示すスクリーンショット。

  6. 各設定に対して次の値を入力します。

    設定
    サブスクリプション コンシェルジェ サブスクリプション
    リソース グループ [サンドボックス リソース グループ名]
    リージョン 従量課金プランをサポートする場所を選びます: (US) 米国西部米国中北部西ヨーロッパ北ヨーロッパ東南アジアオーストラリア東部
    リソース名 OnlineStore
    組織名 OnlineStore
    管理者のメール アドレス 電子メール アドレスを入力します。
    Pricing tier 従量課金 (99.95% SLA)
  7. [次へ: 監視] を選択し、[Application Insights] オプションをオフにします。

  8. [確認および作成] を選択します。 検証が完了したら、[作成] を選択して、リンクされた API Management インスタンスを作成します。 エクスポートが完了するまで数分かかります。

  9. API Management インスタンスがデプロイされたら、[API のリンク] を選択します。

    API Management のスクリーンショット。[API のリンク] ボタンが強調表示されています。

    ProductDetails 関数が強調表示された状態で、API Management サービスの [Azure Functions のインポート] ペインが表示されます。

    API Management サービスの [Azure Functions のインポート] ペインを示すスクリーンショット。

  10. [選択] を選択して続行します。 [関数アプリから作成する] ダイアログ ボックスが表示されます。

    [関数アプリから作成する] ダイアログ ボックスを示すスクリーンショット。

  11. [API URL サフィックス] の値を「products」に変更し、[作成] を選択します。 Azure で、ProductDetails 関数の API が作成されます。 関数アプリの [API Management] ペインに [デザイン] タブが表示されます。

この演習は、API をすべて Azure 関数アプリ サービス内から定義できることを示しています。

OnlineStore 製品エンドポイントをテストする

これで、作成した API Management インスタンスに、ProductDetails API が完成しました。 Azure で API Management ツールを使用して、API をテストしてみましょう。

  1. 関数アプリの [API Management] ペインで、[テスト] タブを選択します。API で使用可能な操作が、左の列に表示されます。

  2. [GET ProductDetails](ProductDetails の取得) を選択します。 [ProductDetails Console](ProductDetails コンソール) ペインが表示されます。

  3. [クエリ パラメーター][パラメーターの追加] を選択します。

    ProductDetails コンソールを示すスクリーンショット。GET HTTP 要求のクエリ パラメーター値が強調表示されています。

  4. [名前] フィールドに「id」と入力し、[値] フィールドに「1」と入力したら、[送信] を選択して GET 要求を生成します。

    コンソールの HTTP 応答 セクションには、メッセージ と トレース の 2 つのタブがあります。 [メッセージ] タブには、HTTP 応答が表示されます。 応答の最後に製品の詳細が JSON 形式で表示されます。 [HTTP 要求] セクションまで上にスクロールし、要求の形式を確認します。 要求は azure-api.net ドメイン内の宛先に送信されました。 この場所は、関数アプリがホストされている azurewebsites.net ドメインとは異なります。 この API は、id=2id=3 などの他のクエリ パラメーターを使用してテストできます。

    **HTTP 要求**と **HTTP 応答**メッセージを示すスクリーンショット。