1

Я применил Amazon SimpleDB в своем мобильном приложении и получил все это, используя секретный ключ доступа в файле учетных данных. Из того, что я собираю, это не сработает и не будет безопасно для мобильных приложений, поэтому я изучил использование Cognito для проверки пользователя и предоставления им доступа к SimpleDB.Могу ли я использовать учетные данные AWS Cognito для доступа к Amazon SimpleDB?

Я подключил и синхронизировал Cognito должным образом, но по какой-то причине, когда я передаю учетные данные новому AmazonSimpleDBClient, а затем вызывается выражение выбора, которое вызывается с сообщением «Аргумент не может быть пустым».

Это, как я звоню его:

 //Connect to the DB 
    var sdb = new AmazonSimpleDBClient(
     credentials: Credentials, 
     region: RegionEndpoint.USWest2); 

    //Check if this user has any bots yet 
    string selectExpression = "Select count(*) From Bots where UserName = '" + username + "'"; 
    var selectRequestAction = new SelectRequest { SelectExpression = selectExpression }; 
    var selectResponse = sdb.Select(selectRequestAction); 

И это, как учетные данные устанавливаются:

private CognitoAWSCredentials Credentials 
{ 
    get 
    { 
     if (_credentials == null) 
      _credentials = new CognitoAWSCredentials("IDENTITY_POOL_ID", RegionEndpoint.APSoutheast2); 
     return _credentials; 
    } 
} 

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

EDIT (полная ошибка) ArgumentNullException: Аргумент не может быть нулевым. Имя параметра: key System.Collections.Generic.Dictionary`2 [System.Type, Amazon.Runtime.IExceptionHandler] .TryGetValue (ключ System.Type, значение IExceptionHandler &) (at/Users/builduser/buildslave/mono/build /mcs/class/corlib/System.Collections.Generic/Dictionary.cs:588) Amazon.Runtime.Internal.ErrorHandler.ProcessException (исключение IExecutionContextContext, исключение System.Exception) (в E:/JenkinsWorkspaces/v3-stage-release /AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/ErrorHandler/ErrorHandler.cs:202) Amazon.Runtime.Internal.ErrorHandler.InvokeSync (IExecutionContext executeContext) (в E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/ErrorHandler/ErrorHandler.cs: 78) Amazon.Runtime.Internal.PipelineHandler.InvokeSync (выполнение IExecutionContext Контекст) (в E: /JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/PipelineHandler.cs: 57) Amazon.Runtime.Internal.CallbackHandler.InvokeSync (IExecutionContext executeContext) (в E: /JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/Handlers/CallbackHandler.cs: 45) Amazon.Runtime.Internal.PipelineHandler.InvokeSync (IExecutionContext executeContext) (at E: /JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/PipelineHandler.cs: 57) Amazon.Runtime.Internal.Signer.InvokeSync (IExecutionContext executeContext) (при E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/Handlers/Signer.cs: 38) Amazon.Runtime.Internal.PipelineHandler.InvokeSync (IExecutionContext executeContext) (в E:/JenkinsWorkspaces/v3 стадии-relea se/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/PipelineHandler.cs: 57) Amazon.Runtime.Internal.CredentialsRetriever.InvokeSync (IExecutionContext executeContext) (в E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic /sdk/src/Core/Amazon.Runtime/Pipeline/Handlers/CredentialsRetriever.cs:72) Amazon.Runtime.Internal.PipelineHandler.InvokeSync (IExecutionContext executeContext) (в E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/PipelineHandler.cs: 57) Amazon.Runtime.Internal.RetryHandler.InvokeSync (IExecutionContext executeContext) (в E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src /Core/Amazon.Runtime/Pipeline/RetryHandler/RetryHandler.cs:74)

Любая помощь будет принята с благодарностью.

Благодаря

+0

Какое поле он говорит вам не может быть пустым? Каково было сообщение об ошибке? –

+0

Он не сказал мне, какое поле было пустым. Казалось, что это была внутренняя ошибка в функции sdb.Select. Я выложу полную информацию об ошибке, когда я получу шанс. – Lance

+0

Я отправил полную ошибку в описании, не вписывался в комментарий. Cheers – Lance

ответ

0

Оказалось, что либо проблема с моей ссылки или несовместимых пакетов SimpleDB/Cognito.

Я удалил все ссылки на Amazon. Обновленный NuGet и затем использовать командную строку NuGet установить Cognito и SimpleDB с этими командами:

Install-Package AWSSDK.CognitoIdentity Install-Package AWSSDK.SimpleDB