InvalidParameterValue:域在 aws lambda 中的 Request.extractError 处包含控制或空格

Ada*_*cki 5 amazon-web-services node.js aws-lambda

我在 ses.SendEmail 方法中面临一个奇怪的问题。当我使用测试数据时,一切都会按预期工作,并且电子邮件会发送给我,但是当在 dynamoDB 中添加新条目来触发将发送电子邮件的 lambda 函数时,我得到一个异常:

\n

InvalidParameterValue:域包含控件或空格\nat Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/query.js:50:29)\nat Request.callListeners (/var/runtime/node_modules/aws) -sdk/lib/sequential_executor.js:106:20)\nat Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:78:10)\nat Request.emit (/var/runtime /node_modules/aws-sdk/lib/request.js:688:14)\nat Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)\nat AcceptorStateMachine.runTo ( /var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)\nat /var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10\nat 请求。(/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)\nat 请求。(/var/runtime/node_modules/aws-sdk/lib/request.js:690:12)\nat Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:116:18) { \n代码: 'InvalidParameterValue',\n时间: 2020-08-28T13:09:31.549Z,\nrequestId: '233eb2c8-9097-4aab-884f-ecd20260a473',\nstatusCode: 400,\n可重试: false,\nretryDelay: 38.70417411 485463 \n}

\n
console.log('Loading function');\nvar aws = require('aws-sdk');\nvar ses = new aws.SES({region: 'eu-west-2'});\n\nexports.handler = (event, context) => {\n    //console.log('Received event:', JSON.stringify(event, null, 2));\n    event.Records.forEach((record) => {\n        if(record.eventName == 'INSERT')\n        {\n            console.log(record.eventID);\n            console.log(record.eventName);\n            console.log('DynamoDB Record: %j', record.dynamodb);\n            \n            console.log(record.dynamodb.NewImage.email.S);\n            \n            var email = record.dynamodb.NewImage.email.S.trim();\n            console.log("About send an email to " + email);\n            var params = {\n            Destination: {\n                ToAddresses: [email]\n            },\n            Message: {\n                Body: {\n                    Text: { Data: "test"\n                        \n                    }\n                    \n                },\n                \n                Subject: { Data: "Thank you for your interest."\n                    \n                }\n            },\n            Source: "***@***.com"\n        };\n        \n            ses.sendEmail(params, function (err, data) {\n            \n            if (err) {\n                console.log(err);\n            } else {\n                \n                console.log(data);\n            }\n        });\n        }\n    });\n    \n    \n};\n
Run Code Online (Sandbox Code Playgroud)\n

在日志中,我可以看到电子邮件的格式正确 - 与有效测试的有效负载完全相同。 \nNewImage 对象的一部分(我混淆了一封没有任何空格且仅包含字母数字值的电子邮件(出于隐私原因)。

\n

"NewImage": {\n"dateTime": {\n"S": "8/28/2020 1:09:29 PM"\n},\n"firstName": {\n"S": "亚当\xe2\x80\x8b"\n},\n"姓氏": {\n"S": "b\xe2\x80\x8b"\n},\n"id": {\n"S": "815501b1-3a94-4e65-86b1-ac59ac0a26f2"\n},\n"电子邮件": {\n"S": "***@gmail.com\xe2\x80\x8b"\n}\n}

\n