2017-01-14 1 views
1

У меня есть 2 лямбды написано на языке разностного на AWS лямбды-сервереКак использовать aws lambda для вызова другой лямбды с учетными данными пользователя?

Предположит, что называется C и J

И есть логика, которая, когда пользователь вызов C с параметром соответствует некоторому условию. Это было что-то делать, а затем вызывать J как пользователь имеет вызов J сами по себе (то же cognitoId)

Так что мне нужно, чтобы получить учетные данные пользователя, которые называют свою функцию C лямбды и использовать его для вызова J

Но я не может найти ключ, где я могу получить удостоверение текущего пользователя из лямбда-среды

я могу получить только context.Identity, но это не достаточно, чтобы создать учетные данные для Invoke лямбда, как имитируется пользователь

что я мог сделать?

+0

Проверьте переменные окружения, установленные в процессе AWS Lambda – Leon

+0

@Leon Есть '' AWS_ACCESS_KEY_ID' AWS_SECRET_ACCESS_KEY' 'AWS_SESSION_TOKEN' но что пришли из Cognito? Я просто думаю, что это произошло из моих собственных учетных данных Amazon IAM, не так ли? – Thaina

+0

@ Leon или это будет отменено, если функция вызвана из cognito? – Thaina

ответ

0

только временное решение, я мог бы использовать сейчас, используя DeveloperCredential всегда получить маркер доступа для каждого пользователя и вызвать подпоследовательности лямбда с этим учетные данные. Недостатком является то, все что пользователь не может быть анонимным пользователем

0

Я собираюсь использовать примеры из Java SDK, но эти методы доступны во всех SDK, поэтому адаптируйте их к выбранному вами языку.

Вы можете использовать AmazonCognitoClient обменять маркер identityId для верительных (в основном временный ключ доступа/секретный ключ), с помощью метода:

public GetCredentialsForIdentityResult getCredentialsForIdentity(GetCredentialsForIdentityRequest getCredentialsForIdentityRequest) 

GetCredentialsForIdentityRequest принимает identityId, которые могут быть обменены на GetCredentialsForIdentityResult. Вы можете использовать getCredentials() на результат, чтобы получить Credentials экземпляр, который затем можно использовать для вызова Lambda J.

+0

К сожалению, я пробовал getCredentialsForIdentity, но не могу работать с аутентифицированной идентификацией только с идентификатором, ему нужны логины, даже если они вызываются из учетных данных администратора – Thaina

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