【WSLで実践】Python + Azure Functions超入門 - 90分でゼロからサーバーレスを学ぶハンズオン

前回のエントリーの内容 を他の人も使えるようにハンズオンにしてみました。初めて作ってみたけどどうだろうか🙄

はじめに:PythonによるAzure Functionsクイックスタート (所要時間:約5分)

このハンズオンでは、Azure Functionsというサーバーレスコンピューティングサービスについて学んでいきます。サーバレスとはWikipediaでは以下のように記載されています。

サーバーレス・コンピューティング(Serverless computing)とは、クラウド・プロバイダーがアプリケーションに必要なマシン・リソースの割り当てを動的に管理し、事前に購入されたことに基づく請求ではなく、各アプリケーション要求を満たすために使用される個々のリソース量に基づいた請求を行うようなクラウド・コンピューティングの実行モデルであるサーバーレス・コンピューティング - Wikipedia

このハンズオンを通じて、Azure Functionsの基本的な概念を理解し、Pythonを使ったHTTPトリガー関数を作成、ローカルでテスト、Azureにデプロイして動作を確認するまでを体験し、最終的にはサーバーレスアプリケーションの第一歩を踏み出すことが目標としています。

対象となる方

このカリキュラムは、Azureは初めてだけれども、Pythonの基本的な知識はお持ちの方を対象としています。Azureに関する事前の詳しい知識は不要です。ステップバイステップで作業を行っていきます。

ハンズオン概要

今回は以下の構成を作成するハンズオンになっています。

このハンズオンは、以下の手順で構成されています。各手順のおおよその所要時間も記載しています。 90分程度を想定していますが、分かる方はもっと早く終ると思います。

  1. Azure Functionsの理解 (約10分): サーバーレス、イベント駆動とは何か、その利点について学びます。
  2. 開発環境の準備 (約20分): VS Codeを中心に、必要なツールと拡張機能をセットアップします。
  3. 最初の関数のローカルでの構築と実行 (約30分): Python v2モデルを使い、HTTPトリガー関数を作成し、ローカルでテストします。
  4. トリガーの概要 (約5分): 関数を動かす「きっかけ」と、他のサービスと連携する仕組みを簡単に解説します。
  5. Azureへの関数のデプロイ (約15分): 作成した関数をAzureにデプロイします。
  6. 基本的な監視とログ確認 (約5分): Azure上で関数がどのように動作しているか、ログを確認する方法を学びます。
  7. まとめと次のステップ (約5分): 学習した内容を振り返り、さらに学びを深めるためのリソースを紹介します。

このカリキュラム全体を通して、実践的なハンズオン形式で進めます。特に、近年のドキュメントで推奨されている、よりPythonらしい記述が可能なPython v2プログラミングモデル(デコレータなどを使用するスタイル)と、開発効率を高めるVisual Studio Code (以下、VS Codeと表記) の利用に主眼にしています。

なぜAzure Functionsなのか?

Azure Functionsは、サーバー管理不要のサーバーレスプラットフォームです。使用分のみ課金され、自動スケーリングでトラフィック変動に対応。複数言語対応で、Azure内の他サービスと連携しやすく、イベントドリブンな処理に最適です。更に、Microsoftの強力なクラウドエコシステムと統合されたサーバーレスソリューションでもあります。Microsoft製品との親和性が高く、Enterprise環境でのセキュリティと信頼性が確保されています。既存のAzureサービスとシームレスに連携でき、開発から運用までの一貫したエクスペリエンスを提供してくれる点がメリットといえるでしょう。

手順1: Azure Functionsの理解 (所要時間:約10分)

サーバーレスコンピューティング

サーバーレスとは、文字通りサーバーが存在しないわけではありません。開発者がサーバーのプロビジョニング、スケーリング、メンテナンスといったインフラ管理を意識する必要がない、という概念です。Azure Functionsのようなサーバーレスプラットフォームでは、コードを実行するために必要なコンピューティングリソースは、クラウドプロバイダー(この場合はAzure)が自動的に管理・提供します。開発者はビジネスロジックの実装に集中でき、インフラのことはAzureに任せることができます。

コアコンセプト:イベント駆動アーキテクチャ

