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(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^

コメント