Андрей, я чутка покопал что такое aws-serverless-express и выглядит что это просто миддлвара между гейтвеем и експрессом которая парсит ивенты авс гейтвея и пробрасывет их в експресс. Я если честно больше по амазону, нода у меня локально даже не стояла. Но в целом попытки просто взять ваш код и запустить на локалстеке привели к тому что GET localhost:4566/restapis/xc9on7zrff/latest/_user_re... падает с
```
{"errorType": "InvocationException", "errorMessage": "Lambda process returned error status code: 1. Result: . Output:\n/tmp/localstack/zipfile.8e2c5df2/main.js:27\n proxy(server, event, ctx)\n ^\n\nReferenceError: server is not defined\n at Object.module.exports.handler (/tmp/localstack/zipfile.8e2c5df2/main.js:27:9)\n at [eval]:1:53\n ...
```
что в целом выглядит ожидаемо т.к. вот тут
server действительно непонятно откуда взялся. но да, пока выглядит действительно как проблема со стороны приложения. Если интересно - я могу зашарить cfnы и конфигурацию локалстека на которой я тестировал, оно так удобней (в сравнении с заливкой всего ручками в амазон)
ну зачем же вы так сами с собой. не нужно так делать
в целом можно посмотреть на
"aws apigateway get-export --rest-api-id [api_id] --stage-name latest --export-type oas30 output" (и дальше нужно то, что попадет в файл output)
и потом для обоих ресурсов "aws apigateway get-integration --rest-api-id [api_id] --resource-id [resourece_id] --http-method GET "
но у меня где-то валялся небольшой пример с сфном для гейтвея + лямбд, щас попробую найти
Ledington, возвращайте просто IEnumerable для T тогда. А то сейчас на вход вы можете принять список чего-угодно (хоть каких-то хттп-запросов), а на выход - пытаетесь вернуть список интов
> The remote server returned an error: (550) File unavailable (e.g., file not found, no access).
ну так показывайте логи. причем логи не приложения, а фтп протокола. без него вы будете долго гадать по кофейной гуще. Вот тут я подробней расписывал что можно сделать чтоб их получить
Дима Авдошин, возьмите телнет (а фтп использует именно телнет для передачи команд) и попробуйте ручками подключится к серверу, перейти в бинарный режим и запросить размер файла. или возьмите клиент той-же файлзилы и сделайте это через юи (у файлзилы есть возможность вводить/выполнять) команды. Или возьмите тот-же флуентфтп, и попробуйте это все сделать с включенным дебагом (он будет логгировать все запросы/ответы). Или возьмите вайршарк и отфильтруйте нужный трафик. Size - это не команда которая описана в основном рфс, потому ее поддержка - это по желанию разработчиков сервера. Может оказаться что она и не поддерживается на этом конкретном сервере. Но для этого нужны логи. А еще видя логи (и зная список команд которые сервером подерживаются) возможно выйдет найти какой-то обходной путь. Мне кажется что в флуентфтп я видел куски кода которые для того чтоб узнать размер/дату последнего изменения файла просто листили директорию и потом выковыривали с ответа нужные значения.
Дима Авдошин, так не используйте ASCII режим. перейдите в бинарный режим работы. У вашей библиотеки для этого должно быть апи (либо отдельный метод, либо в настройках при создании нового подключения). Ну и в целом можно взять метод для отправки кастомных команд и отправить "binary" (если я правильно помню, стоит перепроверить в спецификации протокола)
разово
git remote add [remote_name] [git_url]
чтоб указать еще один источник откуда исходники доставать (если форкали - подозреваю что у вас единственный источник - ваша форка)
Zefirot, meh, да, это еще один способ. Причем для простого случая этот наверно действительно минимум усилий требует. Хотя если честно - я бы просто собрал 3 словаря в один массив и во время инициализации создавал бы по объекту для каждого элемента массива. Вышло бы и читабельней, и без необходимости тянуть Serializable вниз по иерархии, и работало бы быстрее (что правда скорее всего вообще не критично в этом конкретно случае).
Zefirot, потому что читайте ссылку что я приложил в самом начале ответа. Я использовал значимые типы, a у вас - ссылочный, т.е. два разных словаря ссылаются на один и тот-же объект. Для того чтоб это работало как хотите - нужно делать полноценную копию всей иерархии объектов, т.е. deep copy. и самый простой способ - наполнять все 3 словаря одновременно