Запуск python скрипта через AWS лямбду на EC2 - PullRequest
0 голосов
/ 11 апреля 2020

Я использую пакет paramiko в лямбде, чтобы запустить скрипт python на EC2 и получить вывод обратно в лямбду. У меня сложилось впечатление, что когда я запускаю сценарий python из лямбды, тогда сценарий исполняется в EC2 и возвращает вывод в лямбду. Но этого не происходит. Я установил pandas на свой EC2 и запустил простой python скрипт с импортом pandas. Лямбда выдает ошибку, что pandas модуль не найден. Но зачем лямбде нужен pandas модуль. Разве он не должен просто брать вывод из EC2?

Ниже моя лямбда-функция

import boto3
import paramiko

def lambda_handler(event, context):
    # boto3 client
    client = boto3.client('ec2')
    s3_client = boto3.client('s3')

    # getting instance information
    describeInstance = client.describe_instances()


    hostPublicIP=["59.53.239.242"]
    # fetchin public IP address of the running instances
    # for i in describeInstance['Reservations']:
    #     for instance in i['Instances']:
    #         if instance["State"]["Name"] == "running":
    #             hostPublicIP.append(instance['PublicIpAddress'])

    print(hostPublicIP)

    # downloading pem filr from S3
    s3_client.download_file('paramiko','ec2key.pem', '/tmp/file.pem')

    # reading pem file and creating key object
    key = paramiko.RSAKey.from_private_key_file("/tmp/file.pem")
    # an instance of the Paramiko.SSHClient
    ssh_client = paramiko.SSHClient()
    # setting policy to connect to unknown host
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    host=hostPublicIP[0]
    print("Connecting to : " + host)
    # connecting to server
    ssh_client.connect(hostname=host, username="ubuntu", pkey=key)
    print("Connected to :" + host)

    # command list
    commands = ["python3 test.py"]

    # executing list of commands within server
    for command in commands:
        print("Executing {command}")
        stdin , stdout, stderr = ssh_client.exec_command(command)
        print(stdout.read())
        print(stderr.read())

    return {
        'statusCode': 200,
        'body': json.dumps('Thanks!')
    }

Ниже мой test.py

import pandas
result = 2+2
print(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...