ざっくりとした質問ですが、Amazon SNS でのAPNsへのプッシュ通知をlambdaで実装した場合、大量件数の通知をする場合にAPNsからDoS攻撃と判定される事はあり得ますか?
下記制約等です
- lambdaで実装されるのは、以下のようなサンプルの実装とします
- 1つのlambdaの起動につき、1回の処理は1s~1mの間で終了するとします
- 1つのlambdaで通知するエンドポイントの数は500~1000とします
- lambdaは常に100~1000の間で同時起動されます
- 2,3の処理が、1日に2,30以上繰り返されます
以下、awsからSNSでのプッシュ通知のNode.jsのサンプルです。
これにデバイストークン取得部分とfor文での繰り返し処理が追加されたような感じで考えていただけると。
nodejs:
1https://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v2/developer-guide/sns-examples-publishing-messages.html 2 3// Load the AWS SDK for Node.js 4var AWS = require('aws-sdk'); 5// Set region 6AWS.config.update({region: 'REGION'}); 7 8// Create publish parameters 9var params = { 10 Message: 'MESSAGE_TEXT', /* required */ 11 TopicArn: 'TOPIC_ARN' 12}; 13 14// Create promise and SNS service object 15var publishTextPromise = new AWS.SNS({apiVersion: '2010-03-31'}).publish(params).promise(); 16 17// Handle promise's fulfilled/rejected states 18publishTextPromise.then( 19 function(data) { 20 console.log(`Message ${params.Message} sent to the topic ${params.TopicArn}`); 21 console.log("MessageID is " + data.MessageId); 22 }).catch( 23 function(err) { 24 console.error(err, err.stack); 25 });
以下、Apple公式のAPNSのベストプラクティス
https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html 接続を管理するためのベストプラクティス 複数の通知にわたってAPNとの接続を開いたままにします。接続を繰り返し開閉しないでください。APNは、迅速な接続と切断をサービス拒否攻撃として扱います。長期間アイドル状態になることがわかっている場合を除いて、接続を開いたままにしておく必要があります。たとえば、ユーザーに通知を1日1回だけ送信する場合は、毎日新しい接続を使用することをお勧めします。 送信するプッシュリクエストごとに新しいプロバイダー認証トークンを生成しないでください。トークンを取得したら、トークンの有効期間(1時間)の間、すべてのプッシュリクエストに引き続きトークンを使用します。 APNサーバーへの複数の接続を確立して、パフォーマンスを向上させることができます。多数のリモート通知を送信する場合は、それらを複数のサーバーエンドポイントへの接続に分散します。これにより、単一の接続を使用する場合と比較して、リモート通知をより速く送信できるようになり、APNがより速く配信できるようになるため、パフォーマンスが向上します。 プロバイダー証明書が取り消された場合、またはプロバイダートークンの署名に使用しているキーが取り消された場合は、APNへの既存の接続をすべて閉じてから、新しい接続を開きます。 HTTP / 2PINGフレームを使用して、接続の状態を確認できます。
SNS詳しくなく、
複数の通知にわたってAPNとの接続を開いたままにします。接続を繰り返し開閉しないでください。
という部分が、lambda+SNSの構成で引っかからないのかどうかがいまいちよくわかっておらず、誰か詳しい方いたら教えてください。
何か足りないところあれば補足します。
よろしくお願いします。
補足
APNsの接続管理の問題でlambdaの使用を取りやめた事例1つだけ見つけました
https://www.schibsted.pl/blog/how-we-deliver-millions-of-push-notifications-in-10-seconds/
あなたの回答
tips
プレビュー