Я интегрировал AWS Cognito User Pools в свое приложение, как описано в этой статье: http://snevsky.com/blog/dotnet-core-authentication-aws-cognito, используя следующие пакеты: AWSSDK.Core и AWSSDK.CognitoIdentityProvider .
В моей среде разработки это работает хорошо: я могу позвонить AdminInitiateAuthAsync
, чтобы аутентифицировать пользователя, и я могу позвонить SignUpAsync
, чтобы создать нового пользователя.Другие методы тоже работают хорошо - в моей среде dev .
Однако, когда я развертываю свой код в Lambda, он не работает.В частности, он висит на этой строке:
var response = await cognito.AdminInitiateAuthAsync(request);
В конце концов, я получаю сообщение об ошибке в CloudWatch, говорящее Task timed out
.Тем не менее, это не говорит мне, почему.Исходя из моего прошлого опыта работы с Lambda и AWS, я предполагаю, что это проблема с разрешениями между Lambda и Cognito, но это всего лишь предположение.
Пара вещей, которые я пробовал:
- Как указано в статье, я добавил две dev настройки среды:
AWS_ACCESS_KEY_ID
и AWS_SECRET_ACCESS_KEY
.Однако Lambda не позволит вам установить эти конкретные ключи в качестве переменных среды.Итак, в качестве теста я попытался установить их явно в своем коде:
var credentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
var region = RegionEndpoint.GetBySystemName("myRegionId");
var cognito = new AmazonCognitoIdentityProviderClient(credentials, region);
Я добавил права администратора для роли Lambda Execution.
Любая помощь приветствуется.