从Node.js中编写的AWS Lambda函数调用Python boto3库
我有一个lambda,用Node写的。我需要从中调用从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
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请参阅