diff --git a/_posts/2024-01-31-Failed-to-create-Functions-when-selecting-an-existing-storage-account-from-Azure-Portal.md b/_posts/2024-01-31-Failed-to-create-Functions-when-selecting-an-existing-storage-account-from-Azure-Portal.md index 46d0e0e..fe09f4e 100644 --- a/_posts/2024-01-31-Failed-to-create-Functions-when-selecting-an-existing-storage-account-from-Azure-Portal.md +++ b/_posts/2024-01-31-Failed-to-create-Functions-when-selecting-an-existing-storage-account-from-Azure-Portal.md @@ -32,7 +32,7 @@ Creation of storage file share failed with: 'The remote server returned an error いいえ、 Function App 作成時に選択するストレージアカウントのファイアウォールにおいて、 「Function App の VNet 統合を有効にしてサービスエンドポイントを有効にする」 ことや 「Azure Portal を操作するクライアント PC のグローバル IP アドレスをファイアウォールで許可する」 ことで事象を回避することは叶いません。 -これは、ファイル共有を Function App 自身や Portal を操作するクライアント PC ではなく [Functions (App Service) プラットフォーム内部のコンポーネント](https://azure.github.io/jpazpaas/2023/05/10/Inside-the-Azure-App-Service-Architecture.html#api-controllers) が作成しているためです。 +これは、ファイル共有を Function App 自身や Portal を操作するクライアント PC ではなく [Functions (App Service) プラットフォーム内部のコンポーネント](https://jpazpaas.github.io/blog/2023/05/10/Inside-the-Azure-App-Service-Architecture.html#api-controllers) が作成しているためです。 上記コンポーネントが使用する IP アドレスの範囲は公開されておらず、また仮想ネットワークを経由してストレージアカウントに接続することも叶いませんので、ストレージアカウントでファイアウォールを有効にしていると Function App リソースの作成に失敗いたします。 @@ -42,6 +42,17 @@ Creation of storage file share failed with: 'The remote server returned an error 403 エラーログの CallerIpAddress がプライベート IP アドレスになっている場合があり、これは [同一リージョン内でのストレージアカウントへの通信にはプライベート IP アドレスが使用される](https://learn.microsoft.com/ja-jp/azure/storage/common/storage-network-security?toc=%2Fazure%2Fstorage%2Ffiles%2Ftoc.json&tabs=azure-portal#restrictions-for-ip-network-rules) 想定された動作となりますが、ストレージアカウントのファイアウォールではプライベート IP アドレスに基づいてルールを構成できないため、仮に Functions プラットフォームが使用する IP アドレスの範囲が判明してもファイアウォール規則で許可することは叶いません。 +## 補足 +本記事は Function App で [デプロイスロットアプリを作成するシナリオ](https://learn.microsoft.com/ja-jp/azure/azure-functions/functions-deployment-slots?tabs=azure-portal#create-a-deployment-setting) にも該当します。 + + +お客様にて従量課金プラン並びに Elastic Premium プランの Function App でデプロイスロットアプリを追加しようとする際に、Function プラットフォームの内部のコンポーネントはストレージアカウントに対してプライベート IP アドレスで接続してファイル共有を作成する動作があります。 + + +ストレージアカウントでファイアウォールを有効にする場合、Function プラットフォームの内部のコンポーネントからストレージアカウントへのアクセスが拒否されるため、ファイル共有の作成が失敗した結果、デプロイスロットアプリの作成が出来ません。 + +そのため、ストレージアカウントでファイアウォールを有効にする場合、Function App でデプロイスロットアプリを追加するには、一時的にストレージアカウントのファイアウォール (パブリックネットワークアクセス) を すべてのネットワークから有効 に変更する必要がございます。 + ご不便をおかけしますが、記事冒頭でご紹介した回避策などをご検討いただけますと幸いです。
@@ -52,7 +63,7 @@ Creation of storage file share failed with: 'The remote server returned an error

-2024 年 01 月 31 日時点の内容となります。
+2024 年 05 月 01 日時点の内容となります。
本記事の内容は予告なく変更される場合がございますので予めご了承ください。