演習 - Core Tools を使用して関数を Azure に発行する

完了

この演習では、Azure で関数アプリを作成し、プロジェクトを発行します。

関数アプリを作成する

重要

このユニットの手順は、ユニット 3 で完了した作業に依存します。 このモジュール用のサンドボックスがアクティブになっている必要があります。 サンドボックスを使うことで、Azure と Azure CLI に一時的に無料でアクセスできます。

Azure Cloud Shell で、既にご自分のアカウントにサインインして構成してある必要があります。 サンドボックスがアクティブになっていない場合は、必要なアクセス、リソース、出力が失われています。 前に戻り、ユニット 3 を完了してください。

Core Tools を使用してコードを関数アプリに発行する前に、Cloud Shell から Azure CLI を使用して、Azure でアプリを作成する必要があります。

Azure で関数アプリを作成するには、Azure Cloud Shell で次のコマンドを実行します。

RESOURCEGROUP="<rgn>[sandbox resource group]</rgn>"
STORAGEACCT=learnstorage$(openssl rand -hex 5)
FUNCTIONAPP=learnfunctions$(openssl rand -hex 5)

az storage account create \
  --resource-group "$RESOURCEGROUP" \
  --name "$STORAGEACCT" \
  --kind StorageV2 \
  --location centralus

az functionapp create \
  --resource-group "$RESOURCEGROUP" \
  --name "$FUNCTIONAPP" \
  --storage-account "$STORAGEACCT" \
  --runtime node \
  --consumption-plan-location centralus \
  --functions-version 4

これらのコマンドの動作は次のとおりです。

  • 上部の最初の 3 行では、以降のコマンドで繰り返し使用する値を持つシェル変数が作成されます。

    • リソース グループについては、サンドボックスによって作成されたグループを指定します。 これは現在のサンドボックスに基づいて、既に正しい値になっているはずです。
    • ストレージ アカウントと関数アプリの名前には $(openssl rand -hex 5) が含まれています。これにより、ランダムな 5 文字の文字列が生成され、名前がグローバルに一意であるという要件と、他のサービスの名前付けに関する要件を確実に満たすことができます。
  • az storage account create により、関数アプリが使用する Azure ストレージ アカウントが作成されます。 ストレージ アカウントは、関数アプリを作成する前に作成する必要がある個別の Azure リソースです。

  • az functionapp create により、関数アプリが作成されます。 新しいアプリでは、従量課金ホスティング プランでサーバーレスで実行される node (JavaScript) ランタイムが使用されます。

Note

また、az functionapp create コマンドは、関数アプリで実行を監視するための Application Insights インスタンスを自動的に作成しようとします。 サンドボックスでは現在、ワークスペースベースの Application Insights リソースをホストできないため、関数は機能しますが、実行ログは Application Insights に送信されません。

Azure に発行する

関数アプリを Azure で作成したので、そのアプリに対して、Core Tools を使用してプロジェクトを発行できます。

Cloud Shell で次のコマンドを実行して発行します。 発行する前に、cd を実行して、関数プロジェクト フォルダーが現在のフォルダーであることを確認します。

cd ~/loan-wizard
func azure functionapp publish "$FUNCTIONAPP" --force

Note

このコマンドで、あなたのアプリが見つからないというエラーが表示される場合は、2 分待ってからもう一度やり直してください。 新しい関数アプリを作成した後、Core Tools で検出できるようになるまでに数秒かかります。

または、コマンドに --force を追加して、関数アプリのバージョンの不一致を更新しています。

Core Tools の関数をローカルで一時的にホストした前の演習とは異なり、関数は Web 上で公開されています。 このチュートリアルのサンドボックスの有効期限が切れるまで、引き続きグローバルに利用できます。 HTTP エンドポイントは anonymous 承認レベルで定義されているため、Web 上のすべてのユーザーがアクセスできます。

関数を実行する

関数が Azure に発行され、どこからでも呼び出すことができるようになりました。 GET 要求に応答する HTTP トリガー関数として、どのブラウザーからでも実行できます。

  1. 次のコマンドを実行し、要求 URL を取得します。

    func azure functionapp list-functions "$FUNCTIONAPP" --show-keys
    
  2. URL を出力から新しいブラウザー タブに貼り付けます。適切なクエリ文字列パラメーターを指定せずに関数をローカルで実行した場合と同じ出力が表示されます。 anonymous 承認レベルを使用する場合、出力にはキーが含まれません。

  3. URL の末尾に ?principal=5000&rate=.035&term=36 を追加し、Enter を選択します。 code パラメーターは必ず保持します (存在する場合)。 返される結果は、想定どおり、6300.000000000001 です。