お使いの 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 にサインインします。 ポータルの上部にある検索バーで Function App の名前を入力し、一覧からその Function App を選択します。

  2. 左側のウィンドウの [設定] で、 [構成] を選択します。

    Function app overview in the Azure portal

Function App の管理に必要なすべての機能には、概要ページからアクセスできます (特に [アプリケーションの設定][プラットフォーム機能] )。

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

関数コードに必要なアプリケーション設定は、いくつでも作成できます。 Functions で使用される定義済みのアプリケーション設定もあります。 詳細については、「Azure Functions のアプリケーション設定のリファレンス」を参照してください。

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

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

アプリケーション設定については、「Azure portal での作業を開始する」を参照してください。

[アプリケーションの設定] タブでは、 Function App に使用される設定を管理します。 ポータルで値を表示するには、 [値を表示する] を選択する必要があります。 ポータルに設定を追加するには、 [新しいアプリケーション設定] を選択して新しいキーと値のペアを追加します。

Function app settings in the Azure portal.

アプリケーションの設定

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

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

FTPS デプロイ設定

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

FTPS デプロイに必要な資格情報は、次のいずれかの方法で取得できます:

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

重要

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

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

  1. 関数アプリの [概要] ページを選択し、 [発行プロファイルの取得] を選択します。

    Download publish profile

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

  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 CLI または PowerShell
従量課金プラン 従量課金プラン Dynamic
Premium ElasticPremium ElasticPremium
専用 (App Service) プラン 各種 各種

自分の Function App で使用されるプランの種類を確認するには、Azure portal でその Function App の [概要] タブの [App Service プラン] を参照します。 価格レベルを表示するには、 [App Service プラン] の名前を選択し、左側のウィンドウから [プロパティ] を選択します。

View scaling plan in the portal

プランの移行

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

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

ポータルでの移行

Azure portal で、従量課金または Premium プラン アプリに移動し、[App Service プラン][App Service プランを変更する] を選びます。 他の [プランの種類] を選び、新しい種類に対して新しい App Service プランを作成し、[OK] を選択します。 詳しくは、「Move an app to another App Service plan (アプリを別の App Service プランに移動する)」をご覧ください。

従量課金から Premium へ

Windows で従量課金プランから Premium プランに移行するには、次の手順を使用します。

  1. 次のように az functionapp plan create コマンドを実行して、既存の関数アプリと同じリージョンおよびリソース グループに新しい App Service プラン (エラスティック Premium) を作成します。

    az functionapp plan create --name <NEW_PREMIUM_PLAN_NAME> --resource-group <MY_RESOURCE_GROUP> --location <REGION> --sku EP1
    
  2. 次のように az functionapp update コマンドを実行して、既存の関数アプリを新しい Premium プランに移行します。

    az functionapp update --name <MY_APP_NAME> --resource-group <MY_RESOURCE_GROUP> --plan <NEW_PREMIUM_PLAN>
    
  3. 以前の従量課金アプリ プランが不要になった場合は、新しい Function App プランに正常に移行したことを確認した後で元のものを削除します。 次のように az functionapp plan list コマンドを実行して、リソース グループ内のすべての従量課金プランの一覧を取得します。

    az functionapp plan list --resource-group <MY_RESOURCE_GROUP> --query "[?sku.family=='Y'].{PlanName:name,Sites:numberOfSites}" -o table
    

    移行元である、サイトがないプランは安全に削除できます。

  4. 次のように az functionapp plan delete コマンドを実行して、移行元の従量課金プランを削除します。

    az functionapp plan delete --name <CONSUMPTION_PLAN_NAME> --resource-group <MY_RESOURCE_GROUP>
    

Premium から従量課金へ

