Share via


チュートリアル: トリガーとして Azure Queue Storage を使う Python 関数

このチュートリアルでは、次のタスクを実行して、トリガーとしてストレージ キューを使う Python 関数の構成方法を説明します。

  • Visual Studio Code を使って Python 関数プロジェクトを作成します。
  • Visual Studio Code を使ってその関数をローカルで実行します。
  • Azure CLI を使ってサービス コネクタで Azure 関数とストレージ キューとの接続を作成します。
  • Visual Studio を使ってその関数をデプロイします。

このチュートリアルでの関数プロジェクト コンポーネントの概要:

プロジェクト コンポーネント 選択/ソリューション
ソース サービス Azure 関数
対象サービス Azure Storage キュー
関数バインド トリガーとしてのストレージ キュー
ローカルでのプロジェクトの認証方法 Connection String
クラウドでの関数の認証方法 Connection String

前提条件

Python 関数プロジェクトを作成する

ローカルの Azure Functions プロジェクトを作成するチュートリアルに従い、プロンプトで次の情報を指定します:

Prompt [選択]
言語を選択する Python を選択します。 (v1 プログラミング言語モデル)
仮想環境を作成する Python インタープリターを選択してください 任意の Python インタープリターを選択します。 オプションが表示されない場合は、Python バイナリの完全パスを入力してください。
Select a template for your project's first function (プロジェクトの最初の関数のテンプレートを選択してください) Azure Queue Storage trigger を選択します。
Provide a function name (関数名を指定してください) QueueStorageTriggerFunc」と入力します。
Select setting from "local.settings.json" ("local.settings.json" から設定を選択する) Create new local app settings を選びます。これにより、ストレージ アカウントを選ぶことと、トリガーの役割を果たすキューの名前を指定することができます。

Azure ストレージ キューをトリガーとして使う Python 関数プロジェクトが作成されました。 ローカル プロジェクトは、local.settings.json ファイルに保存されている接続文字列を使って Azure Storage に接続します。 これで、その関数の __init__.py ファイル内の main 関数で、function.json ファイルで定義されている関数バインドによって接続文字列を使えるようになりました。

関数をローカルで実行する

関数をローカルで実行しトリガーを確認するには、このチュートリアルに従ってください。

  1. ストレージへの接続を求めるメッセージが表示されたら、Azure 関数リソースの作成時に選んだストレージ アカウントを選びます。 これは Azure 関数のランタイムに使う値であり、トリガーに使うストレージ アカウントと必ずしも同じではありません。
  2. ローカルで関数を開始するには、<kbd>F5 </kbd> キーを押すか、左側のアクティビティ バーにある [実行とデバッグ] アイコンを選びます。
  3. トリガーが正常に動作することを確認するには、関数をローカルで実行したまま、Azure portal で [ストレージ キュー] ブレードを開き、[メッセージの追加] を選び、テスト メッセージを指定します。 Visual Studio Code ターミナルで、その関数がトリガーされキュー項目として処理されていることが示されます。

サービス コネクタを使って接続を作成する

前回の手順では、ローカルで関数プロジェクトを確認しました。 次は、クラウドへのデプロイ後にその関数をストレージ キューでトリガーできるように、クラウドでの Azure 関数と Azure ストレージ キューとの接続を構成する方法を説明します。

  1. ローカル プロジェクトで function.json ファイルを開き、bindingsconnection プロパティの値を AZURE_STORAGEQUEUE_CONNECTIONSTRING に変更します。
  2. 次の Azure CLI コマンドを実行して Azure 関数と Azure ストレージ アカウントとの接続を作成します。
az functionapp connection create storage-queue --source-id "<your-function-resource-id>" --target-id "<your-storage-queue-resource-id>" --secret
  • --source-id の書式: /subscriptions/{subscription}/resourceG roups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
  • --target-id の書式: /subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/queueServices/default

この手順では、関数のアプリ設定で AZURE_STORAGEQUEUE_CONNECTIONSTRING 変数を構成する、サービス コネクタ リソースを作成します。 関数バインド ランタイムでそれを使ってストレージに接続して、関数でストレージ キューからのトリガーを受け入れることができるようにします。 詳しくは、「Service Connector を使用して Azure Functions をサービスに接続する方法」をご覧ください。

関数を Azure にデプロイする

これで、関数を Azure にデプロイし、ストレージ キュー トリガーが機能することを確認できるようになりました。

  1. この Azure Functions チュートリアル に従って関数を Azure にデプロイします。
  2. Azure portal で [ストレージ キュー] ブレードを開き、[メッセージの追加] を選び、テスト メッセージを指定します。 関数のログで、その関数がトリガーされキュー項目として処理されていることが示されます。

トラブルシューティング

No such host is known (<acount-name>.queue.core.windows.net:443) など、ストレージ ホストに関連するエラーがある場合は、Azure Storage への接続に使う接続文字列にそのキュー エンドポイントが含まれているかどうかを確認してください。 含まれていない場合は、Azure portal で Azure Storage に移動し、Access keys ブレードから接続文字列をコピーし、その値を置き換えてください。

プロジェクトをローカルで開始するときにこのエラーが発生した場合は、local.settings.json ファイルを確認してください。

クラウドに関数をデプロイするときにこのエラーが発生した場合は (この場合、関数のデプロイは通常は Syncing triggers で失敗する)、その関数のアプリ設定を確認してください。

リソースをクリーンアップする

このプロジェクトを引き続き使う予定がない場合は、前に作成した関数アプリ リソースを削除してください。

  1. Azure portal で、その関数アプリ リソースを開き、[削除] を選びます。
  2. そのアプリ名を入力し、[削除] を選んで確定します。

次のステップ

サービス コネクタの概念と、それを使って Azure Functions をサービスに接続する方法について詳しくは、以下の記事をご覧ください。