我正在使用无服务器框架&无服务器离线插件,用于在本地开发无服务器的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上测试了它并且它有效,但我不知道如何在本地测试它。
serverless-offline-sns目前不支持lambda订阅。
serverless-offline-sns支持http,https和sqs订阅。目前不支持email,email-json,sms,application和lambda协议。 https://www.npmjs.com/package/serverless-offline-sns
我认为这是无服务器的一个非常常见的用例。事件驱动的架构。你如何在当地环境中测试这个?
答案 0 :(得分:0)
我最近能够使用以下代码/配置对此离线进行仿真
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
注意: 在您的示例中,尚未支持AFAIK声明sns订阅的方式。
events:
- sns: test-topic # try using ARN and sending this to the next line
您可以选中此Move to Azure Resource Manager REST APIs for Azure SQL Database以获取更多信息和更新。