Windows で Premium プランから従量課金プランに移行するには、次の手順を使用します。

  1. 次のように az functionapp plan create コマンドを実行して、既存の関数アプリと同じリージョンおよびリソース グループに新しい関数アプリ (従量課金) を作成します。 このコマンドにより、 Function App が実行される新しい従量課金プランも作成されます。

    az functionapp create --resource-group <MY_RESOURCE_GROUP> --name <NEW_CONSUMPTION_APP_NAME> --consumption-plan-location <REGION> --runtime dotnet --functions-version 3 --storage-account <STORAGE_NAME>
    
  2. 次のように az functionapp update コマンドを実行して、既存の関数アプリを新しい従量課金プランに移行します。

    az functionapp update --name <MY_APP_NAME> --resource-group <MY_RESOURCE_GROUP> --plan <NEW_CONSUMPTION_PLAN> --force
    
  3. 次のように az functionapp delete コマンドを実行して、手順 1 で作成した関数アプリを削除します。これは、既存の関数アプリを実行するために作成されたプランのみが必要であるためです。

    az functionapp delete --name <NEW_CONSUMPTION_APP_NAME> --resource-group <MY_RESOURCE_GROUP>
    
  4. 以前の Premium Function App プランが不要になった場合は、新しい Function App プランに正常に移行したことを確認した後で元のものを削除します。 Premium プランが削除されるまでは、引き続き課金されます。 次のように az functionapp plan list コマンドを実行して、リソース グループ内のすべての Premium プランの一覧を取得します。

    az functionapp plan list --resource-group <MY_RESOURCE_GROUP> --query "[?sku.family=='EP'].{PlanName:name,Sites:numberOfSites}" -o table
    
  5. 次のように az functionapp plan delete コマンドを実行して、移行元の Premium プランを削除します。

    az functionapp plan delete --name <PREMIUM_PLAN> --resource-group <MY_RESOURCE_GROUP>
    

関数のアクセス キーを取得する

HTTP によってトリガーされる関数は、https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME> という形式の URL を使用して呼び出すのが一般的です。 関数に対する承認を anonymous 以外の値に設定する場合は、要求にアクセス キーも指定する必要があります。 アクセス キーは URL の中で ?code= クエリ文字列を使用して指定するか、または要求ヘッダーで指定することができます。 詳細については、「関数のアクセス キー」を参照してください。 アクセス キーは、いくつかの方法で取得できます。

  1. Azure portal にサインインし、"関数アプリ" を検索して選択します。

  2. 検証する関数を選択します。

  3. 左側のナビゲーションの [Functions](関数) で、 [アプリ キー] を選択します。

    これによってホスト キーが返されます。ホスト キーを使用すると、アプリ内の任意の関数にアクセスすることができます。 また、システム キーも返されます。システム キーは、すべての関数アプリの API に対する管理者レベルのアクセスを提供します。

HTTP によってトリガーされる関数の [開発者][関数キー] を選択し、特定の関数キーのためだけのキーを使用することによって、最小限の特権を実践することもできます。

Azure portal での開発の制限事項

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

  • ポータル内編集は、JavaScript、PowerShell、Python、および C# スクリプト関数でのみサポートされています。
  • Python のポータル内編集は、従量課金プランで実行している場合にのみサポートされます。
  • ポータル内編集は、現在、ポータルで作成または最後に変更された関数でのみサポートされています。
  • ポータルの外部から関数アプリにコードをデプロイすると、ポータルでその関数アプリのコードを一切編集できなくなります。 この場合は、ローカル開発を引き続き使用します。
  • コンパイル済みの C# 関数、Java 関数、一部の Python 関数では、ポータルで関数アプリと関連リソースを作成できます。 ただし、関数コード プロジェクトをローカルで作成し、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
    

プラットフォーム機能

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

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

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

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

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

App Service Editor

The App Service editor

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

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

コンソール

Function app console

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

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

高度なツール (Kudu)

Configure Kudu

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

デプロイ センター

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

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

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

ポータル

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

Configure function app's CORS list

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

許可されたオリジンの一覧にドメインを追加するには、az functionapp cors add コマンドを使用します。 次の例では、contoso.com ドメインが追加されます。

az functionapp cors add --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--allowed-origins https://contoso.com

現在許可されているオリジンを列挙するには、az functionapp cors show コマンドを使用します。

認証

Configure authentication for a function app

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

次のステップ