Node.jsでSNSサブスクリプションを登録削除する方法
SNSのサブスクリプションをnode.jsで登録してみます。
Javaだとhttp,httpsプロトコルの場合は「保留中の確認」でフィルターポリシーを設定するとエラーとなるのですが、node.jsだとエラーにならずに無視されて正常終了(保留中の確認)しました。
サブスクリプション登録には、sns.subscribeメソッドを使用します。
引数に渡すパラメータは以下です。
const params = { Protocol: 'https', // http,sqs,lambda,...etc TopicArn: 'arn:aws:sns:ap-northeast-1:xxxxxxxxxxxxx:topicname', // SNSのトピックのARN Attributes: { 'FilterPolicy': '{"notifytype":["LIFE"]}' }, // 設定しても無視されてエラーとならない Endpoint: 'https://confrage-webhooktest.free.beeceptor.com/mockapi', // httpsプロトコルのエンドポイント ReturnSubscriptionArn: true // true or false };
httpsプロトコルなので、サブスクリプションは「保留中の確認」ステータスになります。
このタイミングでエンドポイントURLに送られるリクエストのヘッダ情報に’x-amz-sns-message-type’:’SubscriptionConfirmation’という情報が渡ってくるので、このヘッダ情報の場合に、リクエストボディ.SubscribeURLをクリックします。
エンドポイントがAPI Gateway(public)+Lambda(node.js)の場合は、sns.confirmSubscriptionメソッドに以下パラメータを渡せば「保留中の確認」→「確認済み」にすることが出来ます。
const params = { 'TopicArn':TopicArn, 'Token':Token }
この2つはリクエストボディに含まれています。
以下、エンドポイントがLambdaの場合プログラムで「確認済み」にする例です。
SNSサブスクリプション削除
node.jsでSNSサブスクリプションを削除するには、unsubscribeメソッドを使用します。
メソッドに渡す引数は以下です。
const params = { 'SubscriptionArn':サブスクリプションのARN }
削除するソース例です。
SNSサブスクリプションのサブスクリプションフィルターポリシー設定
「確認済み」ステータスのサブスクリプションに対してサブスクリプションフィルターポリシーを設定します。setSubscriptionAttributesメソッドでフィルターポリシーを設定することが出来ます。
メソッドに渡す引数は以下です。
const params = { AttributeName: 'FilterPolicy', SubscriptionArn: 'サブスクリプションARN', AttributeValue: 'フィルターポリシー' }
以下サブスクリプションフィルターポリシーを設定する例です。
JavaでSNS登録削除を実装する場合は「JavaでSNSサブスクリプションを登録削除する方法」を参照ください。

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント