2016-08-02 1 views
1

Моя текущая ситуация: У меня есть AWS API шлюза с ресурсами /логин. Когда на этом ресурсе появляется запрос GET, вызывается функция AWS Lambda, которая возвращает форму входа в систему HTML. HTML для формы входа записывается внутри строки JavaScript в функции Lambda (я использую Node JS внутри своих функций лямбда). Когда форма отправлена, тот же ресурс - /login с методом POST вызывает другую функцию Lambda, которая проверяет логин. Если логин завершается с ошибкой, он возвращает HTML-форму с сообщениями об ошибках проверки, но опять-таки код HTML написан внутри строки JavaScript.Как вернуть HTML страницу, сохраненную на AWS S3 ведро с функцией AWS лямбда

Мой вопрос: Можно ли сохранить файл HTML в качестве ведре AWS S3, поэтому, когда я ударил /логин АНИ шлюз вызывает функцию Lambda, которая затем получает страницу HTML от S3 ведра и возвращает его пользователю? И когда проверка формы не удалась, я хотел бы вернуть тот же HTML из ведра S3 с добавленными сообщениями об ошибках.

Возможно ли связать эти компоненты таким образом? Часть, с которой я борюсь, - это хранение HTML на S3 и доступ к ней из Lambda.

+0

С риском предложить очевидное ... вы можете включить html-файл в свой zip-файл при загрузке функции лямбда. –

ответ

1

Да, вы можете использовать Amazon S3 для хранения «главной» копии вашей страницы входа в систему и использовать ее в ваших функциях лямбда.

Используйте этот Lambda & S3 учебник в качестве отправной точки:

http://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html

Часть вы заботитесь о чтении объекта из S3 в функции Lambda:

var AWS = require('aws-sdk'); 
var s3 = new AWS.S3(); 
s3.getObject({ Bucket: srcBucket, Key: srcKey }, ...); 
5

Вы не необходимо задействовать любую лямбда-функцию. Вы можете настроить метод для прокси-вызова AWS API, тогда единственное, что вам нужно, это создать прокси-сервер API-шлюза, который прокси-сервер к S3 API Object GET.

Сначала вы должны создать роль IAM, которая имеет доступ к вашему веществу/конкретному объекту HTML, запишите его ARN, а затем создайте интеграцию, подобную изображению.

enter image description here

Примечание: Конечно, это не является правильным решением, если вы хотите изменить содержимое HTML на лету и работает только если содержание является статическим. Если вы хотите это сделать, вам нужно создать Лямбду, которая загружает объект S3, манипулирует им и отправляет обратно клиенту.

Смежные вопросы