Azure Functionsイベント駆動型で動作します。これは、特定のイベントが発生したことをトリガーとして、関数コードが自動的に実行される仕組みを指します。トリガーとなるイベントには、HTTPリクエストの受信データベースへの新しいデータの追加メッセージキューへのメッセージ到着タイマーによる定期的なスケジュール実行など、様々な種類があります。これにより、特定の状況に反応して動作する、応答性の高いアプリケーションを効率的に構築ができます。

主な利点

Azure Functionsを利用する主な利点は以下の通りです。※Azure functionsに限らずサーバレスサービス一般の利点も含まれています。

インフラ管理の削減  … サーバーの運用や管理について心配する必要がなくなります 。
コスト効率  … コードが実行された時間とリソースに対してのみ課金される従量課金モデルが基本であり、無駄なコストを削減できます。
自動スケーリング  … リクエストの量に応じて、Azure側が必要なリソースを自動的に増減させます。手動でのスケーリング設定は不要です。
言語の選択肢  … Pythonだけでなく、C#JavaJavaScriptなど、使い慣れた言語で開発できます。
Azureサービスとの統合  … 他のAzureサービス(データベース、ストレージ、メッセージングサービスなど)と簡単かつ宣言的に連携できます 。

Pythonでの一般的なユースケース

Azure FunctionsPythonを使って様々なシナリオで活用できます。以下にいくつかの例を挙げます。

ユースケース 説明
シンプルなWeb API/RESTエンドポイントの構築 HTTPトリガーを使って、Webアプリケーションや他のサービスから呼び出されるAPIを簡単に作成できます(今回のハンズオンで実践します)。
ファイル処理 Azure Blob Storageにファイルがアップロードされたことをトリガーに、Pythonコードを実行して画像のリサイズやデータ抽出などを行います。
スケジュールされたタスクの実行 タイマートリガーを使って、毎日特定の時間にデータベースのクリーンアップ処理を実行するなど、定期的なバッチ処理を自動化します。
データベース変更への対応 Azure Cosmos DBなどのデータベースでデータが変更されたことをトリガーに、関連する処理(通知の送信など)をPythonで実行します。

これらは一例であり、イベント駆動のアプローチにより多様なアプリケーションを構築できます。

今回のハンズオンでは、最も基本的で理解しやすいHTTPトリガーに焦点を当てて進めますが 、他のトリガーの存在を知っておくことで、将来的な応用の幅が広がります。1.5時間という限られた時間内で確実に成果を得るため、HTTPトリガーのライフサイクル(作成、テスト、デプロイ)を深く理解することに集中したいとおもいます。

開発環境の準備 (所要時間:約20分)

Azure Functionsの開発を始める前に、いくつかのツールを準備する必要があります。ここでは、VS Codeを中心に、Python関数をローカルで開発し、Azureにデプロイするために必要な環境を整えます。

実行環境について

このハンズオンでは、Windows 11上のWSL (Windows Subsystem for Linux) 環境 (Ubuntu 24.04 LTS) での動作を想定して解説しています。ただし、記載されている手順の多くは、Windowsネイティブ環境、macOS、または他のLinuxディストリビューション上でも適用可能です。環境によってツールのインストールコマンドなどが若干異なる場合がありますので、適宜ご自身の環境に合わせて読み替えてください。

前提条件チェックリスト

以下のソフトウェアがインストールされていることを確認してください。

必要条件 詳細
Azureアカウント アクティブなAzureサブスクリプションが必要です。お持ちでない場合は、無料でアカウントを作成できます。
Python Azure FunctionsでサポートされているバージョンのPythonが必要です。Python公式サイトからダウンロード・インストールし、コマンドプロンプトやターミナルで python --version または python3 --version を実行してバージョンを確認してください。
VS Code このハンズオンで使用する主要なコードエディタです。https://code.visualstudio.com/からダウンロード・インストールしてください。

※今回のハンズオンではPythonは3.10ベースとしています。

Visual Studio Code

VS Code拡張機能のインストール

VS Codeの機能を拡張し、Azure Functions開発を効率化するために、以下の拡張機能をインストールします。VS Codeの【左側のアクティビティバー】にある【拡張機能】アイコンをクリックし、各拡張機能名を検索してインストールしてください。

