Я применил 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)
Любая помощь будет принята с благодарностью.
Благодаря
Какое поле он говорит вам не может быть пустым? Каково было сообщение об ошибке? –
Он не сказал мне, какое поле было пустым. Казалось, что это была внутренняя ошибка в функции sdb.Select. Я выложу полную информацию об ошибке, когда я получу шанс. – Lance
Я отправил полную ошибку в описании, не вписывался в комментарий. Cheers – Lance