Cognito Identity System.IO.InvalidDataException: не удается определить протокол. Когда работает в докере на Elastic beanstalk - PullRequest
0 голосов
/ 27 апреля 2018

Когда я запускаю свое приложение в док-контейнере в Elastic beanstalk, я замечаю эту ошибку. Извлечение пользователей и операции входа в систему работают нормально, но попытка создать нового пользователя выдает эту ошибку.

При локальном разработке с использованием того же экземпляра Cognito проблема не возникает. Я предполагаю, что это как-то связано с получением разрешений из роли IAM, прикрепленной к экземпляру эластичного бобового стебля.

К профилю экземпляра IAM для экземпляра эластичного beanstalk прикреплена политика AmazonCognitoPowerUser. Это та же политика, что и для пользователя, которого я использую для локальной разработки

Трассировка стека:

System.IO.InvalidDataException: Cannot determine protocol
at Amazon.Runtime.Internal.Signer.SignRequest(IRequestContext requestContext)
at Amazon.Runtime.Internal.Signer.PreInvoke(IExecutionContext executionContext)
at Amazon.Runtime.Internal.Signer.InvokeAsync[T](IExecutionContext executionContext)
at Amazon.Runtime.Internal.CredentialsRetriever.<InvokeAsync>d__7`1.MoveNext()

Соответствующий код, где появляется ошибка:

private static AmazonCognitoIdentityProviderClient Client => new AmazonCognitoIdentityProviderClient(Amazon.RegionEndpoint.APSoutheast2);

var signUpRequest = new SignUpRequest
        {
            ClientId = AWSCognitoClientId,
            Username = email,
            Password = password
        };

        await Client.SignUpAsync(signUpRequest);

Я не уверен, что это ошибка в sdk или неправильная конфигурация экземпляра эластичного бобового стебля

1 Ответ

0 голосов
/ 01 октября 2018

Я смог решить ее, создав экземпляр AmazonCognitoIdentityProviderClient с AnonymousAWSCredentials, как было предложено здесь: https://github.com/aws/aws-sdk-net/issues/937#issuecomment-415454184.

var forgotPasswordRequest = new ForgotPasswordRequest
{
    // ...
};

using (var identityProvider = new AmazonCognitoIdentityProviderClient(new Amazon.Runtime.AnonymousAWSCredentials()))
{
    return identityProvider.ForgotPasswordAsync(forgotPasswordRequest);
}

Я столкнулся с этой проблемой с ForgotPassword / ForgotPasswordAsync .NET SDK от Cognito.

identityProvider.ForgotPasswordAsync(forgotPasswordRequest);

Это был бросок:

System.IO.InvalidDataException: Cannot determine protocol
at Amazon.Runtime.Internal.Signer.SignRequest(IRequestContext requestContext)
at Amazon.Runtime.Internal.Signer.PreInvoke(IExecutionContext executionContext)
at Amazon.Runtime.Internal.Signer.InvokeAsync[T](IExecutionContext executionContext)
...
...