Вариант использования
Я хочу подписаться на электронную почту на тему SNS, и мне нужно подтвердить ее программно, а не вручную нажимать на ссылку подтверждения.
Чтоя сделал
Это обычно для подтверждения, я использую метод SNS confirmSubscription
, который будет принимать token
в качестве параметра.Я могу получить токен, вызвав метод SNS subscribe
, передав протокол как email-json
.Для этого я получил следующее сообщение подписки в конечной точке.
{
"Type" : "SubscriptionConfirmation",
"MessageId" : "xxx-9160-49a3-960f-xx",
"Token" : "2336412f37fb687adfaf",
"TopicArn" : "arn:aws:sns:ap-south-1:xx-xx",
"Message" : "You have chosen to subscribe to the topic arn:aws:sns:ap-south-1:xx-xx.\nTo confirm the subscription, visit the SubscribeURL included in this message.",
"SubscribeURL" : "https://sns.ap-south-1.amazonaws.com/?Action=xx&TopicArn=arn:aws:sns:ap-south-1:477530015769:xx-xx&Token=2336412f37fb6872",
"Timestamp" : "2019-03-21T08:34:26.597Z",
"SignatureVersion" : "1",
"Signature" : "bIwq8Q92Yvrn8bBrIDQJ2chc5y/5IPAZPPR4roZ6WfK7kaE0QTbJpqAmHMH0sHL4aoyTrapLwX4e6HaEd6nGny8EAWj5wA2JvFCrO9BFQu",
"SigningCertURL" : "https://sns.ap-south-1.amazonaws.com/SimpleNotificationService-xx.pem"
}
Что я хочу
Как можно извлечь значение token
из вышеуказанного json,Это ниже лямбда, которую я использую для программного подтверждения подписчика sns.
const AWS = require('aws-sdk');
var sns = new AWS.SNS();
var snsconfirm= {
Token: 'xx', /* required */ -->How can i able to retrieve the token value from the endpoint json.
TopicArn: 'arn:aws:sns:ap-south-1:xxx:xx-xxx', /* required */
AuthenticateOnUnsubscribe: 'true'
};
var snsparams = {
Protocol: 'email-json', /* required */
TopicArn: 'arn:aws:sns:ap-south-1:xx:xx-xx', /* required */
Endpoint: 'abc@xyz.com'
};
exports.handler = async (event) => {
// TODO implement
try {
const snsrespone = await sns.subscribe(snsparams).promise();
const confirmsub = await sns.confirmSubscription(snsconfirm).promise();
} catch (err) {
console.log(err.message);
throw err;
}
};
Любая помощь приветствуется Спасибо