お使いの Function App の管理

Azure Functions では、 Function App に個々の関数の実行コンテキストが用意されています。 Function App の動作は、特定の Function App によってホストされるすべての関数に適用されます。 Function App 内のすべての関数は、同じ言語である必要があります。

Function App 内の個々の関数は、共に配置され、共にスケーリングされます。 同じ Function App 内のすべての関数は、 Function App がスケーリングされるときに、インスタンスごとに同じリソースを使用します。

接続文字列、環境変数、およびその他のアプリケーション設定は、 Function App ごとに別に定義されます。 Function App 間で共有する必要があるすべてのデータは、外部の永続化されたストアに格納する必要があります。

Azure portal での作業を開始する

Note

Azure portal での関数コードの編集には制限があるため、関数をローカルで開発し、コード プロジェクトを Azure の関数アプリに発行する必要があります。 詳細については、「Azure portal での開発の制限事項」をご覧ください。

関数アプリでアプリの設定を表示するには、次の手順に従います。

  1. Azure アカウントを使用して Azure Portal にサインインします。 関数アプリを検索し、選択します。

  2. 関数アプリの左側のペインで、[設定] を展開し、[環境変数] を選択してから、[アプリ設定] タブを選択します。

    関数アプリで [アプリ設定] ページを選択する方法を示すスクリーンショット。

アプリケーション設定を操作する

Azure Functions で使用される定義済みのアプリ設定に加えて、関数コードの必要に応じて任意の数のアプリ設定を作成できます。 詳細については、「Azure Functions のアプリケーション設定のリファレンス」をご覧ください。

これらの設定は暗号化されて格納されます。 詳細については、アプリ設定のセキュリティに関するページを参照してください。

アプリ設定は、Azure portal から、また、Azure CLIAzure PowerShell を使用して管理できます。 アプリ設定は、Visual Studio Code から、および Visual Studio から管理することもできます。

アプリ設定を表示するには、「Azure portal での作業開始」を参照してください。

[アプリ設定] タブでは、関数アプリに使用される設定を管理します。

  1. アプリ設定の値を表示するには、[値の表示] を選択します。

  2. 設定を追加するには、[+ 追加] を選択し、新しいキーと値のペアの [名前][値] を入力します。

    関数アプリの [アプリ設定] ページを示すスクリーンショット。

アプリケーションの設定

関数アプリの設定値は、コードの中で環境変数として読み込むこともできます。 詳細については、次の言語固有のリファレンス記事の「環境変数」のセクションを参照してください。

ローカルで関数アプリを開発する場合、これらの値を、local.settings.json プロジェクト ファイルにローカルのコピーとして保持する必要があります。 詳細については、「ローカル設定ファイル」を参照してください。

FTPS デプロイ設定

Azure Functions では、FTPS を使用した関数アプリへのプロジェクト コードのデプロイがサポートされています。 このデプロイ方法ではトリガーを同期する必要があるため、推奨されていません。 プロジェクト ファイルを安全に転送するには、常に FTP ではなく FTPS を使用します。

FTPS デプロイに必要な資格情報を取得するには、次のいずれかの方法を使用します。

関数アプリの発行プロファイルをダウンロードすることで、Azure portal で FTPS 発行資格情報を取得できます。

重要

発行プロファイルには、重要なセキュリティ資格情報が含まれています。 ダウンロードしたファイルは常にローカル コンピューター上でセキュリティで保護する必要があります。

関数アプリの発行プロファイルをダウンロードするには、次を操作を行います。

  1. Azure portal で、関数アプリのページを探し、左側の列の [設定]>[構成] を展開します。

  2. [構成] ページで、[全般設定] タブを選択し、[SCM 基本認証の発行資格情報][オン] になっていることを確認します。 この設定が [オフ] の場合は、発行プロファイルを使用できないため、[オン] を選択し、[保存] を選択します。

  3. 関数アプリの [概要] ページに戻ってから、[発行プロファイルの取得] を選択します。

    発行プロファイルのダウンロード

  4. ファイルの内容を保存してコピーします。

  1. ファイルで、publishMethod="FTP" 属性を持つ publishProfile 要素を見つけます。 この要素では、publishUrluserName および userPWD 属性に FTPS 発行のターゲット URL と資格情報が含まれています。

ホスティング プランの種類

Function App を作成するときに、アプリが実行されるホスティング プランも作成します。 プランには、1 つ以上の Function App を含めることができます。 関数の機能、スケーリング、価格は、プランの種類によって異なります。 詳細については、「Azure Functions のホスティング オプション」を参照してください。

自分の Function App で使用されているプランの種類は、Azure portal、Azure CLI、または Azure PowerShell API を使用して確認できます。

次の値は、プランの種類を示します。

