Visual Studio CodeにAzure Functionsの開発環境を構築してデプロイ


Visual Studio CodeでAzure Functionsの開発環境をセットアップしました。

関連するツールのインストール

Azure Functions for Visual Studio Codeのインストール

https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurefunctions

Azure Functions Core Toolsのインストール

https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-run-local

Windows

Core Tools v3.x をダウンロードしてインストールします。

macOS

% brew tap azure/functions
% brew install azure-functions-core-tools@3
% brew link --overwrite azure-functions-core-tools@3

関数の作成

Visual Studio CodeのAzure FunctionsのタブからCreate New Projectのボタンをクリックして、空のフォルダを指定してプロジェクトを作成します。プロジェクトの作成に関する以下のような質問が表示されるので、それらに回答するとプロジェクトが作成されます。

  • 利用するプログラム言語をC#やPythonなどから選択
    • Pythonでは利用するPythonの仮想環境やバージョンを指定
  • 作成される最初の関数のテンプレートを指定
  • 作成される最初の関数の名前を指定
  • 作成される最初の関数の承認レベルをFunction Anonymous Adminから選択
  • プロジェクトを現在のウィンドウで開くか新しいウィンドウで開くかワークスペースに追加するかを選択

Pythonで最初の関数のテンプレートにHTTP triggerを指定した際は以下のようなサンプルコードが作成されます。

import logging

import azure.functions as func


def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    name = req.params.get('name')
    if not name:
        try:
            req_body = req.get_json()
        except ValueError:
            pass
        else:
            name = req_body.get('name')

    if name:
        return func.HttpResponse(f"Hello, {name}. This HTTP triggered function executed successfully.")
    else:
        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
        )

関数の動作確認

以下のコマンドを実行して、ローカルで関数を実行します。

> func start

Visual Studio Codeで関数を右クリックしてExecute Function Nowをクリックすると関数が実行されます。

関数のデプロイ

Visual Studio CodeのAzure FunctionsのタブからDeploy to Function Appのボタンをクリックするとデプロイに関する以下のような質問が表示されるので、それらに回答するとAzureにデプロイされます。

  • 利用するサブスクリプション
  • Azureの関数アプリの選択または新規作成
    • ここでは関数アプリ新規作成でAdvancedを選択した場合の質問をリストしています
  • グローバルな関数アプリの名前
  • ランタイムスタックの選択
  • 利用するリソースグループの選択
  • リソースのロケーションの選択
  • ホスティングプランをConsumption Pemium App Service Planから選択
  • ストレージアカウントの選択または新規作成
  • Application Insightsの選択または新規作成

回答が完了するとAzureへのデプロイが開始され、しばらくするとAzure Portalの画面にも反映されて、Azure Functionsを実行することが可能になりました。