web-dev-qa-db-ja.com

Azure関数がローカル環境で実行されていることを確認するにはどうすればよいですか? `RoleEnvironment`がAzureFunctionsで機能していません

現在の環境がローカルではないかどうかを確認する必要があるコードの条件があります。!RoleEnvironment.IsEmulatedを使用しましたが、これはAzure関数では機能しませんが、クラウドサービスでは機能します。同じコードがクラウドサービスでも共有されるため、ソリューションはクラウドサービスとAzure関数で機能するはずです。

現在の環境がホスト/デプロイされていないローカルであることを確認するにはどうすればよいですか?

17
Avinash patil

Fabio Cavalcanteの回答に基づいて、現在実行中の環境(ローカルまたはホスト)をチェックするAzure関数が機能しています。

using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System;

namespace AzureFunctionTests
{
    public static class WhereAmIRunning
    {
        [FunctionName("whereamirunning")]
        public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
        {
            bool isLocal = string.IsNullOrEmpty(Environment.GetEnvironmentVariable("WEBSITE_INSTANCE_ID"));

            string response = isLocal ? "Function is running on local environment." : "Function is running on Azure.";

            return req.CreateResponse(HttpStatusCode.OK, response);
        }
    }
}
11
AntoineC

実際のランタイムがAzureで実行されているかどうかを識別するために使用するのと同様のアプローチを使用できます: https://github.com/Azure/azure-webjobs-sdk-script/blob/efb55da/src/WebJobs .Script/Config/ScriptSettingsManager.cs#L25

この場合、ランタイムはWEBSITE_INSTANCE_IDという名前のアプリ設定の存在を確認します

5

自動的に設定されるAzure_FUNCTIONS_ENVIRONMENT環境変数を使用できます。

Environment.GetEnvironmentVariable("Azure_FUNCTIONS_ENVIRONMENT"); // set to "Development" locally

https://github.com/Azure/azure-functions-Host/issues/4491

3
Saeb Amini