拡張機能 説明
Azure Tools Azure関連の便利な拡張機能がパックになっています。これにはAzure Functions拡張機能も含まれており、インストールが推奨されます。
Azure Functions Azure Functionsプロジェクトの作成、ローカルでの実行・デバッグ、Azureへのデプロイなどをサポートする中心的な拡張機能です。
Python VS CodePythonコードを記述、実行、デバッグするために不可欠な拡張機能です。
Azurite Azure Storageをローカル環境でエミュレートするための拡張機能です。Python v2モデルでは、ローカル開発時にもストレージ接続が必要となるため、この拡張機能のインストールが重要になります。このエミュレータを使用することで、実際のAzure Storageアカウントなしでローカルテストが可能になります。

拡張機能Azure Tools

拡張機能Azure Functions

拡張機能Python

拡張機能Azurite

Azure Functions Core Toolsのインストール

Azure Functions Core Toolsは、Azure Functionsランタイムをローカルマシンで実行し、関数のデバッグを可能にするコマンドラインツールです。VS CodeAzure Functions拡張機能と連携して動作します。

  • インストール方法 VS Codeのコマンドパレット(【Ctrl+Shift+P】)を開き、Azure Functions: Install or Update Azure Functions Core Toolsと入力して実行します。拡張機能が必要なバージョンを指定します。今回はAzure Functions v4を選択します。
  • バージョン確認: インストール後、ターミナルで func --version コマンドを実行して、バージョン4.x以降がインストールされていることを確認できます。

Azure Functions Core Toolsのインストール

バーションの選択

(注意)WSLを使用する場合にはエラーが発生します

これはインストール時に使用するnpmコマンドWSL環境でグローバルなnpmパッケージ-gオプションで指定されるもの)をインストールしようとした際に、書き込み権限がないディレクトリにインストールしようとしたために発生しています。もし、エラーが発生した場合には、WSLのターミナルから直接 sudo を使ってAzure Functions Core Toolsを手動でインストールします。

