Node.jsでSNSサブスクリプションを登録削除する方法

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
  };
Class: AWS.SNS — AWS SDK for JavaScript

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
}
Class: AWS.SNS — AWS SDK for JavaScript

削除するソース例です。

SNSサブスクリプションのサブスクリプションフィルターポリシー設定

「確認済み」ステータスのサブスクリプションに対してサブスクリプションフィルターポリシーを設定します。setSubscriptionAttributesメソッドでフィルターポリシーを設定することが出来ます。

メソッドに渡す引数は以下です。

const params = {
  AttributeName: 'FilterPolicy',
  SubscriptionArn: 'サブスクリプションARN',
  AttributeValue: 'フィルターポリシー'
}

以下サブスクリプションフィルターポリシーを設定する例です。

JavaでSNS登録削除を実装する場合は「JavaでSNSサブスクリプションを登録削除する方法」を参照ください。

コメント

タイトルとURLをコピーしました