1

Je mis en œuvre Amazon SimpleDB dans mon application mobile et a tout travail en utilisant la clé d'accès secret dans un fichier d'informations d'identification. D'après ce que je comprends, cela ne fonctionnera pas et n'est pas sécurisé pour les applications mobiles. J'ai donc cherché à utiliser Cognito pour vérifier l'utilisateur et lui donner accès au SimpleDB. J'ai obtenu la connexion et la synchronisation de Cognito correctement, mais pour une raison quelconque, lorsque je passe les informations d'identification au nouveau AmazonSimpleDBClient et que j'appelle une expression select, le message "Argument ne peut pas être nul" apparaît.Puis-je utiliser AWS Cognito Credentials pour accéder à Amazon SimpleDB?

Voici comment je l'appeler:

 //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); 

Et voilà comment de vérification des pouvoirs sont mis en place:

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

Je ne peux pas sembler trouver tout ce qui concerne cette question ou même tous ceux qui essaient d'utiliser SimpleDB comme ça - ils semblent tous utiliser des informations d'identification codées en dur tout en disant que ce n'est pas sûr ...

EDIT (erreur complète) ArgumentNullException: L'argument ne peut pas être nul. Nom du paramètre: clé System.Collections.Generic.Dictionary`2 [System.Type, Amazon.Runtime.IExceptionHandler] .TryGetValue (clé System.Type, valeur IExceptionHandler &) (at/Users/builduser/buildslave/mono/build /mcs/class/corlib/System.Collections.Generic/Dictionary.cs:588) Amazon.Runtime.Internal.ErrorHandler.ProcessException (IExecutionContext ExecutionContext, exception System.Exception) (à E:/JenkinsWorkspaces/v3-étape de libération /AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/ErrorHandler/ErrorHandler.cs:202) Amazon.Runtime.Internal.ErrorHandler.InvokeSync (IExecutionContext executionContext) (à E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/ErrorHandler/ErrorHandler.cs: 78) Amazon.Runtime.Internal.PipelineHandler.InvokeSync (exécution IExecutionContext Contexte) (à E: /JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/PipelineHandler.cs: 57) Amazon.Runtime.Internal.CallbackHandler.InvokeSync (IExecutionContext executionContext) (à E: /JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/Handlers/CallbackHandler.cs: 45) Amazon.Runtime.Internal.PipelineHandler.InvokeSync (IExecutionContext executionContext) (at E: /JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/PipelineHandler.cs: 57) Amazon.Runtime.Internal.Signer.InvokeSync (IExecutionContext executionContext) (à l'emplacement E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/noyau/Amazon.Runtime/Pipeline/gestionnaires/Signer.cs: 38) Amazon.Runtime.Internal.PipelineHandler.InvokeSync (IExecutionContext executionContext) (à E:/JenkinsWorkspaces/v3-stage-relea se/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/PipelineHandler.cs: 57) Amazon.Runtime.Internal.CredentialsRetriever.InvokeSync (IExecutionContext executionContext) (à E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic /sdk/src/Core/Amazon.Runtime/Pipeline/Handlers/CredentialsRetriever.cs:72) Amazon.Runtime.Internal.PipelineHandler.InvokeSync (IExecutionContext executionContext) (à E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/PipelineHandler.cs: 57) Amazon.Runtime.Internal.RetryHandler.InvokeSync (IExecutionContext executionContext) (à E:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src /Core/Amazon.Runtime/Pipeline/RetryHandler/RetryHandler.cs:74)

Toute aide sera grandement appréciée.

Merci

+0

quel domaine est-il dit que vous ne pouvez pas être nulle? Quel était le message d'erreur, exactement? –

+0

Il ne m'a pas dit quel champ était nul. Il semblait que c'était une erreur interne dans la fonction sdb.Select. Je publierai tous les détails de l'erreur quand j'aurai une chance. – Lance

+0

J'ai posté l'erreur complète dans la description, ne rentre pas dans le commentaire. Vive – Lance

Répondre

0

Il est avéré être un problème avec mes références ou incompatibles paquets SimpleDB/Cognito.

J'ai supprimé toutes les références à Amazon. Mise à jour NuGet puis utilisé la ligne de commande NuGet installer Cognito et SimpleDB avec ces commandes:

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