Как предоставить zip-файл для загрузки из экземпляра AWS EC2 под управлением Ubuntu? - PullRequest
0 голосов
/ 30 марта 2020

Я создал приложение Flask, которое может загружать несколько файлов в экземпляр EC2. Код моего приложения flass:

import os
from flask import Flask, request, render_template, url_for, redirect
import flask
#Initialize the app by adding:

app = Flask(__name__)

#Add the below line to create the home page route:

@app.route("/")
def fileFrontPage():
    return render_template('index.html')


@app.route("/handleUpload", methods=['POST'])
def handleFileUpload():
    files = flask.request.files.getlist("photo")
    protocol = 'pscp -i'
    key_loc = ' key_loc'
    upload_dir = ' dir'
    ec2_instance = ' instance_name'
    remote_dir = ':/home/RAW_Image'
    for file in files:
        arg = protocol+key_loc+upload_dir+file.filename+ec2_instance+remote_dir
        os.system(arg)
    return redirect(url_for('fileFrontPage'))

if __name__ == '__main__':
    app.run()

После завершения загрузки программа на экземпляре EC2 сожмет файлы и добавит их в новый каталог. Новый каталог будет сжат и должен быть доступен для загрузки после нажатия кнопки загрузки (код для этого еще не написан). После нажатия кнопки загрузки открывается другая веб-страница с возможностью загрузки.

Это то, что у меня есть для создания zip-файла и:

import paramiko
k = paramiko.RSAKey.from_private_key_file("key_location")
c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
print("connecting")
c.connect(hostname="name", username="ubuntu", pkey=k)
print("connected")
commands = ["zip -r /home/Image.zip /home/RAW_Image", "scp username@remote:/file/to/send /where/to/put"]
for command in commands:
    print("Executing {0}".format(command))
    stdin , stdout, stderr = c.exec_command(command)
    print(stdout.read())
    print("Errors")
    print(stderr.read())
c.close()

Но scp дает Host key verification failed ошибка

Я что-то не так делаю? Есть ли альтернатива этому?

Спасибо.

Редактировать 1: я запускаю код на моем персональном компьютере. Я использую s sh, потому что я хочу запустить распознавание изображений для загруженных изображений, и я планировал выполнить сценарий bash, который запускает набор сценариев Python после завершения загрузки.

...