エラーのトラブルシューティングにおける"Azure Functions ランタイムに到達できない" について
この記事は、Azure portal に表示される次のエラー文字列をトラブルシューティングする場合に役立ちます。
"エラー: Azure Functions ランタイムに到達できません。 ストレージ構成の詳細については、ここをクリックしてください。"
この問題は、Functions ランタイムが起動できない場合に発生します。 これが発生する最も一般的な理由は、関数アプリでそのストレージ アカウントへのアクセスが失われていることです。 詳細については、「ストレージ アカウントの要件」をご覧ください。
この記事の残りの部分は、各ケースを特定して解決する方法など、このエラーの具体的な原因をトラブルシューティングする際に役立ちます。
ストレージ アカウントが削除された
すべての関数アプリには、操作するためのストレージ アカウントが必要です。 そのアカウントが削除されると、関数は機能しません。
まず、アプリケーションの設定でご自分のストレージ アカウント名を検索します。 AzureWebJobsStorage
または WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
のいずれかに、接続文字列の一部としてストレージ アカウントの名前が含まれています。 詳細については、「Azure Functions のアプリケーション設定のリファレンス」をご覧ください。
Azure portal でご自分のストレージ アカウントを検索して、まだ存在するかどうかを確認します。 削除されている場合は、ストレージ アカウントを作成し直して、ストレージ接続文字列を置き換えます。 関数コードが失われるため、もう一度デプロイする必要があります。
ストレージ アカウントのアプリケーション設定が削除された
前の手順で、ストレージ アカウントの接続文字列が見つからない場合は、削除されたか上書きされた可能性があります。 アプリケーションの設定の削除は、デプロイ スロットまたは Azure Resource Manager スクリプトを使用してアプリケーションの設定を行うときに最もよく発生します。
必須のアプリケーションの設定
- 必須:
- エラスティック Premium と従量課金プランの関数の場合は必須:
詳細については、「Azure Functions のアプリケーション設定のリファレンス」をご覧ください。
ガイダンス
- これらの設定のいずれに対しても、スロット設定をオンにしないでください。 デプロイ スロットをスワップすると、関数アプリが中断されます。
- 自動デプロイの一環としてこれらの設定を変更しないようにしてください。
- これらの設定は、作成時に指定して有効にする必要があります。 これらの設定が含まれない自動デプロイでは、関数アプリが実行されなくなります。後から設定を追加しても実行されません。
ストレージ アカウントの資格情報が無効
ストレージ キーを再生成する場合は、前述のストレージ アカウント接続文字列を更新する必要があります。 ストレージ キーの管理の詳細については、「Azure Storage アカウントの作成」をご覧ください。
ストレージ アカウントにアクセスできない
関数アプリは、ストレージ アカウントにアクセスできる必要があります。 ストレージ アカウントへの関数アプリのアクセスをブロックする一般的な問題は次のとおりです。
ストレージ アカウント間のトラフィックを許可するため、正しいネットワーク規則なしで関数アプリが App Service Environment (ASE) にデプロイされた。
ストレージ アカウントのファイアウォールが有効になっていて、Functions 間のトラフィックを許可するように構成されていない。 詳細については、Azure Storage ファイアウォールおよび仮想ネットワークの構成に関する記事を参照してください。
allowSharedKeyAccess
設定が、既定値であるtrue
に設定されていることを確認します。 詳細については、Azure ストレージ アカウントの共有キーによる認可の禁止に関するページを参照してください。
日ごとの実行クォータがいっぱいである
日ごとの実行クォータが構成されている場合、関数アプリは一時的に無効になり、これにより、多くのポータル コントロールが使用できなくなります。
Azure portal でクォータを確認するには、関数アプリで [プラットフォーム機能]>[関数アプリの設定] を選択します。 設定した日ごとの使用量クォータを超えている場合は、次のメッセージが表示されます。
"関数アプリは日ごとの使用量クォータに達したため、次の 24 時間の時間枠まで停止しています。"
この問題を解決するには、日ごとのクォータを削除するか増やしてから、アプリを再起動します。 そうしない場合は、アプリの実行が翌日までブロックされます。
アプリがファイアウォールの内側にある
次のいずれかの理由により、関数アプリに到達できない可能性があります。
関数アプリが内部で負荷分散された App Service Environment 内でホストされ、受信インターネット トラフィックをブロックするように構成されている。
関数アプリに、インターネット アクセスをブロックするように構成されている受信 IP 制限が設けられている。
Azure portal は、実行中のアプリに対して直接呼び出しを行い、関数の一覧を取得します。また、Kudu エンドポイントに対して HTTP 呼び出しを行います。 プラットフォームレベルの設定は、 [プラットフォーム機能] タブで引き続き使用できます。
ASE の構成を確認するには、次のようにします。
- ASE が存在するサブネットのネットワーク セキュリティ グループ (NSG) に移動します。
- アプリケーションにアクセスしているコンピューターのパブリック IP から送信されるトラフィックを許可する受信規則を検証します。
また、アプリを実行している仮想ネットワーク、または仮想ネットワークで実行されている仮想マシンに接続されているコンピューターからポータルを使用することもできます。
受信規則の構成の詳細については、「App Service Environment のネットワークの考慮事項」の「ネットワーク セキュリティ グループ」セクションをご覧ください。
Linux でのコンテナー エラー
コンテナー内の Linux 上で実行される関数アプリの場合、コンテナーに関する問題の結果としてAzure Functions runtime is unreachable
エラーが発生する可能性があります。 次の手順に従って、コンテナー ログでエラーを確認します。
関数アプリの Kudu エンドポイントに移動します。これは
https://<FUNCTION_APP>.scm.azurewebsites.net
にあります。<FUNCTION_APP>
はアプリの名前です。Docker ログの .zip ファイルをダウンロードし、ローカル コンピューターで内容を確認します。
コンテナーを正常に起動できないことを示すエラーがログされていないか確認します。
コンテナー イメージを使用できない
参照するコンテナー イメージが利用できない場合や、正しく起動できない場合に、エラーが発生することがあります。 コンテナーを正常に起動できないことを示すエラーがログされていないか確認します。
関数アプリを正しく実行するために、コンテナーの起動を妨げるエラーを修正する必要があります。
コンテナー イメージが見つからない場合は、Docker ログに manifest unknown
エラーが記録されます。 この場合は、参照されているコンテナー イメージを変更するために、「Azure Functions ランタイム バージョンをターゲットにする方法」に記載されている Azure CLI コマンドを使用できます。 カスタム コンテナー イメージをデプロイした場合は、イメージを修正し、更新されたバージョンを、参照されているレジストリに再デプロイする必要があります。
アプリ コンテナーに競合するポートがある
起動時にポートの割り当てが競合しているため、関数アプリが応答しない状態になる可能性があります。 これは、次のケースで発生する可能性があります。
- コンテナーには、関数アプリと同じポートにバインドするために1 つ以上のサービスが結び付けられている、別のサービスが実行されています。
- 関数アプリと同じポート値を共有する Azure ハイブリッド接続を追加しました。
既定では、関数アプリを実行するコンテナーではポート :80
が使用されます。 同じコンテナー内の他のサービスもポート :80
を使用しようとしている場合、関数アプリの起動に失敗する可能性があります。 ログにポートの競合が表示される場合は、既定のポートを変更します。
ホスト ID の競合
Functions ランタイムのバージョン 3.x 以降では、ホスト ID の競合が検知され、警告がログに記録されるようになりました。 バージョン 4.x では、エラーがログに記録され、ホストが停止し、ホストが発生します。 ランタイムが関数アプリ用に起動できない場合は、ログを確認します。 ホスト ID の競合に関する警告またはエラーがある場合は、「ホスト ID に関する考慮事項」の軽減ステップに従ってください。
読み取り専用アプリの設定
"読み取り専用"の App Service アプリケーションの設定を変更すると、関数アプリが到達できない状態になる可能性があります。
ASP.NET 認証のオーバーライド
"Functions ホストを使用してインプロセスで実行されている C# アプリにのみ適用されます。"
Functions のスタートアップ クラスで ASP.NET 認証を構成すると、Azure portal がホストと通信するために必要なサービスをオーバーライドできます。 これには AddAuthentication()
の呼び出しが含まれますが、これだけではありません。 ホストの認証サービスがオーバーライドされて、ポータルがホストと通信できない場合、アプリは到達不能と見なされます。 この問題により、次のようなエラーが発生する可能性があります: No authentication handler is registered for the scheme 'ArmToken'.
。
次のステップ
関数アプリの監視についての詳細情報: