AWS S3: изменение размера изображения с использованием лямбда в laravel 5.3

В настоящее время моя система загрузки изображений в Laravel 5.3 работает таким образом.

1. Пользователь загружает изображение.

2. Измените размер изображения с помощью библиотеки imagick.

3. сохранить исходное и обрезанное изображение в AWS S3.

Теперь это работает нормально, я хотел бы перейти на второй шаг (изменение размера изображения) с помощью AWS lambda, но я не могу найти ничего об интеграции AWS lambda с php, однако руководства по интеграции node-js и java доступны в официальной документации.

Итак, есть ли какие-либо другие службы (кроме aws lambda), доступные для достижения моей функциональности ??


person Jabaa    schedule 08.02.2017    source источник
comment
Привет, @Jabaa, я хочу изменить размер изображений после того, как они уже находятся в корзине. У вас есть для этого хорошие решения?   -  person Lucas Martins    schedule 06.12.2018


Ответы (2)


Вы можете использовать PHP или любой другой язык в AWS Lambda, но вам необходимо инкапсулировать его в оболочку NodeJS.

К счастью, AWS предоставляет официальное и очень простое руководство о том, как это сделать: https://aws.amazon.com/blogs/compute/scripting-languages-for-aws-lambda-running-php-ruby-and-go/

Кроме того, если вы хотите сэкономить время (не создавая вручную дистрибутив PHP, как описано в вышеупомянутой статье), вы можете использовать следующий контейнер Docker: https://github.com/dannylinden/aws-lambda-php

person The Onin    schedule 08.02.2017

В настоящее время лямбда-функции AWS не поддерживают php. Поскольку вы разработчик PHP, вы можете легко написать скрипт nodeJS для изменения размера изображения. Максимум будет от 12 до 15 строк. также доступно множество примеров для той же функциональности. S3 для автоматической настройки триггера, которую вы можете выполнять с лямбда-функциями. Так что ваша работа будет минимальной.

Но все же, если вы ищете какое-либо альтернативное решение, вам нужно использовать экземпляр ec2, там вам нужно предоставить один REST API. этот API должен иметь возможность получать изображение и изменять его размер, наконец, сохранять исходные и измененные изображения в двух разных сегментах AWS s3 (но не рекомендуется).

Если вы хотите напрямую сохранять в ведре s3 из приложения (php), напишите код для изменения размера и сохраните его в отдельных корзинах из вашего приложения.

person Kamal Gadepalli    schedule 08.02.2017
comment
@ NinoŠkopac, пожалуйста, объясните свой ответ - person Jabaa; 08.02.2017
comment
@kamal Gadepalli, я не понял смысла этого As you are a PHP developer you can easily write nodeJS script for Image re-size functionality - person Jabaa; 08.02.2017
comment
@Jabaa Я считаю, что это означает, что если вы умеете писать PHP, вам не составит труда написать javascript для узла. Они достаточно похожи синтаксически, поэтому переключение между ними не должно вызывать затруднений. - person Michael - sqlbot; 08.02.2017
comment
@KamalGadepalli, это правда, если вы можете сделать его двоично-совместимым и упаковать его для запуска на стандартный Lambda AMI, затем вы можете запустить его в Lambda for Node, используя простую оболочку узла для создать дочерний процесс - person Michael - sqlbot; 08.02.2017
comment
У меня нет такого большого опыта работы с node js - person Jabaa; 08.02.2017
comment
Привет, @NinoSkopac, я не нашел прямого способа использовать php в лямбда-функциях AWS. Если вы уверены в этом, можете предложить какой-нибудь пример. - person Kamal Gadepalli; 08.02.2017
comment
@KamalGadepalli Я сделал это сам, используя пример из руководства, которое я провайдер. Важнейшая часть - это преодоление разрыва между Node и PHP, и для этого обратитесь к Creating the Lambda package части руководства. - person The Onin; 08.02.2017