Azure 기능이 로컬 환경에서 실행되는지 확인하는 방법은 무엇입니까?Azure 함수에서 역할 환경이 작동하지 않습니다.
현재 환경이 로컬이 아닌지 확인해야 하는 코드 조건이 있습니다.!RoleEnvironment.IsEmulated
이제 이것은 Azure 기능에서는 작동하지 않지만 Cloud 서비스에서는 작동합니다.클라우드 서비스에서도 동일한 코드가 공유되므로 솔루션은 클라우드 서비스 및 zero 기능과 함께 작동해야 합니다.
현재 환경이 호스트/오프라인이 아닌 로컬 환경인지 확인하려면 어떻게 해야 합니까?
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);
}
}
}
로컬 개발에서 자동으로 설정되는 환경 변수를 사용할 수 있습니다.
Environment.GetEnvironmentVariable("AZURE_FUNCTIONS_ENVIRONMENT"); // set to "Development" locally
배포/게시(예: Azure) 시 환경 변수를 직접 설정해야 합니다(예: Azure의 함수 앱 설정).
예를 들어 내부 구현에 의존하는 것이 좋은 생각인지 모르겠습니다. WEBSITE_INSTANCE_ID
다른 답변에서 조언했습니다.
저는 다음을 통해 저만의 환경 변수를 정의함으로써 매우 간단한 접근 방식을 사용했습니다.local.settings.json
:
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"IS_RUNNING_LOCALLY": true
}
}
그냥 그렇게 확인합니다.
bool isLocal = Environment.GetEnvironmentVariable("IS_RUNNING_LOCALLY") == "true";
이는 해결 방법이지만 쉽고 직관적이므로 안전해야 합니다.
로 시도했습니다.AZURE_FUNCTIONS_ENVIRONMENT
그러나 런타임이 이미 존재한다고 불평하기 때문에 로컬 파일에 설정할 수 없습니다. 예를 들어 환경을 "로컬"로 설정할 수 있었기 때문에 매우 어리석게 보입니다.
추신. 기본 환경과 관련된 버그가 여러 개 있고 설명서에서 주장하는 것처럼 "운영"이 될 것이라고 보장하지 않기 때문에 기본 환경에 의존하는 것은 위험한 것 같습니다.여기를 참조하십시오.
실제 런타임이 사용하는 것과 유사한 접근 방식을 사용하여 Azure에서 실행되는지 여부를 확인할 수 있습니다. https://github.com/Azure/azure-webjobs-sdk-script/blob/efb55da/src/WebJobs.Script/Config/ScriptSettingsManager.cs#L25
이 경우 런타임은 다음과 같은 이름의 앱 설정이 있는지 확인합니다.WEBSITE_INSTANCE_ID
언급URL : https://stackoverflow.com/questions/45026215/how-to-check-azure-function-is-running-on-local-environment-roleenvironment-i
'programing' 카테고리의 다른 글
MongoDB - 중첩 배열의 개체 업데이트 (0) | 2023.05.08 |
---|---|
Python 3.4 비동기 코드를 테스트하는 방법은 무엇입니까? (0) | 2023.05.08 |
System.지원되지 않음자산을 생성하려고 할 때 예외 발생 (0) | 2023.04.28 |
발송인.현재 디스패처 대어플.현재의.파견자 (0) | 2023.04.28 |
커밋 메시지를 변경하지 않고 커밋 메시지를 수정하는 방법(이전 메시지 재사용) (0) | 2023.04.28 |