Azure Functions による Azure Static Web Apps での API のサポート

フロントエンド Web アプリケーションは、多くの場合、データとサービスのバックエンド API を呼び出します。 既定では、Azure Static Web Apps は、Azure Functions を介して組み込みのサーバーレス API エンドポイントを提供します。

Static Web Apps の Azure Functions API は、ホスティング プランに基づき、使用できる次の 2 つの構成でサポートされます。

  • マネージド関数: 既定では、静的 Web アプリの API は、いくつかの制限が関連付けられた、Azure Static Web Apps によって管理およびデプロイされる Azure Functions アプリです。

  • 独自の関数の持ち込み: 必要に応じて、任意のプランの種類の既存のAzure Functionsアプリケーションを用意することができます (Azure Functions のすべての機能に付いています)。 この構成の場合、Functions アプリの個別のデプロイを処理する必要があります。

次の表では、マネージド関数と既存の関数の使用の違いを対比したものです。

機能 マネージド関数 独自の関数の持ち込み
Azure Functions のトリガーとバインディングへのアクセス。 HTTP のみ すべて
サポートされている Azure Functions ランタイム1 Node.js 12
Node.js 14
Node.js 16
Node.js 18 (パブリック プレビュー)
.NET Core 3.1
.NET 6.0
.NET 7.0
Python 3.8
Python 3.9
Python 3.10
すべて
サポートされている Azure Functions のホスティング プラン 従量課金 従量課金
Premium
専用
ユーザー認証とロールベースの承認データに直接アクセスできる統合セキュリティ
カスタム CORS ルールを必要とせずに、Web アプリで安全に /api ルートを使用できるようにするルーティングの統合
バックエンド コンピューティングの動的グローバル分散のための分散関数 (プレビュー)
Durable Functions プログラミング モデル
マネージド ID
Azure App Service の認証と承認のトークン管理
Azure Static Web Apps の外部で使用できる API 関数
Key Vault 参照

1 マネージド関数でランタイムのバージョンを指定するには、フロントエンド アプリに構成ファイルを追加し、apiRuntime プロパティを設定します。 サポートには、Azure Functions 言語ランタイムのサポート ポリシーが適用されます。

Static Web Apps の API オプションには、次の Azure サービスが含まれます。

詳細については、「API の概要」を参照してください。

Note

分散関数は、マネージド関数で使用できます。 分散関数により、要求の負荷が高いリージョンにマネージド関数を自動的に分散されます。

構成

Web アプリでは、api ルートを介して API エンドポイントを使用できます。

マネージド関数 独自の関数の持ち込み
/api ルートは固定されていますが、マネージド関数アプリのソース コードのフォルダーの場所は制御できます。 リポジトリの .github/workflows フォルダーにあるワークフロー YAML ファイルを編集することにより、この場所を変更できます。 /api ルートへの要求は、既存の Azure Functions アプリに送信されます。

トラブルシューティングとログ

ログは、Application Insights を追加した場合にのみ使用できます。

マネージド関数 独自の関数の持ち込み
静的 Web アプリ上で Application Insights を有効にして、ログ記録を有効にします。 Azure Functions アプリ上で Application Insights を有効にして、ログ記録を有効にします。

制約

Azure Functions API には、Static Web Apps API の制約に加えて、次の制約も適用されます。

マネージド関数 独自の関数の持ち込み
  • トリガーとバインドは、HTTP に限定されています。
  • Azure Functions アプリは、Node.js 12、Node.js 14、Node.js 16、Node.js 18 (パブリック プレビュー)、.NET Core 3.1、.NET 6.0、Python 3.8、Python 3.9、または Python 3.10 形式である必要があります。
  • 一部のアプリケーション設定は、サービスによって管理されているため、次のプレフィックスはランタイムで予約されています。
    • APPSETTING_、AZUREBLOBSTORAGE_、AZUREFILESSTORAGE_、AZURE_FUNCTION_、CONTAINER_、DIAGNOSTICS_、DOCKER_、FUNCTIONS_、IDENTITY_、MACHINEKEY_、MAINSITE_、MSDEPLOY_、SCMSITE_、SCM_、WEBSITES_、WEBSITE_、WEBSOCKET_、AzureWeb
  • 一部のアプリケーション タグは、サービスによって内部的に使用されます。 したがって、次のタグは予約されています。
    • AccountId、EnvironmentId、FunctionAppId
  • Functions アプリのデプロイを管理する必要があります。

次のステップ