【发布时间】:2021-04-10 18:44:42
【问题描述】:
我向 Amazon SNS 发布一条消息,供 lambda 函数读取。
在我的测试中,我使用 2 种方法来调用 lambda 函数;
- AWS 控制台 Lambda > 函数 > 22-generic-subscription
- 使用 AWS CLI
$> npm run invoke-test-sns
package.json 包含的地方
"scripts":
{"invoke-test-sns": "aws sns publish --message file://message.txt --subject TestMsg --topic-arn ${npm_package_SNS_srcARN}"
}
message.txt;
{
"test": "cli",
"length": "20",
"width": "6"
}
显然代码没有改变,但是两次调用的结果出乎意料,我已经减少了代码以突出差异;
代码;
/*
** 22-generic-subscription
*/
var AWS = require("aws-sdk");
console.log('Loading function');
// START
let area;
exports.handler = async (event) => {
try {
var jMsg = event.Records[0].Sns.Message
console.log('messageConsole: 1-');
var messageConsole = JSON.parse(JSON.stringify(jMsg));
console.log('messageConsole: ', messageConsole);
console.log('messageConsole: ', messageConsole.test);
console.log('messageCLI: 1-');
var messageCLI = JSON.parse(jMsg);
console.log('messageCLI: ', messageCLI);
console.log('messageCLI: ', messageCLI.test);
console.log('messageCLI.stringify: 2-');
var messageCLI2 = JSON.parse(JSON.stringify(jMsg));
console.log('messageCLI2: ', messageCLI2);
console.log('messageCLI2: ', messageCLI2.test);
}
catch (err) {
console.log(err);
return err;
}
return area;
};
从控制台设置测试 - 选择 AWS Console > Configure Test Event > Amazon SNS Test Notification 并通过复制和编辑 message.txt 的内容来更改 Message 元素,如下所示;
"Message": {
"test": "console",
"length": "10",
"width": "5"
}
我更改了测试值以指示如何调用测试,即控制台或 cli。
这是结果;
控制台测试 1
START RequestId:2b671ef5-06f1-45f2-9501-e797997eb2c0 版本:$LATEST 2021-01-02T23:12:03.891Z 未定义的信息加载功能 2021-01-02T23:12:03.896Z 2b671ef5-06f1-45f2-9501-e797997eb2c0 信息消息控制台:1- 2021-01-02T23:12:03.898Z 2b671ef5-06f1-45f2-9501-e797997eb2c0 信息消息控制台:{测试:'控制台',长度:'10',宽度:'5'} 2021-01-02T23:12:03.898Z 2b671ef5-06f1-45f2-9501-e797997eb2c0 信息消息控制台:控制台 2021-01-02T23:12:03.898Z 2b671ef5-06f1-45f2-9501-e797997eb2c0 信息消息CLI:1- 2021-01-02T23:12:03.898Z 2b671ef5-06f1-45f2-9501-e797997eb2c0 信息
语法错误:位置 1 处 JSON 中的意外标记 o END RequestId: 2b671ef5-06f1-45f2-9501-e797997eb2c0
CLI 测试 2
开始请求 ID:c5e4a0f3-50ac-4031-af0e-4dfb581ccb4d 版本:$LATEST 2021-01-02T23:14:24.944Z c5e4a0f3-50ac-4031-af0e-4dfb581ccb4d 信息消息控制台:1- 2021-01-02T23:14:24.944Z c5e4a0f3-50ac-4031-af0e-4dfb581ccb4d 信息消息控制台: { “测试”:“cli”, “长度”:“20”, “宽度”:“6” }2021-01-02T23:14:24.944Z c5e4a0f3-50ac-4031-af0e-4dfb581ccb4d 信息消息控制台:未定义 2021-01-02T23:14:24.944Z c5e4a0f3-50ac-4031-af0e-4dfb581ccb4d 信息消息CLI:1- 2021-01-02T23:14:24.944Z c5e4a0f3-50ac-4031-af0e-4dfb581ccb4d 信息消息CLI:{测试:'cli',长度:'20',宽度:'6'} 2021-01-02T23:14:24.944Z c5e4a0f3-50ac-4031-af0e-4dfb581ccb4d 信息消息CLI: cli 2021-01-02T23:14:24.944Z c5e4a0f3-50ac-4031-af0e-4dfb581ccb4d 信息消息 CLI.stringify: 2- 2021-01-02T23:14:24.944Z c5e4a0f3-50ac-4031-af0e-4dfb581ccb4d 信息消息 CLI2:
{ “测试”:“cli”, “长度”:“20”, “宽度”:“6” } 2021-01-02T23:14:24.944Z c5e4a0f3-50ac-4031-af0e-4dfb581ccb4d 信息消息CLI2:未定义 END RequestId: c5e4a0f3-50ac-4031-af0e-4dfb581ccb4d
抱歉,可能不清楚控制台测试 1 - CLI 代码失败和 CLI 测试 2 - 控制台代码失败。 有人可以解释为什么结果不同,以及无论如何调用测试,我如何编写代码以相同的方式运行?
【问题讨论】:
标签: node.js amazon-sns