独自の関数を Azure Static Web Apps で使用する

Azure Static Web Apps API は、マネージド関数と独自の関数の使用という 2 つの構成でサポートされています。 構成の違いの詳細については、概要を参照してください。

この記事では、既存の Azure Functions アプリを Azure Static Web Apps リソースにリンクする方法について説明します。

Note

独自の関数の使用は、Azure Static Web Apps の Standard プランでのみ使用できます。

次の場所を経由してエンドポイントを公開する既存の Azure Functions アプリについて検討します。

https://my-functions-app.azurewebsites.net/api/getProducts

リンクされると、この URL の例に示すように、静的 Web アプリから api パスを介してその同じエンドポイントにアクセスできます。

https://red-sea-123.azurestaticapps.net/api/getProducts

どちらのエンドポイント URL も同じ関数を指します。

既存の Functions アプリを関連付ける前に、まず静的 Web アプリの構成に合わせて調整する必要があります。

  1. ワークフロー構成ファイルで、api_location の値を空の文字列 ("") に設定します。

  2. Azure portal で Static Web Apps インスタンスを開きます。

  3. [設定] メニューから [ API] を選択します。

  4. [運用 ] 行で [ リンク ] を選択して、[ 新しいバックエンドのリンク ] ウィンドウをオープンします。

    次の設定を入力します。

    設定
    バックアップされたリソースの種類 関数アプリの選択。
    サブスクリプション Azure サブスクリプション名を選択してください。
    リソース名 Azure Functionsアプリ名を選択します。
  5. [リンク] を選択します。

Azure Functions アプリが静的 Web アプリの/apiルートにマップされるようになりました。

重要

既存の Functions アプリケーションをリンクする前に、ワークフロー構成ファイルで api_location の値を空の文字列 ("") に必ず設定してください。 また、呼び出しでは、外部関数アプリで既定のルート プレフィックス api が保持されることが前提となっています。 多くのアプリでは、host.json 内でこのプレフィックスが削除されます。 プレフィックスが構成内にあることを確認してください。そうでない場合、呼び出しが失敗します。

デプロイ

Azure Functions アプリのデプロイ ワークフローの設定は、ご自身の責任で行う必要があります。

セキュリティの制約

  • 認証と認可: 既存の Functions アプリで認証と認可のポリシーがまだ設定されていない場合、静的 Web アプリは API への排他的アクセス権限を持ちます。 Functions アプリを他のアプリケーションからアクセス可能にするには、別の ID プロバイダーを追加するか、認証されていないアクセスを許可するようセキュリティ設定を変更します。

    Note

    リンクされた Functions アプリで認証と認可を有効にする場合は、Azure App Service 認証および認可プロバイダー バージョン 2 を使用する必要があります。

  • 必要なパブリック アクセシビリティ: 既存の Functions アプリでは、次のセキュリティ構成を適用しないようにする必要があります。

    • Functions アプリの IP アドレスの制限。
    • プライベート リンクまたはサービス エンドポイントを介したトラフィックの制限。
  • 関数アクセス キー: 関数にアクセス キーが必要な場合は、静的アプリから API への呼び出しをキーに指定する必要があります。

制限

  • 1 つの静的 Web アプリで使用できる Azure Functions アプリは 1 つのみです。
  • api_locationワークフロー構成 値は、空の文字列に設定する必要があります。
  • Static Web Apps pull request 環境ではサポートされていません。
  • Azure Functions アプリはさまざまなトリガーに応答できますが、静的 Web アプリは HTTP エンドポイント経由でのみ関数にアクセスできます。

次のステップ