У меня есть функция, которая запускается через сервер 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.