Как обслуживать REST API в Google Cloud? - PullRequest
0 голосов
/ 26 февраля 2020

Я создал REST API для своего компьютера с Ubuntu в Google Cloud. Как я могу подключить этот API с IP-адресом publi c?

В приведенном ниже коде я загружаю файл изображения в формате multipart / form-data.

from flask import Flask, url_for, send_from_directory, request
import logging, os
# from werkzeug import secure_filename
import werkzeug
app = Flask(__name__)
file_handler = logging.FileHandler('server.log')
app.logger.addHandler(file_handler)
app.logger.setLevel(logging.INFO)

PROJECT_HOME = os.path.dirname(os.path.realpath(__file__))
UPLOAD_FOLDER = '{}/uploads/'.format(PROJECT_HOME)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER


def create_new_folder(local_dir):
    newpath = local_dir
    if not os.path.exists(newpath):
        os.makedirs(newpath)
    return newpath

@app.route('/Classifier01', methods = ['POST'])
def api_upload():


    app.logger.info(PROJECT_HOME)
    if request.method == 'POST':
      app.logger.info(app.config['UPLOAD_FOLDER'])

      #get image and save in ../uploads
      img = request.files['image']
      img_name = werkzeug.secure_filename(img.filename)
      create_new_folder(app.config['UPLOAD_FOLDER'])
      saved_path = os.path.join(app.config['UPLOAD_FOLDER'], img_name)
      app.logger.info("saving {}".format(saved_path))
      img.save(saved_path)

      #do some processing here

      return "I got your image"
    else:
      return "Where is the image?"

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

Это начинается с 127.0.0.1: 5000 как сделать это на публике c IP.

1 Ответ

0 голосов
/ 27 февраля 2020

Сначала запустите ваше приложение для прослушивания интерфейса вашей виртуальной машины -> запустите его следующим образом app.run(host='0.0.0.0')

Затем у вас есть 2 решения

  • Используйте публичные c IP вашей виртуальной машины, чтобы достичь его. Не забудьте открыть для этого правильное правило брандмауэра (диапазон IP-адресов источника = 0.0.0.0/0, порт TCP 5000). Но это не идеально. Вы можете обновить свое приложение для прослушивания через порт 80 для более стандартного порта API на inte rnet. Вы также можете подключить nginx к вашей виртуальной машине. На нем вы также можете развернуть сертификат SSL и разрешить доступ к вашему сервису через порт 443 в HTTPS. pff, много работы
  • Для этого вы можете использовать балансировщик нагрузки HTTP (s) . SSL автоматически управляется. Просто создайте бэкэнд со своей виртуальной машиной (NEG), проверьте свое здоровье и настройте внешний интерфейс. Это самый простой способ!
...