Skip to content

Commit

Permalink
Commit Article.
Browse files Browse the repository at this point in the history
  • Loading branch information
jpcie committed May 1, 2024
1 parent 13b203a commit 34a0452
Showing 1 changed file with 13 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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 リソースの作成に失敗いたします。

Expand All @@ -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 でデプロイスロットアプリを追加するには、一時的にストレージアカウントのファイアウォール (パブリックネットワークアクセス) を すべてのネットワークから有効 に変更する必要がございます。

ご不便をおかけしますが、記事冒頭でご紹介した回避策などをご検討いただけますと幸いです。

<br>
Expand All @@ -52,7 +63,7 @@ Creation of storage file share failed with: 'The remote server returned an error
<br>
<br>

2024 年 0131 日時点の内容となります。<br>
2024 年 0501 日時点の内容となります。<br>
本記事の内容は予告なく変更される場合がございますので予めご了承ください。

<br>
Expand Down

0 comments on commit 34a0452

Please sign in to comment.