0

私はC#で "HTTP Trigger"を持つ青空関数を持っています。私は、 "HTTPトリガ"を使用して空の関数を呼び出すと、メッセージをキューストレージに記録します。C#-Azure関数:「HTTPトリガ」の空白関数を呼び出すときにメッセージをキューストレージに記録する方法は?

"HTTPトリガ"が呼び出されたときには、他のどこかでログメッセージ(log.info( "C#Http trigger ....");)をログに記録しますが、このログメッセージにipaddress ( "C#Queue trigger"、ipaddress))を使用して、クライアントのipaddressをブロックできるように、ユーザーが試行回数を超えてapiへの呼び出しを行った場合次の日にもう一度私はクラウドのタイマートリガを実行しているキューストレージからすべてのIPアドレスを取って、クライアントのIPアドレスをブロック解除できます。

これを達成する可能性はありますか、それ以外の方法でキューストレージ以外のipaddressを格納する方法はありますか?

答えて

1

あなたが書いたものから、ユーザーにAPIを提供してアクセスを制限したいと思っていると思います。これを実現するには、Azure API Management(https://azure.microsoft.com/en-us/services/api-management/)を使用することをお勧めします。さまざまな基準に基づいてAPIエンドポイントへのユーザーのアクセスを制限するアクセス見積もりを提供します。また、ユーザー管理、支払い、定期購読、セキュリティなど、さらに多くの機能を提供します。

+0

あなたのIPに基づいてユーザをブロックしたい場合(動的IPアドレスのために非常に危険です)、このIPアドレスの最後の「オーバーフロー」アクセスを保存し、最後のアクセスが過去24時間であるかどうかを確認するだけです...保存するには、DocumentDB、CosmosDB、またはRedisCacheを使用できます。たぶんAzure Storageだが、私は以前のものと一緒に行くだろう。 – sebastian87

0

HTTPトリガーを使用してAzureの機能の下で、クライアント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を参照してください。

私は、ユーザーが試みと次の日の数を超えたAPIへの呼び出しを行う場合は、再度、私は雲の中にタイマートリガーを実行しているキュー・ストレージからすべてのIPアドレスを取ることによって、クライアントのIPアドレスのブロックを解除することができ、その日のためにクライアントのIPアドレスをブロックすることができるように。

特定のIPのアクセスログを格納するためにテーブルストレージを使用することをお勧めします。 PartitionKey列を日付に設定し、RowKeyClientIPまたはClientIP + ApiNameに設定し、他の列(タイムスタンプ、TotalRequestsなど)を追加することもできます。また、ストレージテーブルの設計については、Azure Storage Table Design Guideを参照してください。

azure関数の場合、特定のIPの要求ログを読み取って特定のIPの合計要求数を更新するには、Storage table bindingsTable Storage SDKを使用できます。さらに、ここには同様のブログがあります。hereを参照してください。

UPDATE:

次のようにして、 "MONITORING>診断ログ" の下で、ファイル・システムまたはBLOBストレージに格納するログを設定できます。

enter image description here

enter image description here

アプリケーションログ(ファイルシステム)の場合、ログはkudu

アプリケーションロギングの

enter image description here

(ブロブ)、あなたはあなたのログを取得するためにStorage Explorerを活用できます。

+0

"Http trigger"はメッセージを記録しますか?私はそれがいくつかのストレージにログメッセージを保存するかもしれないと思う。 –

+0

私はいくつかの詳細で私の答えを更新しました、あなたはそれを参照することができます。 –

関連する問題