プランの種類 Azure portal Azure CLI または PowerShell
従量課金プラン 従量課金プラン Dynamic
Premium ElasticPremium ElasticPremium
専用 (App Service) プラン 各種 各種
  1. 自分の関数アプリで使用されるプランの種類を確認するには、Azure portal でその関数アプリの[概要] ページの [App Service プラン] を参照します。

    関数アプリの [概要] ページの [App Service プラン] リンクを示すスクリーンショット。

  2. 価格レベルを表示するには、[App Service プラン] の名前を選択し、左側のペインから [設定] > [プロパティ] を選択します。

プランの移行

Windows では、従量課金プランと Premium プランの間で関数アプリを移行できます。 プラン間で移行する場合は、次の考慮事項に注意してください。

  • Dedicated (App Service) プランへの直接移行はサポートされていません。
  • Linux では移行はサポートされていません。
  • ソース プランとターゲット プランは、同じリソース グループと地理的リージョンに存在する必要があります。 詳しくは、「Move an app to another App Service plan (アプリを別の App Service プランに移動する)」をご覧ください。
  • 具体的な CLI コマンドは、移行の方向によって異なります。
  • 関数の実行のダウンタイムは、関数アプリがプラン間で移行されるときに発生します。
  • 移行前と移行後の両方で同じ Azure Files 共有がアプリで使用されるため、状態やその他のアプリ固有のコンテンツは維持されます。

プランは、次のツールを使用して移行できます。

Azure portal を使用して、別のプランに切り替えることができます。

Windows でのアプリの移行方向を選択します。

  1. Azure portal で、従量課金プラン アプリに移動し、[App Service プラン][App Service プランを変更する] を選択します。

  2. [プランの種類][Premium] を選択し、新しい Premium プランを作成して、[OK] を選択します。

詳しくは、「Move an app to another App Service plan (アプリを別の App Service プランに移動する)」をご覧ください。

Azure portal での開発の制限事項

Azure portal で関数を開発する場合は、次の制限事項を考慮します。

  • ポータル内編集は、Azure portal で作成または最後に変更された関数でのみサポートされています。
  • ポータル内編集は、JavaScript、PowerShell、Python、C# スクリプト関数でのみサポートされています。
  • ポータル内編集は、Flex 従量課金プランのプレビュー リリースではサポートされていません。
  • Azure portal の外部から関数アプリにコードをデプロイすると、ポータルでその関数アプリのコードを一切編集できなくなります。 この場合は、ローカル開発を引き続き使用します。
  • Python の場合、カスタム モジュールを使用した開発は現在、ポータルではサポートされていません。 カスタム モジュールを関数アプリに追加するには、アプリをローカルで開発する必要があります。
  • コンパイル済みの C# 関数と Java 関数では、ポータルで関数アプリと関連リソースを作成できます。 ただし、関数コード プロジェクトをローカルで作成し、Azure に発行する必要があります。

可能な場合は、関数をローカルで開発し、コード プロジェクトを Azure の関数アプリに発行します。 詳細については、「Azure Functions をローカルでコーディングしてテストする」を参照してください。

拡張機能の手動インストール

C# クラス ライブラリ関数には、バインド拡張機能用の NuGet パッケージをクラス ライブラリ プロジェクトに直接含めることができます。 その他の .NET 以外の言語および C# のスクリプトの場合は、拡張機能バンドルを使用する必要があります。 拡張機能を手動でインストールする必要がある場合は、ローカルで Azure Functions Core Tools を使用することでそのようにできます。 拡張機能バンドルを使用できず、ポータルでのみ機能する場合は、Advanced Tools (Kudu) を使用して、サイトに直接 extensions.csproj ファイルを手動で作成する必要があります。 最初に host.json ファイルから extensionBundle 要素を削除してください。

この同じプロセスは、アプリに追加する必要がある他のファイルでも機能します。

重要

可能であれば、Azure の関数アプリでファイルを直接編集しないでください。 アプリファイルをローカルにダウンロードし、Core Tools を使用して拡張機能とその他のパッケージをインストールし、変更を検証してから、Core Tools または他のサポートされているデプロイ方法のいずれかを使用してアプリを再発行することをお勧めします。

Azure portal に組み込まれている Functions エディターを使用すると、関数コードと構成ファイルをポータルで直接更新できます。

  1. 関数アプリを選択し、[関数][関数] を選択します。

  2. 関数を選択し、[開発者][コード と テスト] を選択します。

  3. 編集するファイルを選択し、完了したら [保存] を選択します。

アプリのルートにある function.proj や extensions.csproj などのファイルは、Advanced Tools (Kudu) を使用して作成および編集する必要があります。

  1. 関数アプリを選択し、[開発ツール] を展開して、[高度なツール]>[Go] を選択します。

  2. メッセージが表示されたら、Azure 資格情報を使用してソース管理マネージャー (SCM) サイトにサインインします。

  3. [デバッグコンソール] メニューから、[CMD] を選択します。

  4. .\site\wwwroot に移動し、上部のプラス (+) ボタンを選択して、[新しいファイル] を選択します。

  5. ファイルに extensions.csproj などの名前を付け、Enter キーを押します。

  6. 新しいファイルの横にある編集ボタンを選択し、ファイル内のコードを追加または更新して、[保存] を選択します。

  7. extensions.csproj のようなプロジェクト ファイルの場合は、次のコマンドを実行して拡張機能プロジェクトを再構築します。

    dotnet build extensions.csproj
    

