Я немного над головой.
У меня сейчас есть настройка системы, в которой используется FTP-сервер с поддержкой S3 (s3fs) и лямбда-функция S3 (написанная на Go) для обслуживания, архивирования и создания уменьшенных изображений неподвижных изображений с веб-камер Axis. Однако работа FTP-сервера, поддерживаемого на S3, оказывается проблематичной для S3FS, что имеет смысл, поскольку S3 не является файловой системой.
Я хочу перейти от использования параметра загрузки по FTP в камере к параметру загрузки по HTTP / HTTPS в камере, но я не совсем понимаю, как принимать данные, которые камера выдает, используя свой HTTP запрос. Единственная подсказка - следующий фрагмент кода, который я нашел на веб-сайте Axis, о том, как использовать эти HTTP-данные в скрипте Perl CGI (я не знаю Perl или CGI)
#!/usr/bin/perl -w
my $upload_dir = "/var/www/cgi-bin/upload/";
print "Content-Type: text/plain\r\n\r\n";
print "Upload OK\r\n";
my $file_name = $ENV{'HTTP_CONTENT_DISPOSITION'};
$file_name =~ s/^attachment; filename=\"(.*)\"$/$1/;
open (IMG_FILE, "> $upload_dir$file_name") or die "can't open
>$upload_dir$file_name";
binmode(IMG_FILE);
while (<STDIN>) {
print IMG_FILE $_;
}
chmod 0666, "$upload_dir$file_name";
exit 0;
Я полагаю, что камера отправляет HTTP-запрос POST (?) С вложением из нескольких форм-данных (?) С изображением в этом вложении, но это предположение.
Я надеюсь, что кто-нибудь может предложить мне простой / легкий способ загрузки этих изображений с некоторой базовой аутентификацией и передачи их либо в прямую функцию Lambda, либо в S3, чтобы позднее она была обнаружена Lambda.
Возможно, я думал о AWS API Gateway, минимальном экземпляре Linux EC2 или, возможно, Lambda @ Edge?