Azure Functionsでは、すべての関数は、好みの言語や開発環境に関係なく、いくつかの主要な技術的概念とコンポーネントを共有します。 この記事は言語固有のものです。 記事の上部で好みの言語を選んでください。
この記事は、すでにAzure Functionsの概要を読んでいることを前提としています。
すぐに開始する場合は、Visual Studio、Visual Studio Code、または command プロンプト を使用してクイック スタート チュートリアルを完了できます。
すぐに開始する場合は、Maven (コマンド ライン)、Eclipse を使用してクイック スタート チュートリアルを完了できます。 IntelliJ IDEA, Gradle, Quarkus, Spring Cloud, または Visual Studio Code。
すぐに使用する場合は、Visual Studio Code または command プロンプト からクイック スタート チュートリアルを完了できます。
すぐに使用する場合は、Visual Studio Code または command プロンプト からクイック スタート チュートリアルを完了できます。
すぐに使用する場合は、Visual Studio Code または command プロンプト からクイック スタート チュートリアルを完了できます。
すぐに使用する場合は、Visual Studio Code または command プロンプト からクイック スタート チュートリアルを完了できます。
コード プロジェクト
Azure Functionsの中核となるのは、functions と呼ばれる 1 つ以上のコード実行ユニットを実装する言語固有のコード プロジェクトです。 関数は、イベント、HTTP 要求への応答、またはスケジュールに基づいて、Azure クラウドで実行されるメソッドです。 Azure Functions コード プロジェクトは、Azureで実行されているときに、プロジェクト内の個々の関数を整理、配置、およびまとめて管理するためのメカニズムと考えてください。 詳しくは、「関数を整理する」をご覧ください。
コード プロジェクトをレイアウトする方法と、プロジェクトのどのメソッドが関数であるかを示す方法は、プロジェクトの開発言語によって異なります。 言語固有の詳細なガイダンスについては、C# 開発者ガイドを参照してください。
コード プロジェクトをレイアウトする方法と、プロジェクトのどのメソッドが関数であるかを示す方法は、プロジェクトの開発言語によって異なります。 言語固有のガイダンスについては、Java 開発者ガイドを参照してください。
コード プロジェクトをレイアウトする方法と、プロジェクトのどのメソッドが関数であるかを示す方法は、プロジェクトの開発言語によって異なります。 言語固有のガイダンスについては、Node.js 開発者ガイドを参照してください。
コード プロジェクトをレイアウトする方法と、プロジェクトのどのメソッドが関数であるかを示す方法は、プロジェクトの開発言語によって異なります。 言語固有のガイダンスについては、PowerShell 開発者ガイドを参照してください。
コード プロジェクトをレイアウトする方法と、プロジェクトのどのメソッドが関数であるかを示す方法は、プロジェクトの開発言語によって異なります。 言語固有のガイダンスについては、Python 開発者ガイドを参照してください。
コード プロジェクトをレイアウトする方法と、プロジェクトのどのメソッドが関数であるかを示す方法は、プロジェクトの開発言語によって異なります。 言語ごとのガイダンスについては、 Go開発者ガイドをご覧ください。
すべての関数には、関数の開始方法を定義し、関数に入力を提供できるトリガーが必要です。 関数では、必要に応じて、入力バインドと出力バインドを定義できます。 これらのバインドにより、他のサービスへの接続が簡単になり、クライアント SDK を使う必要はありません。 詳細については、「Azure Functions トリガーとバインドの概念を参照してください。
Azure Functionsでは、新しいコード プロジェクトを簡単に作成し、プロジェクトに関数を追加できるようにする、一連の言語固有のプロジェクトおよび関数テンプレートが提供されます。 Azure Functions開発をサポートする任意のツールを使用して、これらのテンプレートを使用して新しいアプリと関数を生成できます。
開発ツール
以下のツールは、Azure Functionsのローカルかつ統合された開発・公開体験を、あなたの希望する言語で提供します:
Azure Functions Core Tools (コマンド プロンプト)
これらのツールは Azure Functions Core Tools と統合されているため、Functions ランタイムを使用してローカル コンピューターで実行およびデバッグできます。 詳細については、「ローカルでのAzure Functionsのコード化とテストを参照してください。
また、Azureポータルにはエディターがあり、コードや function.json 定義ファイルを直接ポータル内で更新できます。 このエディタは小さな変更や概念実証関数の作成にのみ使用してください。 可能な限り、機能の発展は必ずローカルで行いましょう。 詳細については、「Azure ポータルで最初の関数を作成するを参照してください。
ポータル編集は、function.json ファイルを使う Node.js バージョン 3 でのみサポートされています。
デプロイ
コード プロジェクトをAzureに発行するときは、基本的にプロジェクトを既存の関数アプリ リソースにデプロイします。 関数アプリは、関数を実行するAzureで実行コンテキストを提供します。 そのため、それが関数のデプロイと管理の単位になります。 Azure リソースの観点から見ると、関数アプリは、web アプリと同等のサイト リソース (Microsoft.Web/sites) Azure App Serviceに相当します。
ファンクションアプリは、管理、デプロイ、スケールを合わせた1つ以上の個別の機能で構成されています。 関数アプリ内のすべての関数が、同じ価格プラン、デプロイ方法、ランタイム バージョンを共有します。 詳しくは、関数アプリの管理方法に関する記事をご覧ください。
関数アプリやその他の必要なリソースがAzureにまだ存在しない場合は、プロジェクトファイルをデプロイする前にこれらのリソースを作成する必要があります。 これらのリソースは、次のいずれかの方法で作成できます。
Visual Studio Code プログラムで、
Azure CLI 、Azure PowerShell 、ARM テンプレート 、またはBicep ファイル
Functions では、ツールベースの発行に加えて、既存の関数アプリにソース コードをデプロイするための他のテクノロジもサポートされています。 詳細については、「deployment technologies in Azure Functions」を参照してください。
サービスへの接続
クラウドベースのコンピューティング サービスの主要な要件は、他のクラウド サービスとの間でデータの読み取りとデータの書き込みを行うことです。 Functions にはさまざまなバインドが用意されており、クライアント SDK を使わなくても簡単にサービスに接続できます。
Functionsが提供するバインディング拡張を使う場合でも、クライアントSDKを直接扱う場合でも、接続データは安全に保存し、コードには含めません。
デフォルトのホストストレージ
Azure Functions では、Function App インスタンスを作成するときに Azure ストレージ アカウントが必要になります。 この デフォルトのストレージアカウント は、Functionsホストや一部のバインディング拡張によって内部的に使用されています。
デフォルトのストレージアカウントへの接続を安全に定義する方法については、「 接続の定義」をご覧ください。
バインド
Functions は、多くのAzure サービスと、拡張機能として実装されているいくつかのサードパーティ サービスのバインドを提供します。 詳しくは、サポートされているバインドの詳細な一覧をご覧ください。
バインド拡張機能は入力と出力の両方をサポートでき、多くのトリガーも入力バインドとして機能します。 バインドを使うと、Functions ホストがデータ アクセスを自動的に処理できるようにサービスへの接続を構成できます。 詳細については、「Azure Functions トリガーとバインドの概念を参照してください。
バインドからのエラーに関する問題が発生した場合は、Azure Functions バインド エラー コード ドキュメントを参照してください。 リモートサービスへのバインディングで安全に接続を定義する方法については、「 接続の定義」をご覧ください。
ID ベース接続に共通のプロパティ
Azure FunctionsのIdentity-based connectionsは認証にmanaged identitiesを使用します。 デフォルトではシステム割り当てのアイデンティティが使われますが、 credential や clientId プロパティでユーザー割り当てのアイデンティティを指定することも可能です。 アイデンティティベースの接続の設定に関する詳細、必要なアプリ設定やRBAC権限については、「 管理型アイデンティティ接続の定義」を参照してください。
ID ベースの接続によるローカル開発
ローカルで動作する場合、アイデンティティベースの接続はマネージドIDではなく、開発者のアイデンティティ(Azure CLIのログインなど)を使用します。 地域開発中に credential を設定したり物件を clientId したりする必要はありません。 詳細については、「 ID ベースの接続を使用したローカル開発」を参照してください。
クライアント SDK
Functionsは関数コード内でのデータアクセスを簡単にするためのバインディングを提供しますが、プロジェクト内のクライアントSDKを使って特定のサービスに直接アクセスすることもできます。 もし関数が基盤となるSDKの機能を必要とし、バインディング拡張でサポートされていない場合は、クライアントSDKを直接使う必要があるかもしれません。 関数コードはバインディング拡張が使う基盤クライアントにアクセスできません。 関数で使うクライアントインスタンスは独立して作成・管理しなければなりません。
関数コードでクライアントSDKを作成・使用する際には、以下の点を考慮してください。
接続文字列の保存やアクセスには、バインディング拡張と同じプロセスを使います。 詳細は 「接続の定義」をご覧ください。
コンシューマープランでアプリをホストすると、すべてのインスタンスでアウトバウンド接続の総数に制限があります。 この制限は ポートの消耗を避けるために注意が必要です。 詳しくは 「SDK client connectionsの管理」をご覧ください。
- 関数でクライアントSDKインスタンスを作成する際は、クライアントが求める接続情報を Environment variablesから取得してください。
- 関数でクライアントSDKインスタンスを作成する際は、クライアントが求める接続情報を Environment variablesから取得してください。
- 関数でクライアントSDKインスタンスを作成する際は、クライアントが求める接続情報を Environment variablesから取得してください。
- 関数でクライアントSDKインスタンスを作成する際は、クライアントが求める接続情報を Environment variablesから取得してください。
- 関数でクライアントSDKインスタンスを作成する際は、クライアントが求める接続情報を Environment variablesから取得してください。
問題の報告
| 項目 | 説明 | リンク |
|---|---|---|
| ランタイム | スクリプト ホスト、トリガー、バインド、言語のサポート | 問題を解決する |
| テンプレート | 作成テンプレートに関するコードの問題 | 問題を解決する |
オープン ソース リポジトリ
Azure Functionsのコードはオープンソースです。 主要なコンポーネントは以下のGitHubリポジトリで見つけることができます:
関連資料
詳細については、次のリソースを参照してください。