Вызовите библиотеку Python boto3 из функции AWS Lambda, написанной в Node.js - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть лямбда, написанная на узле.Мне нужно вызвать функцию get_api_key из библиотеки boto3 .Урезанная версия моей лямбда-функции Node.js находится здесь:

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)

Я ожидал увидеть результат console.log в моих журналах CloudWatch для этой функции Lambda, но, похоже, мы не получаем никаких данных из скрипта Python, поскольку нетрегистрация сделана.

Я делаю то, что пытаюсь сделать правильно?В функции Lambda есть настройка, которая говорит, что она написана в Node.js, так что я не знаю, будет ли причиной того, что тот факт, что я случайно сделал скрипт Python в том же каталоге, что и функция Lambda, вызовет проблему?

Я рад за альтернативу этому, если это может быть проще.

1 Ответ

0 голосов
/ 07 декабря 2018

AWS Lambda изначально поддерживает несколько языков, включая JavaScript и Python.Вам не нужно использовать библиотеку boto3 (что потребует от вас написания на Python).Вы можете использовать AWS JavaScript SDK.

Вот пример получения ключа API из API Gateway:

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;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...