Express сервер не работает на маршруте, вызывающем s3.putObject - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть функция, которая запускается через сервер express JS. Функция должна получить список объектов данных и сохранить массив, который затем помещается в корзину Amazon s3. Пока я могу получить данные и pu sh на s3 без проблем.

Проблема в том, что я пытаюсь вызвать свой сценарий с помощью запроса python через конвейер gitlab для сервера express, размещенного на AWS Я не получаю ответ. Я пробовал с nodejs и топором ios из конвейера gitlab, а также не получил ответ. Эти сценарии (сервер и запрос python) работают локально и функционируют должным образом.

express. js file

router.get("/runBackup", async (req, res) => {
  let data = [];
  const backup = await Backup.get_data_for_backup().catch(error => {
    res.status(500).send(JSON.stringify(error));
  });
  data.push(backup);

  fs.writeFileSync("./data/backup_data.json", JSON.stringify(data));

  var s3 = new AWS.S3();
  var filePath = "./data/backup_data.json";
  let udata = fs.readFileSync(filePath, "utf-8");
  let params = {
    Bucket: "xxxxxxxxxx",
    Body: udata,
    Key: `${moment().format("MM-DD-YYYY")}.json`
  };
  var result;
  try {
    result = await s3.putObject(params).promise();
  } catch (e) {
    console.log(e);
    return res.status(500).send("error");
  }
  return res.status(200).send("success");
});

python вызов, который вызывает через конвейер gitlab

# importing the requests library
from requests import post
import json
import requests
import os
import socket
from datetime import datetime
from dotenv import load_dotenv
load_dotenv()


apikey = os.getenv("APIKEY")
# API Endpoint
URL = "http://localhost:8080/api/v1/main/runBackup"

headers = {'apikey': os.getenv(
    "APIKEY")}

err_count = 0
# This request will take 5-10 minutes depending on how long it takes the microservice to complete the backup and return the data

while err_count < 3:
    try:
        r = requests.get(url=URL, headers=headers)
        print(r.status_code)
        print(r.text)
        if r.text == 'error':
            print('Error running backup. Attempting again... ')
            err_count += 1
        if r.text == 'success':
            print('Backup complete')
            err_count = 3
            exit(0)

    except ConnectionError as err:
        print(err)
        print('Error running backup. Attempting again... ')
        err_count += 1
    except requests.exceptions.RequestException as err:
        print(err)
        print('Error running backup. Attempting again... ')
        err_count += 1

    print(err_count)


print('Unable to complete backup. 3 failed attemps. See AWS logs.')
exit(1)

Вывод в Gitlab CI runner

('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
Error running backup. Attempting again... 
1
('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
Error running backup. Attempting again... 
2
('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
Error running backup. Attempting again... 
3
Unable to complete backup. 3 failed attemps. See AWS logs.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...