gpt4 book ai didi

node.js - AWS Lambda Node 肥皂函数(无服务器框架)

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:39 25 4
gpt4 key购买 nike

我正在使用 node-soap 库测试对 SOAP 服务的调用。这作为独立的 Node.js 应用程序运行良好,并且 SOAP 服务响应,但是当我将相同的代码打包为无服务器 AWS lambda 函数(使用无服务器框架,但也直接在 AWS lambda 中执行)时,它似乎没有创建 SOAP 客户端。

对于为什么会发生这种情况有什么想法吗?

export async function main(event, context) {
var soap = require('soap');
var url = 'https://service.blah.co.uk/Service/Function.asmx?wsdl';

var soapOptions = {
forceSoap12Headers: true
};

var soapHeader = {
'SOAPAction': 'http://www.blah.co.uk/Services/GetToken'
};

var params = {
xmlMessage: message
};

console.log(JSON.stringify(params));

soap.createClient(url, soapOptions, function (err, client) {
//the serverless AWS lambda function never reaches this point (deployed and invoked locally)

console.log("In create client")
if (err) console.log(err);
client.addSoapHeader(soapHeader);
client.GetToken(params, function (err, data) {
console.log(data);
});
});
}

最佳答案

我使用 async/await 创建了一个非常小的工作示例。只需调用soap.createClientAsync(url),而不是使用旧式回调方法。

代码如下:

'use strict';
const soap = require('soap');
module.exports.hello = async (event, context) => {

const url = 'http://www.thomas-bayer.com/axis2/services/BLZService?wsdl';

const client = await soap.createClientAsync(url)

console.log(client)

return {
statusCode: 200,
message: 'It works!'
}
}

这是日志(部分):

enter image description here

编辑:函数的输出(通过AWS的Lambda控制台)

enter image description here

编辑 2 - 真正的问题

检查上面有关 async/await 的链接。 async 关键字将异步执行并返回 Promise。由于它是一个异步函数,因此您的 Lambda 在实际执行回调之前就会被终止。

使用 async/await 会让你的代码更简单,并且让你不再为这样的小事情绞尽脑汁。

关于node.js - AWS Lambda Node 肥皂函数(无服务器框架),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54945218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com