WSLターミナルを開きます。 (例: スタートメニューからUbuntuを検索して起動するか、VS Code内で【Ctrl+@】を押してターミナルを開き(WSLのシェルが選択されていることを確認します)。そして、以下のコマンドを実行します**(パスワード入力を求められる場合には入力してください)。

$ sudo npm install -g azure-functions-core-tools@4 --unsafe-perm=true

インストールが完了したら、念のため以下のコマンドでバージョンを確認できます。バージョン4.xが表示されれば成功です。

$ func --version

必要な開発ツールのまとめ

以下の表は、このハンズオンを進める上で必要な主要なツールとその目的、インストール方法をまとめたものです。

ツール名 目的 インストール方法
Azure アカウント Azureリソース(関数アプリなど)を作成・管理するために必要 Azure 無料アカウント作成
Python 開発言語(WSLでは作業不要) Python公式サイト
VS Code コード編集、デバッグAzure連携を行うための統合開発環境 (IDE) https://code.visualstudio.com/
Azure Tools (VS Code拡張) Azure Functions拡張を含む、便利なAzure関連拡張機能のパック VS Code拡張機能ビューでAzure Toolsを検索してインストール
Azure Functions (VS Code拡張) VS CodeでのAzure Functions開発(作成、デバッグ、デプロイ)を支援 VS Code拡張機能ビューでAzure Functionsを検索してインストール (Azure Toolsに含まれる)
Python (VS Code拡張) VS CodeでのPython開発(コード補完、デバッグなど)を支援 VS Code拡張機能ビューでPythonを検索してインストール
Azurite (VS Code拡張) ローカルでのAzure Storageエミュレーション(Python v2モデルのローカル実行に必要) VS Code拡張機能ビューでAzuriteを検索してインストール
Azure Functions Core Tools ローカル環境でAzure Functionsランタイムを実行・デバッグするためのツール VS CodeコマンドパレットでAzure Functions: Install or Update Azure Functions Core Toolsを実行

Python v2モデルのローカル開発では、関数自体が直接ストレージを利用しない場合でも、内部的にAzure Storageへの接続を要求します。そのため、Azurite拡張機能のインストールと、後述するローカル実行前の起動が必要になっています。この設定を行わないと、ローカルでの関数実行時にエラーが発生する可能性があるので、注意が必要です。

最初の関数のローカルでの構築と実行 (所要時間:約30分)

開発環境が整ったので、いよいよ最初のAzure Functionsプロジェクトを作成し、ローカルで実行・テストしてみましょう。ここでは、VS Codeを使用してPython v2モデルHTTPトリガー関数を作成します。

ローカルプロジェクトの作成

以下の手順で、Azure Functionsプロジェクトをローカルに作成します 。

  1. VS Codeでコマンドパレット【Ctrl+Shift+P】を開きます 。
  2. Azure Functions: Create New Project...と入力し、表示されたコマンドを実行します。
  3. プロジェクトファイルを保存するディレクトリを選択します。※新しい空のフォルダを作成して選択することを推奨します。
  4. プロンプトに従って、以下の情報を入力します。
    Select a language … Python を選択します。
    Select a Python interpreter to create a virtual environment … 使用するPythonインタープリターのバージョンを選択します。選択すると、プロジェクトフォルダ内に.venvという仮想環境が作成されます。
    • Select a template for your project's first function … HTTP triggerを選択します。
    • Provide a function name … HttpExampleと入力します(これが関数名になります)。
    • Select an authorization level … ANONYMOUSを選択します。これにより、テスト時にAPIキーなしで関数を呼び出せるようになります。

Azure Functions: Create New Project...と入力

プロジェクトファイルを保存するディレクトリを選択

Select a language(言語を選択)

Select a Python interpreter to create a virtual environment(Pythonの実行環境のバージョンを選択)

Select a template for your project's first function(トリガーの種類を選択)

Provide a function name(関数名を入力)

Select an authorization level(認証レベルの選択)

VS Codeはこれらの情報に基づいて、HTTPトリガー関数を含んだAzure Functionsプロジェクトを生成します。

プロジェクト構造の確認

プロジェクトが作成されると主要なファイルやフォルダ生成されます。

$ tree -a functions -L 1

functions
├── .funcignore
├── .gitignore
├── .venv
├── function_app.py
├── host.json
├── local.settings.json
└── requirements.txt

2 directories, 6 files

ファイル名 説明
function_app.py 実際のPython関数コードが含まれています。Python v2モデルでは、トリガーやバインディングはデコレーター (@app.routeなど) を使って定義されます。
requirements.txt プロジェクトに必要なPythonパッケージ(azure-functionsなど)がリストされています。
local.settings.json ローカル開発時の設定(接続文字列など)を保持します。非常に重要: このファイルを開き、"AzureWebJobsStorage": "UseDevelopmentStorage=true" という設定が存在することを確認してください。これは、ローカル実行時にAzuriteストレージエミュレーターを使用するようFunctionsランタイムに指示する設定です。
.venv/ このプロジェクト専用のPython仮想環境フォルダです。
host.json Azure Functionsホストランタイムのグローバルな構成設定ファイルです。基本的なシナリオでは、通常はデフォルトのままで問題ありません。
.vscode/ VS Code固有の設定ファイル(デバッグ構成launch.jsonなど)が格納されます。

function_app.pyの内容確認を行う

生成されたfunction_app.pyを開き、基本的なHTTPトリガー関数のコードを確認しましょう。

import logging  
import azure.functions as func

# ANONYMOUS認証レベルでFunction Appオブジェクトを初期化  
app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)

# HTTPトリガーを定義。ルートは "/api/HttpExample" になる  
@app.route(route="HttpExample")  
def HttpExample(req: func.HttpRequest) -> func.HttpResponse:  
    logging.info('Python HTTP trigger function processed a request.')

    # クエリ文字列から 'name' パラメータを取得  
    name = req.params.get('name')  
    if not name:  
        try:  
            # リクエストボディ (JSON) から 'name' を取得  
            req_body = req.get_json()  
        except ValueError:  
            pass  
        else:  
            name = req_body.get('name')

    if name:  
        # 'name' があれば、挨拶メッセージを含むHTTPレスポンスを返す  
        return func.HttpResponse(f"Hello, {name}. This HTTP triggered function executed successfully.")  
    else:  
        # 'name' がなければ、エラーメッセージを含むHTTPレスポンスを返す  
        return func.HttpResponse(  
             "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",  
             status_code=200  
        )

