Я хотел бы, чтобы моя функция Lambda взаимодействовала со шлюзом API …
Однако я хочу, чтобы API-шлюз проверял запрос с помощью _1 _…, поэтому лямбда-функция должна каким-то образом подписывать запрос с помощью определенного токена IAM, я полагаю …
Я читал этот https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html, но я не могу найти ни одного примера того, как подписать запрос с конкретным пользователем IAM
(Я уже создал пользователя в IAM с AmazonAPIGatewayInvokeFullAccess
, и у меня есть ключ доступа и секретный ключ, поэтому я полагаю, мне действительно нужно только то, как подписать запрос)
Процесс зависит от вашего языка программирования. Самый простой из них, о котором я знаю, по крайней мере, находится на python, так как для этого уже есть пакеты. Кроме того, для этого нельзя использовать aws-sdk. Он должен быть сторонним. — person Alberto Sinigaglia schedule 23.02.2021
@Marcin, я бы хотел использовать NodeJS, если это возможно (но я искренне думаю, что был один SDK от AWS, который делает это автоматически) — person Alberto Sinigaglia schedule 23.02.2021
SDK предназначены для управления API, а не для регулярных запросов конечных пользователей к нему. Для nodejs существует пакет this. Вы обдумывали это? — person Alberto Sinigaglia schedule 23.02.2021
Нам нужно построить обычные параметры запроса nodejs с тремя дополнительными параметрами
service: "execute-api"
для Api Gatewayregion: "us-east-1"
Регион AWS.body: postData
, обычно мы передаем телоreq.write
, оно нам тоже нужно в опциях, потому что оно нужно для подписи.и, наконец,
aws4.sign(...)
передаетсяrequest
.Все, что делает метод
.sign
, — это добавляет 4 дополнительных заголовкаX-Amz-Content-Sha256
,X-Amz-Security-Token
,X-Amz-Date
иAuthorization
поскольку этот вызов выполняется из лямбда-выражения, весь объект с ключами можно пропустить и просто вызвать
aws4.sign(options)
, он должен использовать переменные среды.