AWS - ключи API доступны в автономной среде без сервера?
Я использую Serverless Offline для разработки веб-проекта.
Мне нужны ключи API для доступа к ресурсу на безсерверной AWS Lamda.
У меня есть serverless.yml с моим сервисом и провайдером.
В Почтальоне, я получаю доступ к своему маршруту ( http://127.0.0.1:3333/segments/UUID/test), и у меня нет никаких ошибок (как запрещенное сообщение), Lambda выполняется...
test:
handler: src/Api/segment.test
events:
- http:
path: segments/{segmentUuid}/test
method: post
request:
parameters:
paths:
segmentUuid: true
private: true
Рассматриваемый маршрут не защищен частным.
4 ответа
https://www.npmjs.com/package/serverless-offline
Автономный сервер будет эмулировать поведение APIG и создавать случайный токен, который выводится на экран. С помощью этого токена вы можете получить доступ к вашим закрытым методам, добавив x-api-key: generateToken в заголовок вашего запроса. Все ключи API будут использовать один и тот же токен. Чтобы указать свой токен, используйте опцию --apiKey cli.
Команда будет выглядеть так:
sls offline --apiKey any-pregenerated-key
Для локального разработчика используйте это внутри serverless.yml:
custom:
serverless-offline:
apiKey: 'your-key-here'
Или это внутри serverless.ts:
custom: {
'serverless-offline': {
apiKey: 'your-key-here',
},
},
Учитывая последние изменения, эта конфигурация работала для меня в автономном режиме без сервера:
provider: {
name: 'aws',
region: region,
runtime: 'nodejs14.x',
stage: stage,
apiGateway:{
apiKeys: [{
name: 'test name',
value: 'sadasfasdasdasdasdafasdasasd'
}],
},
},
бессерверный автономный режим удален--apiKey
как параметр cli как часть v11.0.0 . Документация на https://www.serverless.com/plugins/serverless-offline в настоящее время устарела: «Чтобы указать собственный токен, используйте опцию --apiKey cli». необходимо удалить.
МИГРАЦИЯ: если вы хотите указать значение apiKey самостоятельно, определите его в поле «провайдер.apiGateway.apiKeys» в бессерверной конфигурации.
В выпуске Issues/1608 происходит обсуждение ; Ответ dnalborczyk должен дать больше информации: https://github.com/dherault/serverless-offline/issues/1608#issuecomment-1306200311 .