以下解説

  • import azure.functions as func: Azure Functionsライブラリをインポートします。
  • app = func.FunctionApp(...): Python v2モデルの中心となるFunctionAppオブジェクトを初期化します。http_auth_levelでデフォルトの認証レベルを設定しています。
  • @app.route(route="HttpExample"): このデコレーターが、HttpExample関数をHTTPリクエストによってトリガーされるように設定します。routeパラメータでURLのパスを指定します(通常、api/プレフィックスが付きます)。
  • def HttpExample(req: func.HttpRequest) -> func.HttpResponse:: 関数本体です。req引数でHTTPリクエスト情報を受け取り、func.HttpResponseオブジェクトでHTTPレスポンスを返します。型ヒントにより、コードの可読性と保守性が向上します。
  • req.params.get('name'): URLのクエリ文字列(例: ?name=Azure)から値を取得します。
  • req.get_json(): リクエストボディがJSON形式の場合、それをパースしてPythonの辞書として取得します。
  • func.HttpResponse(...): クライアントに返すHTTPレスポンスを作成します。本文とステータスコードなどを指定できます。

pythonの仮想環境の有効化

生成されたディレクトリにある、Pythonの仮想環境を有効化します。

$ source .venv/bin/activate
$ pip install \-r requirements.txt

Azuriteエミュレーターの起動

関数をローカルで実行する前に、Azuriteストレージエミュレーターを起動する必要があります。

  1. VS Codeでコマンドパレット【Ctrl+Shift+P】を開きます。
  2. Azurite: Startと入力し、実行します。
  3. VS Codeのウィンドウ下部にあるステータスバーや通知として、Azuriteの各サービス(Blob, Queue, Table)が起動し、ポート番号が表示されていることを確認します。

Azurite: Startを入力

通知

ローカルでの実行とデバッグ

