演習 - Azure に関数をデプロイする
これで、関数を作成して Azure にデプロイする方法を学習しました。次は、理論を実践します。
この演習では、Azure Functions へのデプロイ用に関数を構成する方法について学習します。 その後、Maven を使って関数をデプロイし、クラウドで関数をテストします。
デプロイ用に関数プロジェクトを構成する
Azure にデプロイする前に、関数アプリケーションに対して行う必要がある変更がいくつかあります。 以下では、デプロイ用にプロジェクトを更新する手順を見ていきます。
サンドボックス リソース グループのリージョンを決定します。
サンドボックスをアクティブにしたときに自動的に作成されたリソース グループの名前を使って、リソース グループが配置されているリージョンを取得します。
az group show --name "<rgn>[sandbox resource group name]</rgn>" | jq -r '.location'
以降の手順で使うため、表示されたリージョンの名前をコピーしておきます。
pom.xml ファイルを編集して、設定を更新します。
Azure Cloud Shell で、アプリケーションのルート フォルダーに移動します。 以下に例を示します。
cd ~/event-reporting
Cloud Shell コード エディターで pom.xml を開きます。
code pom.xml
次の成果物 ID を検索します。
<artifactId>azure-functions-maven-plugin</artifactId>
次の
<configuration>
セクションで、<resourceGroup>
要素を検索し、リソース グループの名前で更新します。 以下に例を示します。<resourceGroup><rgn>[sandbox resource group name]</rgn></resourceGroup>
<region>
要素を検索して、リソース グループが配置されているリージョンの名前で更新します。 以下に例を示します。<region>westus</region>
Ctrl + S キーを押して pom.xml ファイルを保存してから、Ctrl + Q キーを押してコード エディターを閉じます。
Azure 関数をデプロイする
これで関数がデプロイ用に構成されたので、次にそれを Azure Functions にデプロイします。
Azure Cloud Shell で、アプリケーションのルート フォルダーに移動します。 以下に例を示します。
cd ~/event-reporting
次のコマンドを実行して、Azure Functions にそれをビルドしてデプロイします。
mvn clean package azure-functions:deploy
Maven でデプロイの実行状態が表示されます。 次に例を示します。
[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Azure Java Functions 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- azure-functions-maven-plugin:1.4.1:deploy (default-cli) @ event-reporting --- [INFO] Auth Type : AZURE_CLI [INFO] Subscription : Concierge Subscription(12345678-1234-1234-1234-123456789abc) [INFO] The specified function app does not exist. Creating a new function app... [INFO] Set function worker runtime to java. [INFO] Successfully created the function app: event-reporting-20240125192009873. [INFO] Trying to deploy the function app... [INFO] Trying to deploy artifact to event-reporting-20240125192009873... [INFO] Successfully deployed the artifact to https://event-reporting-20240125192009873.azurewebsites.net [INFO] Deployment done, you may access your resource through event-reporting-20240125192009873.azurewebsites.net [INFO] Syncing triggers and fetching function information [INFO] Querying triggers... [INFO] HTTP Trigger Urls: [INFO] HttpExample : https://event-reporting-20240125192009873.azurewebsites.net/api/httpexample [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 01:01 min [INFO] Finished at: 2024-01-25T20:12:04Z [INFO] ------------------------------------------------------------------------
ポータルを使用した Azure 関数 URL の取得
前のユニットで完了した演習で、Web ブラウザーで関数をテストするには URL を作成する必要があったことを思い出してください。 ただし、Azure portal を使うと、Azure 関数の URL を取得する簡単な方法があります。 そのためには、次のステップに従います。
サンドボックスのアクティブ化に使ったのと同じアカウントを使って、Azure portal にサインインします。
左側のメニューから [すべてのリソース] を選択します。
リソースの一覧から関数アプリを選びます。この演習での関数アプリの名前は、event-reporting で始まるものです。 次に例を示します。
event-reporting-20240125192009873
この
function app
名は、この演習で前に見たデプロイ応答で報告されたものと同じです。関数アプリの [概要] ページの [関数] タブで、HttpExample 関数を選びます。 これにより、関数の [概要] ページが表示されます。
関数ページの上部にある [関数の URL の取得] を選びます。 関数の完全に組み立てられた URL をコピーします。 次に例を示します。
https://event-reporting-20240125192009873.azurewebsites.net/api/HttpExample
この URL は、この演習の次のセクションで使います。
ポータルで Azure 関数をテストする
関数を Azure にデプロイしたので、Web ブラウザーで関数をテストするために必要なのは、前の演習で行ったように、URL の末尾にクエリ文字列を追加することだけです。
関数の API の URL を作成します。
この演習内の前のセクション「ポータルを使用した Azure 関数 URL の取得」でコピーした URL を取得します。次に例を示します。
https://event-reporting-20240125192009873.azurewebsites.net/api/HttpExample
API URL に名前を渡すクエリ文字列を追加します。次に例を示します。
https://event-reporting-20240125192009873.azurewebsites.net/api/HttpExample?name=Bob
次の手順で使用するために、この完全に構築された URL をコピーします。
Web ブラウザーで新しいタブを開き、前の手順で作成した URL をアドレス フィールドに貼り付けます。
URL を要求するように Web ブラウザーに指示すると、クエリ文字列で渡した名前に合わせてカスタマイズされたプレーンテキスト メッセージが Web ブラウザーに返されます。 次に例を示します。
Hello, Bob
お疲れさまでした。Azure での関数のデプロイとテストが無事に済みました。