Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Node.js中编写的AWS Lambda函数调用Python boto3库_Python_Node.js_Amazon Web Services - Fatal编程技术网

从Node.js中编写的AWS Lambda函数调用Python boto3库

从Node.js中编写的AWS Lambda函数调用Python boto3库,python,node.js,amazon-web-services,Python,Node.js,Amazon Web Services,我有一个lambda,用Node写的。我需要从中调用get\u api\u key函数。my Node.js Lambda函数的精简版本如下: exports.handler = function(input, context) { const spawn = require("child_process").spawn; const pythonProcess = spawn('python',["pythonScript.py", "API_KEY_123"]); pyth

我有一个lambda,用Node写的。我需要从中调用
get\u api\u key
函数。my Node.js Lambda函数的精简版本如下:

exports.handler = function(input, context) {
   const spawn = require("child_process").spawn;
   const pythonProcess = spawn('python',["pythonScript.py", "API_KEY_123"]);
   pythonProcess.stdout.on('data', (data) => {
      console.log("DATA FROM PYTHON: ", data);
   });
};
我从中使用了此功能。我的Python脚本如下所示:

import sys
import boto3

#this is the client
client = boto3.client('apigateway')

apiKey = client.get_api_key(apiKey=sys.argv[1], includeValue=True)
print(apiKey)
我希望在我的CloudWatch日志中看到这个Lambda函数的
console.log
结果,但是我们似乎没有从Python脚本中获得任何数据,因为没有进行任何日志记录

我在做我想正确做的事情吗?Lambda函数上有一个设置,表示它是在Node.js中编写的,因此我不知道我在Lambda函数所在的同一目录中随机编写了一个Python脚本这一事实是否会导致问题


我很高兴能找到一个更容易的替代方案

AWS Lambda本机支持多种语言,包括JavaScript和Python。您不需要使用boto3库(这需要您用Python编写)。您可以使用AWS JavaScript SDK

以下是从API网关获取API密钥的示例:

const AWS = require("aws-sdk");
const apigateway = new AWS.APIGateway();

exports.handler = async (event) => {

    var params = {
        apiKey: "ab92ke1p70",
        includeValue: true
    };

    const apikey = await apigateway.getApiKey(params).promise();
    console.log("apikey:", apikey);
    return apikey;
};

你能解释一下为什么你需要让API网关从boto3而不是AWS JavaScript SDK获取API_key()调用吗?亚马逊有人把我指给boto3,所以我认为我必须使用它!但是如果我需要使用自定义脚本呢?我试图使用外部python库,但在运行它时遇到了问题。如何安装依赖项?@javiergarval构建Python部署包在如何在Node.js lambda中安装Python依赖项中进行了描述?我正在使用Node.js,希望使用自定义python脚本;我使用node的child_进程生成脚本,但没有得到期望的响应。相反,它需要一个库,我无法通过ssh安装它。我试着用你给我的文档来部署它,创建了一个.zip文件,其中包含了我需要的所有依赖项,但我不知道如何使用$aws lambda update函数代码--function name python37--zip文件来部署它fileb://function.zip@javiergarval从另一个运行时(Node.js)启动一个运行时(Python)是不寻常的在Lambda,但我会在。您可能需要在生成子进程之前设置一些环境变量(包括PYTHONPATH?),以便Python知道您部署的包在哪里。@user345602请参阅