プラットフォーム機能

関数アプリは、それらを管理する Azure App Service プラットフォームで実行されます。 このため、Azure の主要 Web ホスティング プラットフォームのほとんどの機能にアクセスできます。 Azure portal を使用する場合、左側のペインでは、関数アプリで使用できる App Service プラットフォームの多くの機能にアクセスできます。

次の表は、ホスティング プランとオペレーティング システム別に Azure portal 機能のサポートを示しています。

機能 従量課金プラン Flex 従量課金プラン Premium プラン 専用プラン
高度なツール (Kudu) Windows: ✔
Linux: X
X
App Service Editor Windows: ✔
Linux: X
X Windows: ✔
Linux: X
Windows: ✔
Linux: X
バックアップ X X X
コンソール Windows: コマンド ライン
Linux: X
X Windows: コマンド ライン
Linux: SSH
Windows: コマンド ライン
Linux: SSH

この記事の残りの部分では、お使いの関数アプリに便利なポータルで使用できる次の機能を中心に説明します。

App Service の設定を使用する方法の詳細については、Azure App Service の設定の構成に関するページをご覧ください。

App Service Editor

App Service Editor は、JSON 構成ファイルとコード ファイルを変更するために使用できる高度なポータル内エディターです。 このオプションを選択すると、別のブラウザー タブが基本的なエディターで起動します。 このエディターで、Git リポジトリとの統合、コードの実行とデバッグ、関数アプリの設定変更を行うことができます。 このエディターは、組み込みの Function App エディターと比較して、お使いの関数の開発環境が強化されています。

App Service エディターを示すスクリーンショット。

お使いの関数は、お使いのローカル コンピューターで開発することを検討することをお勧めします。 ローカルで開発し、Azure に発行する場合、お使いのプロジェクト ファイルは Azure portal で読み取り専用になります。 詳細については、「Azure Functions をローカルでコーディングしてテストする」を参照してください。

コンソール

ポータル内コンソールは、コマンド ラインから Function App を操作するのに適した開発者ツールです。 一般的なコマンドには、ディレクトリやファイルの作成、ナビゲーション、バッチ ファイルやスクリプトの実行などがあります。

関数アプリ コンソールを示すスクリーンショット。

ローカルで開発する場合、Azure Functions Core Tools および Azure CLI を使用することをお勧めします。

高度なツール (Kudu)

App Service 用の高度なツール (Kudu とも呼ばれます) を使用すると、 Function App の高度な管理機能にアクセスできます。 Kudu から、システム情報、アプリ設定、環境変数、サイト拡張機能、HTTP ヘッダー、およびサーバー変数を管理します。 また、関数アプリの SCM エンドポイント (たとえば https://<myfunctionapp>.scm.azurewebsites.net/) にアクセスして、Kudu を起動することもできます。

App Service (Kudo) の高度なツールを示すスクリーンショット。

デプロイ センター

ソース管理ソリューションを使用してお使いの関数コードを開発および管理する場合、デプロイ センターを使用すると、ソース管理からビルドおよびデプロイをすることができます。 更新を行う場合、お使いのプロジェクトは Azure にビルドされ、デプロイされます。 詳細については、「Azure Functions のデプロイ テクノロジ」を参照してください。

クロス オリジン リソース共有

最新のブラウザーでは、クライアントで悪意のあるコードが実行されるのを防ぐために、Web アプリケーションから別のドメインで実行されるリソースへの要求をブロックします。 クロス オリジン リソース共有 (CORS) を使用すると、お使いの Function App でどこのオリジンがエンドポイントを呼び出せるかを Access-Control-Allow-Origin ヘッダーで宣言できます。

お使いの Function App の [許可されたオリジン] 一覧を構成すると、お使いの Function App の HTTP エンドポイントからのすべての応答に Access-Control-Allow-Origin ヘッダーが自動追加されます。

関数アプリの CORS リストを構成する方法を示すスクリーンショット。

別のドメイン エントリがある場合、ワイルドカード (*) は無視されます。

認証

関数が HTTP トリガーを使用するとき、呼び出しに、最初に認証を必須とすることができます。 App Service では、Facebook、Microsoft、X などのソーシャル プロバイダーによる Microsoft Entra 認証とサインインがサポートされています。特定の認証プロバイダーの構成については、Azure App Service 認証の概要を参照してください。

関数アプリの認証を構成する方法を示すスクリーンショット。