関数をローカルで動かしてみましょう。

  1. 左側のアクティビティバーにある【実行とデバッグ】アイコンをクリックし、【Attach to Python Functions】ボタンをクリック。
  2. VS Code下部にあるターミナルパネルにAzure Functions Core Toolsが起動し、プロジェクト内の関数(HttpExample)を認識し、ローカルでアクセス可能なURL(例: HttpExample: http://localhost:7071/api/HttpExample)が表示されます。

【実行とデバッグ】アイコンをクリック

Attach to Python Functionsボタンをクリックして、Azure Functions Core Toolsの起動を確認

ローカル関数のテスト

ローカルで実行中の関数をテストするには、いくつかの方法があります。

  • 方法1: VS Codeから実行:
    1. 左側のアクティビティバーにある【Azureアイコン】をクリックします。
    2. ワークスペース (ローカル)セクションを展開し、現在のプロジェクト -> Functions -> HttpExampleを見つけます。
    3. HttpExampleを右クリックし、【Execute Function Now...】を選択します 。
    4. リクエストボディを入力するプロンプトが表示されるので、{ "name": "ローカルテスト" }のようなJSONを入力してEnterキーを押します。
    5. 実行結果(HTTPレスポンス)がVS Codeの通知として表示され、ターミナルにもログが出力されます。

ローカルプロジェクトから実行対象の関数を選択し、ペイロードを入力

実行通知

  • 方法2: Webブラウザまたはcurlを使用:
    1. ターミナルに表示されたURL(例: http://localhost:7071/api/HttpExample)をコピーします。
    2. Webブラウザのアドレスバーに貼り付け、末尾にクエリパラメータを追加します(例: http://localhost:7071/api/HttpExample?name=ブラウザテスト)。
    3. Enterキーを押すと、ブラウザに関数の応答が表示されます。
    4. または、ターミナルでcurlコマンドを使用することもできます: curl "http://localhost:7071/api/HttpExample?name=curlテスト"。

ローカルテスト用のURL

ブラウザでのアクセス

実行時のログ

ローカル関数の停止

テストが終わったら、ローカルで実行中の関数を停止します。

  • ターミナルパネルにフォーカスがある状態で【Ctrl + C】キーを押すか、VS Code上部のデバッグツールバーにある切断ボタンをクリックします。

このように、VS CodeAzure Functions Core ToolsAzuriteエミュレーターを組み合わせることで、Azureにデプロイする前に関数をローカル環境で迅速に開発、実行、デバッグできます。手軽に実行・デバッグを開始できるため、コードの変更から動作確認までのサイクルを非常に短くでき、開発効率が大幅に向上します。これは、クラウドにデプロイしてからテストするよりもはるかに高速で、コストもかかりません。

トリガーの概要 (所要時間:約5分)

前のモジュールで、HTTPリクエストをトリガーとして関数を実行しました。ここでは、Azure Functionsの重要な概念であるトリガーについて、もう少し詳しく見ていきましょう。

復習:トリガーとは?

トリガーは、関数コードの実行を開始させる「きっかけ」となるイベントです。今回の例では、特定のURLへのHTTPリクエストがトリガーでした。これは@app.route()デコレーターで定義されていました。他にも、タイマー(スケジュール実行)、キューへのメッセージ追加、データベースの変更など、様々な種類のトリガーがあります。

Azureへの関数のデプロイ (所要時間:約15分)

ローカルでの開発とテストが完了したので、次はこの関数をAzureにデプロイして、世界中からアクセスできるようにします。VS CodeAzure Functions拡張機能を使えば、この操作も簡単に行えます。

前提条件:Azureへのサインイン

まず、VS CodeからAzureアカウントにサインインしていることを確認します。その後以下の手順を行います。

  1. VS Codeの左側のアクティビティバーにある【Azureアイコン】をクリックします。
  2. リソースセクションに自分のサブスクリプションが表示されていれば、サインイン済みです。
  3. サインインしていない場合は、Azure にサインイン...ボタンをクリックし、ブラウザの指示に従ってAzureアカウントでログインします。

例えば、以下のように表示されていればログインができています。

Azureリソースの作成

作成した関数コードを実行するためには、Azure上にいくつかのリソースが必要です。これには、関数コードの実行環境である「関数アプリ」、関数のメタデータや状態を保持するAzure Storageアカウント、関数アプリのホスティングプラン(実行モデル)を定義するApp Serviceプラン、関数の実行状況を監視するためのApplication Insightsが含まれます。

VS Codeのコマンドパレットを使って、これらのリソースをまとめて作成しましょう。

  1. コマンドパレット【Ctrl+Shift+P】を開きます。
  2. Azure Functions: Create Function App in Azure...と入力し、実行します(必要に応じてAdvancedが付いたコマンドを選択すると、より詳細な設定も可能です)。
  3. プロンプトに従って、以下の情報を入力します。
    • Select a subscription 使用するAzureサブスクリプションを選択します。
    • (1/5)Enter a globally unique name for the new function app …  関数アプリのグローバルに一意な名前を入力します(例えば、my-python-function-app- + あなたのイニシャル + 日付)。これはURLの一部になります。
    • (2/5)Select a location for new resources …  関数アプリをデプロイするAzureリージョンを選択します(例: Japan East や Japan Westなど、利用者に近いリージョンを選択するとパフォーマンスが向上します)。
    • (3/5)Select a runtime stack …  開発で使用したPythonのバージョンを選択します(Python 3.10など)。
    • (4/5)Select an instance memory size …  メモリサイズを選択します(処理の内容によりますが、今回は2024で問題ありません)。
    • (5/5)Enter the maximum instance count …  最大インスタンス数を入力します。(今回は100を入力しました。)
  4. リソースの作成が開始されます。VS Code下部のAzure: Activity Logパネルで進行状況を確認できます。完了まで数分かかることがあります。

Azure Functions: Create Function App in Azure...

Select subscription

(1/5)Enter a globally unique name for the new function app

(2/5)Select a location for new resources

(3/5)Select a runtime stack

(4/5)Select an instance memory size

(5/5)Enter the maximum instance count

リソースの作成完了

リソース作成時のエラー

※Azureにリソース作成を行う場合、初回時のみ以下のようなエラーメッセージが表示されることがあります。

エラーメッセージ

サブスクリプションは、名前空間 'Microsoft.ManagedIdentity' を使用するように登録されていません。サブスクリプションの登録方法については、https://aka.ms/rps-not-found をご覧ください。

エラーの原因

使用するAzureサブスクリプションで、関数アプリの作成に必要な特定のAzure機能(この場合はManaged Identity)を利用するための登録が行われていないことが原因となります。

これをエラーを解決するには、Azure Portalで以下の作業を手動で登録を行います。

  1. WebブラウザAzure Portalにアクセスし、サインインします。
  2. 画面上部の検索バーに「サブスクリプション」と入力し、表示された「サブスクリプション」サービスを選択します。
  3. ハンズオンで使用しているサブスクリプションの名前をクリックします。
  4. 左側のメニューから「設定」セクションにある「リソースプロバイダー」を選択します。
  5. リソースプロバイダーの一覧が表示されるので、右上のフィルターボックスに Microsoft.ManagedIdentity と入力して検索します。
  6. Microsoft.ManagedIdentity プロバイダーが表示されます。状態が「NotRegistered」(未登録)になっている場合は、Microsoft.ManagedIdentity の行を選択し、上部にある「登録」ボタンをクリックします。
  7. 登録処理が開始されます。状態が「Registered」(登録済み)に変わるまで数分かかることがあります。必要に応じて、上部の「最新の情報に更新」ボタンをクリックして状態を確認してください。

コードのデプロイ

Azureに必要なリソースが作成されたら、ローカルのプロジェクトコードをデプロイします。

  1. コマンドパレット【Ctrl+Shift+P】を開きます。
  2. Azure Functions: Deploy to Function App...と入力し、実行します。
  3. (1/2)Select a subscription … 使用するAzureサブスクリプションを選択します。
  4. (2/2)Select a function app … 先ほど作成したAzure上の関数アプリ名を選択します。
  5. デブロイ確認ダイアログが表示されたら、【Deploy】ボタンをクリックします。
  6. デプロイが開始されます。VS Codeの出力ウィンドウ(出力タブのAzure Functionsを選択)で詳細な進行状況を確認できます。デプロイが完了すると通知が表示されます。

Azure Functions: Deploy to Function App...

(1/2)おSelect a subscription

(2/2)Select a function app

デブロイ確認ダイアログの表示

【Deploy】ボタンのクリック

デプロイ結果の確認

デプロイされた関数のテスト

デプロイが成功したら、Azure上で関数が動作しているか確認しましょう。

  1. VS Codeの左側のアクティビティバーの【Azureアイコン】をクリックします。
  2. 自分のサブスクリプション-> 作成した関数アプリ->Functionsを展開します。
  3. デプロイされたHttpExample関数が表示されているはずです。
  4. HttpExampleを右クリックし、Copy Function Urlを選択します。これで、公開されている関数のURLがクリップボードにコピーされます。
  5. Webブラウザを開き、コピーしたURLをアドレスバーに貼り付けて末尾にクエリパラメータを追加します(例: ?name=Azureデプロイ成功)。
  6. 【Enterキー】を押してアクセスし、ローカルでテストした時と同様の応答が返ってくることを確認します。

VS CodeAzure Functions拡張機能は、Azureリソースの作成からコードのデプロイまでの一連のプロセスを大幅に簡略化しています。数回のクリックと入力だけで、スムーズに関数をクラウドに展開できます。

まとめと次のステップ (所要時間:約5分)

セッションの振り返り

この1.5時間のハンズオンセッションでは、以下の内容を学び、実践しました。

  • Azure Functionsの基本的な概念(サーバーレス、イベント駆動)とその利点を理解しました。
  • VS Codeに必要なツールと拡張機能をインストールし、Pythonでの開発環境を準備しました。
  • Python v2モデルVS Codeを使用して、HTTPトリガー関数を作成し、ローカルで実行・テストしました。
  • 作成した関数をAzureにデプロイし、公開されたURLからアクセスできることを確認しました。

おめでとうございます!

これで、あなたは自分自身の手で最初のサーバーレス関数をAzureにデプロイすることに成功しました!これで、Azure Functionsとサーバーレスコンピューティングの世界への素晴らしい第一歩を踏み出せました。

おわりに

サーバーレス技術は、アプリケーション開発の方法を大きく変える可能性を秘めています。今回のハンズオンが、Azure Functionsを使った開発の面白さや便利さを感じるきっかけとなれば幸いです。ぜひ、様々なトリガーや他のAzureサービスとの連携を試しながら、サーバーレスの世界を楽しんでください。