将AWS Lambda配置为与PHP+;MySQL?
我正在尝试运行将AWS Lambda配置为与PHP+;MySQL?,php,mysql,amazon-web-services,lambda,aws-lambda,Php,Mysql,Amazon Web Services,Lambda,Aws Lambda,我正在尝试运行AWSLambda函数PHPcode和MySQL 为此,我遵循并设法使PHP工作,但当我尝试添加MySQL代码时,我得到了一个错误。错误说明不了多少,它是这样的: "errorMessage": "RequestId: 14a46e73-xxx-xxx-b810-11db18dxxx0 Process exited before completing request" 原木是这样的 START RequestId: 14a46e73-xxx-xxx-b810-11db18dxxx
AWS
Lambda
函数PHP
code和MySQL
为此,我遵循并设法使PHP
工作,但当我尝试添加MySQL
代码时,我得到了一个错误。错误说明不了多少,它是这样的:
"errorMessage": "RequestId: 14a46e73-xxx-xxx-b810-11db18dxxx0 Process exited before completing request"
原木是这样的
START RequestId: 14a46e73-xxx-xxx-b810-11db18dxxx0 Version: $LATEST
2017-02-27T19:08:12.544Z 14a46e73-xxx-xxx-b810-11db18dxxx0 SyntaxError: Unexpected token F
at Object.parse (native)
at ChildProcess.<anonymous> (/var/task/php.js:29:34)
at emitTwo (events.js:87:13)
at ChildProcess.emit (events.js:172:7)
at maybeClose (internal/child_process.js:821:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)
END RequestId: 14a46e73-xxx-xxx-b810-11db18dxxx0
REPORT RequestId: 14a46e73-xxx-xxx-b810-11db18dxxx0 Duration: 293.96 ms Billed Duration: 300 ms Memory Size: 128 MB Max Memory Used: 12 MB
RequestId: 14a46e73-xxx-xxx-b810-11db18dxxx0 Process exited before completing request
正如您所看到的,我刚刚在教程的代码中添加了一个简单的MySQL连接。当我删除该部分时,代码运行良好
在这一点上,我开始怀疑这是否有可能。
任何正确方向的提示都将不胜感激
php.js
process.env['PATH'] = process.env['PATH'] + ':' + process.env['LAMBDA_TASK_ROOT'];
const spawn = require('child_process').spawn;
exports.handler = function(event, context) {
//var php = spawn('php',['helloLambda.php']); //local debug only
var php = spawn('php-7-bin/bin/php',['hello.php']);
var output = "";
//send the input event json as string via STDIN to php process
php.stdin.write(JSON.stringify(event));
//close the php stream to unblock php process
php.stdin.end();
//dynamically collect php output
php.stdout.on('data', function(data) {
output+=data;
});
//react to potential errors
php.stderr.on('data', function(data) {
console.log("STDERR: "+data);
});
//finalize when php process is done.
php.on('close', function(code) {
context.succeed(JSON.parse(output));
});
}
显示lambda处理程序(node.js)代码。这就是错误所在。谢谢@Michael sqlbot,我编辑了我的问题。我在示例中使用相同的代码。我假设代码是正确的,因为在我的测试中,我没有修改代码,我只是尝试连接到MySQL,而不做任何操作。我只是想确保它能起作用。我开始认为这与我编译PHP.Hmmm的方式有关。是的,不明显。您能否在
$json=json\u解码之前成功地回显$data
(…
?如果是这样的话,它看起来像是有效的JSON吗?数小时之后,我设法让它工作起来。看起来,当使用标志编译PHP时——使用mysql时,我做得不对,但没有出现任何错误。我切换到——使用mysqli,它现在可以工作了。我收到了新的错误,但至少问题中的错误消失了。太糟糕了这里没有一种方法可以真正读取错误所说的内容。感谢您的帮助显示lambda处理程序(node.js)代码。这就是错误出现的地方。感谢@Michael sqlbot,我编辑了我的问题。我在示例中使用了相同的代码。我假设代码是正确的,因为在我的测试中,我没有修改代码,我只是尝试连接到MySQL,而不做任何操作。我只是想确保它工作正常。我开始认为它有什么需要改进的按照我编译PHP.Hmmm的方式做。是的,不明显。你能在$json=json\u解码之前成功地echo$data
(…
?如果是这样的话,它看起来像是有效的JSON吗?数小时之后,我设法让它工作起来。看起来,当使用标志编译PHP时——使用mysql时,我做得不对,但没有出现任何错误。我切换到——使用mysqli,它现在可以工作了。我收到了新的错误,但至少问题中的错误消失了。太糟糕了这里没有一种方法可以真正阅读错误所说的内容。谢谢你的帮助
process.env['PATH'] = process.env['PATH'] + ':' + process.env['LAMBDA_TASK_ROOT'];
const spawn = require('child_process').spawn;
exports.handler = function(event, context) {
//var php = spawn('php',['helloLambda.php']); //local debug only
var php = spawn('php-7-bin/bin/php',['hello.php']);
var output = "";
//send the input event json as string via STDIN to php process
php.stdin.write(JSON.stringify(event));
//close the php stream to unblock php process
php.stdin.end();
//dynamically collect php output
php.stdout.on('data', function(data) {
output+=data;
});
//react to potential errors
php.stderr.on('data', function(data) {
console.log("STDERR: "+data);
});
//finalize when php process is done.
php.on('close', function(code) {
context.succeed(JSON.parse(output));
});
}