Невозможно опубликовать в теме SNS, получая MessageId как неопределенный - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть довольно простой фрагмент кода для проверки публикации сообщений в SNS от Node Lambda:

exports.handler = async () => {
    const AWS = require('aws-sdk');
    AWS.config.update({region: 'us-east-2'});
    let result;
    try {
        result = await new AWS.SNS({apiVersion: '2010-03-31'}).publish({
            TopicArn: 'arn:aws:sns:us-east-2:99999999999:MyTopic',
            Message: 'Body of Message 1',
            Subject: 'Message 1'
        });
    } catch (err) {
        console.error('xxxxxxxx', err, err.stack);
        throw err;
    }
    console.info('>>>>>> ' + result.MessageId);
}

Однако все, что я неоднократно получаю в журналах, это >>>>>> undefined, и, конечно, сообщенияне публикуются (потому что очередь, подписанная на это, всегда пуста). Я могу подтвердить, что функция Lambda имеет соответствующие разрешения. Что я делаю не так?

1 Ответ

1 голос
/ 04 ноября 2019

Вы не конвертируете publish в обещание. Это означает, что result = await не будет работать должным образом.

Прочтите мой старый ответ для более полного понимания: Как использовать Async и Await с AWS SDK Javascript

TLDR;

result = await new AWS.SNS({apiVersion: '2010-03-31'}).publish({
            TopicArn: 'arn:aws:sns:us-east-2:99999999999:MyTopic',
            Message: 'Body of Message 1',
            Subject: 'Message 1'
        }).promise(); // !!!
...