gpt4 book ai didi

python - 从 AWS lambda 上的 nodejs 调用 python - 权限被拒绝

转载 作者:搜寻专家 更新时间:2023-11-01 00:07:09 24 4
gpt4 key购买 nike

我可以使用以下函数从 AWS Lambda 上的 nodejs 调用我的 python。但是,因为我需要特定的 python 库,所以我在 env 目录中创建了一个 virutalenv。我把所有东西都压缩起来然后推到 Lambda。但是,当我尝试从虚拟目录调用 python 时,出现了权限被拒绝的错误。

我试图在调用 python 之前修改 Lambda 上的 chmod 权限,但得到了不允许操作。我怎样才能让它运行?

console.log('Loading event');

var exec = require('child_process').exec;

exports.handler = function(event, context) {

exec('env/bin/python district.py \'' + JSON.stringify(event) + '\'', function(error, stdout) {
var obj = stdout.toString();
context.done(error, obj);
});
};

这是错误:

{
"errorMessage": "Command failed: /bin/sh: env/bin/python: Permission denied\n",
"errorType": "Error",
"stackTrace": [
"",
"ChildProcess.exithandler (child_process.js:658:15)",
"ChildProcess.emit (events.js:98:17)",
"maybeClose (child_process.js:766:16)",
"Process.ChildProcess._handle.onexit (child_process.js:833:5)"
]
}

最佳答案

该错误很可能表示 python.exe 没有设置可执行位。但是请注意,即使您设置了 x 位,它也不会起作用:.exe 文件是 Windows 可执行文件,它们不会起作用。

Note, this virtual env was created in windows. I also attempted from Linux in the i.e. env/bin/python district.py with no help.

env/bin/python 是正确的命令。如果您仍然收到 Permission Denied 错误,则表示文件 python 缺少可执行位。

在 AWS Lamba 运行时环境中,您不能更改文件的权限,也不能更改用户,因此您必须设置可执行位(或您需要的任何其他权限位)创建 .zip 存档时

总结:

  1. 在 Linux 机器上,使用 Linux 可执行文件。
  2. 在创建存档之前设置可执行文件的可执行位。

关于python - 从 AWS lambda 上的 nodejs 调用 python - 权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32015065/

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