Недавно мне удалось смоделировать это в автономном режиме, используя следующий код / config
serverless.yml
functions:
########## SNS SUBSCRIPTIONS ##########
newUser:
memorySize: 128
timeout: 120
handler: src/sns-subscribers/newUser.handler
name: sns-newUser-dev
events:
- sns:
arn: arn:aws:sns:ap-southeast-2:13XXXXXXXXXX:new-user-dev
plugins:
- serverless-offline-sns
- serverless-offline
custom:
serverless-offline-sns:
port: 4002 # a free port for the sns server to run on
debug: true
# host: 0.0.0.0 # Optional, defaults to 127.0.0.1 if not provided to serverless-offline
# sns-endpoint: http://127.0.0.1:4002 # Optional. Only if you want to use a custom endpoint
accountId: 13XXXXXXXXXX # Optional
Вот код, который запускает мою автономную лямбду
trigger.js
const AWS = require('aws-sdk');
const sns = new AWS.SNS({
endpoint: 'http://127.0.0.1:4002',
region: 'ap-southeast-2',
});
sns.publish(
{
Message: 'new user!',
MessageStructure: 'json',
TopicArn: `arn:aws:sns:ap-southeast-2:13XXXXXXXXXX:new-user-dev`,
},
() => console.log('new user published'),
);
нормально запустить триггер
node trigger.js
Примечание:
В вашем примере способ объявления подписки sns еще не поддерживается AFAIK.
events:
- sns: test-topic # try using ARN and sending this to the next line
Вы можете проверить эту проблему github для получения дополнительной информации и обновлений.