我正在使用Serverless Framework &无服务器离线插件在本地开发无服务器web应用程序,并尝试测试以下过程。
serverless.yml
plugins:
- serverless-offline
- serverless-offline-sns
functions:
publisher:
handler: publisher.main
events:
- http:
path: publish
method: post
cors: true
authorizer: aws_iam
subscriber:
handler: subscriber.main
events:
- sns: test-topic我在AWS上测试了它,它成功了,但是我不知道如何在本地测试它。
sns目前不支持lambda的订阅。
脱机sns支持http、https和sqs订阅。此时不支持电子邮件、电子邮件-json、sms、应用程序和lambda协议。https://www.npmjs.com/package/serverless-offline-sns
我认为这是无服务器和事件驱动架构的一个非常常见的用例。如何在本地环境中测试?
发布于 2019-01-07 13:41:58
最近,我能够使用下面的代码/配置来脱机地模拟这个过程
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下面是触发我的脱机lambda的代码
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订阅的方式还不支持。
events:
- sns: test-topic # try using ARN and sending this to the next line您可以查看此github问题以获得更多信息和更新。
https://stackoverflow.com/questions/50188932
复制相似问题