У меня есть внешнее приложение, приложение будет использовать лямбда-сервисы, на конечных точках такие cors включены:
// serverless.yml
functions:
test:
handler: functions/test.handler
events:
- http:
path: /test
method: get
cors: true
Обработчик функции теста имеет следующие заголовки:
// ./functions/test.js
headers: {
'Access-Control-Allow-Origin': 'https://example.com',
},
Когда я собираю / внедряю проект без сервера, я могу поместить сгенерированный URL в браузер и увидеть ответ.Заголовок ACAO существует, и я не пробовал использовать его с сайта, возможно, он там заблокирован, но CORS недостаточно - он будет основан только на браузере, лямбда-ответ по-прежнему будет отображаться, если будет запрошен другими способами..
Что я хочу сделать, так это ограничить доступ к этим (производственным) лямбда-функциям, если только запрос не поступает из моего приложения, которое (статично) размещено в корзине s3, корзина связана с облачным фронтом, облачный фронт связанв домен (используя маршрут 53 для домена.
У моего приложения не будет пользователей, я просто не хочу, чтобы данные, которые там обслуживаются, были доступны из сторонних сервисов. Я думал о созданииФункция, которую я импортирую внутри каждой функции, и она будет проверять IP, если состояние prod, но я не уверен, что это хорошая практика.
Что еще я могу сделать, чтобы защитить эти лямбды?должен быть в лямбде, может быть, есть что-то в облачном фронте, которое я мог бы использовать, в настоящее время нет поддомен api.example.com, который будет указывать налямбды.