チュートリアル: トリガーとして Azure Queue Storage を使う Python 関数
このチュートリアルでは、次のタスクを実行して、トリガーとしてストレージ キューを使う Python 関数の構成方法を説明します。
- Visual Studio Code を使って Python 関数プロジェクトを作成します。
- Visual Studio Code を使ってその関数をローカルで実行します。
- Azure CLI を使ってサービス コネクタで Azure 関数とストレージ キューとの接続を作成します。
- Visual Studio を使ってその関数をデプロイします。
このチュートリアルでの関数プロジェクト コンポーネントの概要:
プロジェクト コンポーネント | 選択/ソリューション |
---|---|
ソース サービス | Azure 関数 |
対象サービス | Azure Storage キュー |
関数バインド | トリガーとしてのストレージ キュー |
ローカルでのプロジェクトの認証方法 | Connection String |
クラウドでの関数の認証方法 | Connection String |
警告
Microsoft では、使用可能な最も安全な認証フローを使用することをお勧めします。 この手順で説明されている認証フローでは、アプリケーションで非常に高い信頼度が要求されるため、他のフローには存在しないリスクが伴います。 このフローは、マネージド ID など、より安全なフローが実行可能ではない場合にのみ使用してください。
前提条件
- サポートされているプラットフォームのいずれかに Visual Studio Code をインストールします。
- Azure CLI Azure Cloud Shell 内で使用するか、それをローカルにインストールしてください。
- Azure Storage アカウントとストレージ キュー。 Azure Storage アカウントがない場合は、それを作成してください。
- このガイドは、「Azure Functions 開発者ガイド」で示されている基本概念と、Functions でのサービスへの接続方法を理解していることが前提となっています。
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 Storage キューをトリガーとして使用する Python 関数プロジェクトが作成されました。 ローカル プロジェクトは、local.settings.json
ファイルに保存されている接続文字列を使って Azure Storage に接続します。 これで、その関数の __init__.py
ファイル内の main
関数で、function.json
ファイルで定義されている関数バインドによって接続文字列を使えるようになりました。
関数をローカルで実行する
関数をローカルで実行しトリガーを確認するには、このチュートリアルに従ってください。
- ストレージへの接続を求めるメッセージが表示されたら、Azure 関数リソースの作成時に選んだストレージ アカウントを選びます。 これは Azure 関数のランタイムに使う値であり、トリガーに使うストレージ アカウントと必ずしも同じではありません。
- ローカルで関数を開始するには、
<kbd>
F5</kbd>
キーを押すか、左側のアクティビティ バーにある [実行とデバッグ] アイコンを選びます。 - トリガーが適切に機能することを確認するには、関数をローカルで実行したままにして、Azure portal で [ストレージ キュー] ペインを開き、[メッセージの追加] を選択してテスト メッセージを入力します。 Visual Studio Code ターミナルで、その関数がトリガーされキュー項目として処理されていることが示されます。
サービス コネクタを使って接続を作成する
前回の手順では、ローカルで関数プロジェクトを確認しました。 次は、クラウドへのデプロイ後にその関数をストレージ キューでトリガーできるように、クラウドでの Azure 関数と Azure ストレージ キューとの接続を構成する方法を説明します。
- ローカル プロジェクトで
function.json
ファイルを開き、bindings
でconnection
プロパティの値をAZURE_STORAGEQUEUE_CONNECTIONSTRING
に変更します。 - 次の 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 にデプロイし、ストレージ キュー トリガーが機能することを確認できるようになりました。
- この Azure Functions チュートリアル に従って関数を Azure にデプロイします。
- 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
で失敗する)、その関数のアプリ設定を確認してください。
リソースをクリーンアップする
このプロジェクトを引き続き使う予定がない場合は、前に作成した関数アプリ リソースを削除してください。
次のステップ
サービス コネクタの概念と、それを使って Azure Functions をサービスに接続する方法について詳しくは、以下の記事をご覧ください。