У меня сейчас есть настройка API следующим образом.
@app.route('/', cors=cors_config, methods=['GET'])
def index():
request = app.current_request
file_name = "orders.csv"
file_path = '/tmp/{}_{}'.format("Life", file_name)
with open(file_path, 'w') as csvFile:
field_names = ["OrderID", "OrderedBy", "Agent"]
writer = csv.DictWriter(csvFile, fieldnames=field_names)
writer.writeheader()
for item in range(10):
writer.writerow(
rowdict={
"OrderID": str(1),
"OrderedBy": "noob",
"Agent": "pro"
}
)
csvFile.close()
with open(file_path, 'rb') as f:
contents = f.read()
f.close()
file_size = os.path.getsize(file_path)
headers = {'Content-Type': 'application/octet-stream',
'Content-Disposition': 'attachment; filename={}'.format(file_name),
'Content-Length': str(os.path.getsize(file_path))
}
return Response(body=contents, headers=headers)
Теперь при запуске этого кода я могу без проблем загрузить созданный здесь файл. Однако после развертывания этого в моей учетной записи AWS конечная точка API позволяет мне загружать файл, но он содержит двоичную строку нужного мне файла. Я прочитал некоторые другие посты, в которых указывалось обновить путь contentHandling до CONVERT_TO_BINARY ( См. Ответ здесь ), что я и сделал, а затем повторно развернул API изнутри API Gateway (не через развертывание чаши). Это все еще показывает то же самое поведение.
Есть ли способ решить эту проблему?