演習 - API Management で関数アプリから新しい API を作成する
Azure Functions を単一の API の一部としてユーザーに提示するには、それらを Azure API Management に追加します。
あなたのオンライン ストア会社では、開発者がマイクロサービスとして複数の Azure 関数を作成しました。 各関数には、ストアの機能のごく一部が実装されています。 あなたは、これらの関数を 1 つの API にまとめたいと考えています。
この演習では、新しい API Management インスタンスを作成し、そこに製品詳細関数を追加します。
関数の作成
次の手順で、Azure 関数アプリを Azure API Management に追加します。 後で、同じ API Management インスタンスに 2 つ目の関数アプリを追加して、複数の関数から 1 つのサーバーレス API を作成します。 まず、スクリプトを使用して関数を作成しましょう。
関数プロジェクトを複製するには、右側の Azure Cloud Shell で次のコマンドを実行します。
git clone https://github.com/MicrosoftDocs/mslearn-apim-and-functions.git ~/OnlineStoreFuncs
Cloud Shell で次のコマンドを実行して、この演習に必要な Azure リソースを設定します。
cd ~/OnlineStoreFuncs bash setup.sh
setup.sh
スクリプトで、このモジュールに対してアクティブにしたサンドボックス リソース グループに 2 つの関数アプリを作成します。 次の図に示すように、各アプリは 1 つの関数 (OrderDetails
とProductDetails
) をホストしています。 また、このスクリプトでは、関数のストレージ アカウントも設定します。 両方の関数は、azurewebsites.net ドメイン内の URL を持っています。 関数名は、一意になるように乱数を含んでいます。 スクリプトの完了には数分かかります。
ProductDetails 関数をテストする
次は ProductDetails 関数をテストして、API Management に追加する前に、その動作を確認してみましょう。
サンドボックスのアクティブ化に使ったのと同じアカウントを使って、Azure portal にサインインします。
Azure portal のメニューまたは [ホーム] ページで、[すべてのリソース] を選択します。 [すべてのリソース] ペインが表示されます。
名前が ProductFunction で始まる関数アプリを選択します。 [Function App] (関数アプリ) ペインが表示され、[概要] タブが選択されています。
関数アプリの関数の一覧から、[ProductDetails] を選択します。 ProductDetails 関数ペインが表示されます。
ProductDetails のメニューで、[Developer] の下にある [コードとテスト] を選択します。 ProductDetails 関数の [コードとテスト] ペインが表示され、
function.json
ファイルの内容を確認できます。コマンド バーの [テストと実行] を選択します。 HTTP 要求をテストするための入出力ペインが表示されます。
[入力] タブの [HTTP メソッド] フィールド ドロップダウン リストで、[GET] を選択します。
[クエリ] で [パラメーターの追加] を選択します
[名前] フィールドに「id」と入力し、[値] フィールドに「3」と入力して、[実行] を選択します。
要求を接続するためのログ ペインが表示されます。 [出力] タブには、HTTP 応答コード (200 OK) とデータベース内の項目 3 の内容が表示されます。
必要に応じて、ID 値 1 と 2 を入力して関数をテストすることもできます。
[閉じる] を選択して [コードとテスト] の [入力] および [出力] タブを閉じます。
ProductDetails の [コードとテスト] ペインのコマンド バーで、[関数の URL の取得] を選択します。 URL のサブドメインが関数アプリの名前であり、その後に azurewebsites.net ドメインが続くことに注意してください。
Note
この URL を使用して、ブラウザーで関数をテストできます。 URL には入力が必要です。クエリ文字列 &id=1
を追加して製品コレクション内の最初の項目に関する詳細を要求します。
Azure API Management を使用して関数アプリを API として公開する
関数アプリをデプロイしてテストした後は、他のアプリやサービスから呼び出しができるように、Azure API Management を使用して API としてエクスポートしましょう。
リソース メニューで [すべてのリソース] を選択します。 [すべてのリソース] ペインが表示されます。
リソースの一覧を種類別に並べ替えます。 OrderFunction アプリと ProductFunction アプリがあることに注目してください。
ProductFunction 関数アプリを選択します。
関数アプリのメニューで、[API] カテゴリまでスクロールし、[API Management] を選択します。 ProductFunction 関数アプリの [API Management] ペインが表示されます。
[API Management] フィールドで、[新規作成] を選択します。 [API Management ゲートウェイのインストール] ペインが表示されます。
各設定に対して次の値を入力します。
設定 値 サブスクリプション コンシェルジェ サブスクリプション リソース グループ [サンドボックス リソース グループ名] リージョン 従量課金プランをサポートする場所を選びます: (US) 米国西部、米国中北部、西ヨーロッパ、北ヨーロッパ、東南アジア、オーストラリア東部 リソース名 OnlineStore 組織名 OnlineStore 管理者のメール アドレス 電子メール アドレスを入力します。 Pricing tier 従量課金 (99.95% SLA) [次へ: 監視] を選択し、[Application Insights] オプションをオフにします。
[確認および作成] を選択します。 検証が完了したら、[作成] を選択して、リンクされた API Management インスタンスを作成します。 エクスポートが完了するまで数分かかります。
API Management インスタンスがデプロイされたら、[API のリンク] を選択します。
ProductDetails 関数が強調表示された状態で、API Management サービスの [Azure Functions のインポート] ペインが表示されます。
[選択] を選択して続行します。 [関数アプリから作成する] ダイアログ ボックスが表示されます。
[API URL サフィックス] の値を「products」に変更し、[作成] を選択します。 Azure で、ProductDetails 関数の API が作成されます。 関数アプリの [API Management] ペインに [デザイン] タブが表示されます。
この演習は、API をすべて Azure 関数アプリ サービス内から定義できることを示しています。
OnlineStore 製品エンドポイントをテストする
これで、作成した API Management インスタンスに、ProductDetails
API が完成しました。 Azure で API Management ツールを使用して、API をテストしてみましょう。
関数アプリの [API Management] ペインで、[テスト] タブを選択します。API で使用可能な操作が、左の列に表示されます。
[GET ProductDetails](ProductDetails の取得) を選択します。 [ProductDetails Console](ProductDetails コンソール) ペインが表示されます。
[クエリ パラメーター] で [パラメーターの追加] を選択します。
[名前] フィールドに「id」と入力し、[値] フィールドに「1」と入力したら、[送信] を選択して GET 要求を生成します。
コンソールの HTTP 応答 セクションには、メッセージ と トレース の 2 つのタブがあります。 [メッセージ] タブには、HTTP 応答が表示されます。 応答の最後に製品の詳細が JSON 形式で表示されます。 [HTTP 要求] セクションまで上にスクロールし、要求の形式を確認します。 要求は azure-api.net ドメイン内の宛先に送信されました。 この場所は、関数アプリがホストされている azurewebsites.net ドメインとは異なります。 この API は、id=2 や id=3 などの他のクエリ パラメーターを使用してテストできます。