0

나는 C#에서 "HTTP Trigger"가있는 하늘색 함수가 있습니다. "HTTP 트리거"가있는 하늘색 함수를 호출하면 대기열 저장소에 메시지를 기록하려고합니다.C# -Azure 함수 : "HTTP Trigger"azure 함수를 호출 할 때 대기열 저장소에 메시지를 기록하는 방법?

"HTTP 트리거"가 호출되면 다른 곳의 log.info ("C# HTTP trigger ....");) 메시지를 기록하지만 ipaddress와 함께이 로그 메시지를 원합니다 (사용자가 요청할 때 ("C# Queue trigger", ipaddress))에 저장되어 사용자가 시도 횟수를 초과하여 api에 대한 호출을하면 클라이언트 ipaddress를 하루 동안 차단할 수 있습니다 (예 : "HTTP 트리거"기능). 그리고 다음날 다시 나는 클라우드에서 타이머 트리거를 실행하는 큐 저장소에서 모든 ipaddress를 가져 와서 클라이언트 ipaddress를 차단 해제 할 수 있습니다.

이것을 달성 할 수 있습니까 아니면 다른 방법으로 큐 저장소 이외의 ipaddress를 저장할 수 있습니까?

답변

1

내가 작성한 내용에서 사용자에게 일종의 API를 제공하고 액세스를 제한하려고한다고 가정합니다. 이를 위해 Azure API 관리 (https://azure.microsoft.com/en-us/services/api-management/)를 사용하는 것이 좋습니다. 다양한 기준에 따라 API 엔드 포인트에 대한 사용자 액세스를 제한하는 액세스 견적을 제공합니다. 또한 사용자 관리, 지불, 가입, 보안 등 훨씬 더 많은 기능을 제공합니다.

+0

자신의 IP (동적 IP 주소로 인해 매우 안전하지 않음)를 기반으로 사용자를 차단하려면이 IP 주소의 마지막 "오버플로"액세스를 저장하고 마지막 액세스가 과거 24 시간인지 확인하십시오 ... 저장을 위해 DocumentDB, CosmosDB 또는 RedisCache를 사용할 수 있습니다. 어쩌면 Azure Storage도 있지만 이전 저장소와 함께 갈 것입니다. – sebastian87

0

HTTP 트리거와 푸른 기능에서 클라이언트 IP를 검색하는 경우, 다음과 같은 코드를 사용할 수 있습니다

run.csx : 자세한 내용은

#r "System.Web" 

using System.Web; 
using System.Net; 

public static HttpResponseMessage Run(HttpRequestMessage req, TraceWriter log) 
{ 
    var address = ((HttpContextWrapper)req.Properties["MS_HttpContext"]).Request.UserHostAddress; 
    log.Info($"Your client IP: {address}"); 
    return req.CreateResponse(HttpStatusCode.OK, $"Your client IP: {address}"); 
} 

, 당신은 할 수 이 issue을 참조하십시오.

때문에 사용자가 다시 나는 구름 타이머 트리거를 실행 큐 저장소에서 모든 IPADDRESS을 복용하여 클라이언트 IPADDRESS 차단을 해제 할 수 있습니다 시도하고 다음 날의 수를 넘어 API를 호출하는 경우 나, 하루 동안 클라이언트 IPADDRESS을 차단할 수있다.

특정 IP에 대한 액세스 로그를 저장하기 위해 테이블 ​​저장소를 사용하는 것이 좋습니다. PartitionKey 열을 날짜로 설정하고 RowKeyClientIP 또는 ClientIP + ApiName으로 설정하고 다른 열 (Timestamp, TotalRequests 등)을 추가 할 수도 있습니다. 또한 스토리지 테이블을 설계하는 데 Azure Storage Table Design Guide을 참조 할 수 있습니다.

하늘색 기능의 경우 특정 IP에 대한 요청 로그를 읽는 데 Storage table bindingsTable Storage SDK을 사용하고 특정 IP에 대한 총 요청 수를 업데이트 할 수 있습니다. 또한, 여기에 비슷한 블로그가 있습니다. here을 참조하십시오.

UPDATE :

다음과 같이 당신은 "모니터링> 진단 로그"에서 파일 시스템 또는 BLOB 저장소에 저장되는 로그를 구성 할 수 있습니다 :

enter image description here

enter image description here

응용 프로그램 로깅 (파일 시스템)의 경우 kudu :

을 통해 로그를 찾을 수 있습니다 응용 프로그램 로그에 대한

enter image description here

(BLOB), 당신은 당신의 로그를 검색 할 Storage Explorer을 활용할 수 있습니다.

+0

"HTTP 트리거"가 메시지를 기록하는 위치는 어디입니까? 나는 그것이 어떤 저장 장치에 그 로그 메시지를 저장할 것이라고 생각한다. –

+0

내 대답을 몇 가지 세부 사항으로 업데이트했습니다. 참조 할 수 있습니다. –

관련 문제