演習 - エンドポイントをテストし、ログを確認する
このガイド付きプロジェクトは、次の演習で構成されています。
- 関数アプリを作成する
- HTTP トリガー関数をデプロイする
- エンドポイントをテストし、ログを確認する
この演習では、関数エンドポイントをテストし、監視を有効にし、アクセス キーを使用して関数をセキュリティで保護し、呼び出しログを確認します。 ここでは、サーバーレス関数のデプロイ、セキュリティ保護、監視のライフサイクル全体について説明します。
この演習には、次のタスクが含まれています。
- ブラウザーで HTTP エンドポイントをテストする
- ポータルで関数を確認する
- Application Insights を有効にする
- 関数へのアクセスを制限する
- 制限付きアクセスをテストする
- 呼び出しログを確認する
結果: エンドポイントが正常にテストされ、実行ログがポータルで確認されました。
タスク 1: ブラウザーで HTTP エンドポイントをテストする
関数エンドポイントを呼び出して、正しく応答することを確認します。 これにより、サーバーレス関数がパブリック インターネットからデプロイされ、実行され、到達可能であることが検証されます。
- 新しいブラウザー タブを開きます。
- 前の演習のデプロイ出力からコピーした Invoke URL を アドレス バーに貼り付け、 Enter キーを押します。
- ブラウザーに Hello, world! (または同様のあいさつ) が表示されたことを確認します。 これは、HTTP トリガー テンプレートからの既定の応答です。
- シークレット またはプライベート ブラウザー ウィンドウを開き、同じ URL を貼り付けて Enter キーを押します。
- サインインを必要とせずに関数が応答することを確認します。 これは、関数の作成時に承認レベルを Anonymous に設定しているために機能します。
注
検証手順: パブリック エンドポイントがクエリ パラメーターの有無にかかわらず正しく応答し、資格情報なしでシークレット ウィンドウで動作することを確認します。
タスク 2: ポータルで関数を確認する
デプロイされた関数が、先ほど作成した関数アプリと共に Azure portal に表示されていることを確認します。
- Azure portal のポータル検索バーで、 Function App を検索し、[ 関数アプリ] を選択します。
- 前の演習で作成した Function App を選択します。
- [概要] ページの [関数] で、トリガーの種類が HTTP の GetStatus が一覧に表示されたことを確認します。
注
検証手順: ポータルの関数アプリの関数一覧に GetStatus 関数が表示されたことを確認します。
タスク 3: Application Insights を有効にする
関数アプリを作成したときに、[監視] タブをスキップし、既定値をそのまま使用しました。 呼び出しを追跡する場合は、Application Insights を有効にする必要があります。 これは Azure の一般的なパターンです。リソースを再作成することなく、後で監視を追加できます。
- 関数の一覧から GetStatus を選択します。
- 上部のメニューで[ 呼び出し]を選択します。
- このページには、Application Insights が構成されていないというメッセージが表示されます。 [ Application Insights の構成 ] ボタンを選択します。
- Application Insights の構成ページ で、[Application Insights を有効にする] を選択します。
- [適用] を選択する前に、ページに表示されている Log Analytics ワークスペースの名前と場所を書き留めておきます。 ワークスペース名と場所の最後の 4 文字を書き留めます。クリーンアップ中にこの情報が必要です。
- を選択してを適用します。 サイトが再起動されることを示す [ 監視設定の適用 ] ダイアログが表示されたら、[ はい] を選択します。 構成が完了するまで待ちます。
- ポータル ページを更新して ( F5 キーを押して)、ポータルで新しい Application Insights 構成を取得します。
注
Azure では、 DefaultResourceGroup-{region} という名前のリソース グループに Log Analytics ワークスペースが作成されます。 これはプロジェクト リソース グループとは別であり、個別にクリーンアップする必要があります。
注
検証手順: Application Insights が有効になっていることを確認します。 [呼び出し] ページに構成プロンプトが表示されなくなりました。
タスク 4: 関数へのアクセスを制限する
監視によってデータがキャプチャされたので、関数にキーが必要になるように承認レベルを変更します。 これは、サーバーレス エンドポイントをセキュリティで保護する方法を示しています。
Azure portal で、上部のツール バーにある Cloud Shell アイコンを選択して、Cloud Shell をもう一度開きます。
プロジェクト フォルダーに戻ります。
cd func-gp-endpoint次のコマンドを実行して、承認レベルを 匿名 から 関数に変更します。
sed -i "s/authLevel: 'anonymous'/authLevel: 'function'/" src/functions/GetStatus.js次を実行して変更を確認します。
grep authLevel src/functions/GetStatus.js出力に
authLevel: 'function'が表示されていることを確認します。関数を再デプロイします。
FUNC_APP_NAME=$(az functionapp list --resource-group rg-gp-functions-endpoint --query "[0].name" -o tsv) func azure functionapp publish $FUNC_APP_NAMEデプロイが完了するまで待ちます。
注
検証手順: デプロイの出力に、正常に発行された GetStatus 関数が表示されることを確認します。
タスク 5: 制限付きアクセスをテストする
関数が認証されていないすべての要求を拒否することを確認してから、関数キーを使用してアクセスを回復します。
- 以前に関数 URL をテストしたブラウザー タブに戻り、ページを更新します。
- 401 未承認の応答を受け取ったかどうかを確認します。 承認レベルを 匿名 から 関数に変更したため、関数ではすべての要求にキーが必要になりました。
- Azure portal に戻ります。 ポータルの検索バーで関数 アプリ を検索し、[ 関数アプリ] を選択します。
- 関数アプリを選択し、関数の一覧から GetStatus を選択します。
- 上部のメニューで、[ ファンクション キー] を選択します。
- 既定のキー値をコピーします。
- 関数 URL を含むブラウザー タブに戻ります。 ?code= の後に URL の末尾にコピーしたキーを追加し、Enter キーを押します。
- 関数が Hello, world! で再び応答するようになったのを確認します。 URL のキーは、関数を呼び出す権限があることを証明します。
注
検証手順: 関数がキーなしで 401 を返し、キーが追加された状態で成功したことを確認します。
タスク 6: 呼び出しログを確認する
Application Insights で関数呼び出しのレコードを確認します。 前のタスクで費やした時間は、Application Insights でデータを処理する時間を与えました。
- ポータルの検索バーで関数 アプリ を検索し、[ 関数アプリ] を選択します。
- 関数アプリを選択し、関数の一覧から GetStatus を選択します。
- 上部のメニューで[ 呼び出し]を選択します。
- タスク 1 からの匿名呼び出しとタスク 5 からのキー認証呼び出しの両方を含む、成功した呼び出し (状態 200) がログに表示されていることを確認します。
- 呼び出しエントリを選択して、状態コード、期間、タイムスタンプなどの詳細を表示します。
注
401 未承認の応答が関数の [呼び出し] タブに表示されない場合があります。Azure は、関数を呼び出す前にホスト レベルで承認されていない要求を拒否するため、関数の実行として記録されません。
注
検証手順: 呼び出しログに成功した要求が表示されていることを確認し、Application Insights が関数アクティビティをキャプチャすることを示します。
ヒント
呼び出しログがすぐに表示されない場合は、最大 5 分待ってから [ 最新の情報に更新] を選択します。 Application Insights では、新しいデータの処理に時間がかかる場合があります。