1

モバイルアプリケーションでAmazon SimpleDBを実装し、資格情報ファイルの秘密のアクセスキーを使用してすべての機能を利用できるようにしました。私が収集した情報から、モバイルアプリケーションでは安全ではないので、Cognitoを使ってユーザーを確認し、SimpleDBにアクセスできるようにしました。AWS Cognito Credentialsを使用してAmazon SimpleDBにアクセスできますか?

私はCognitoを正しく接続して同期させていますが、新しいAmazonSimpleDBClientに資格情報を渡して、「Argument can not null null」というメッセージで選択式を呼び出すと何らかの理由で選択した式を呼び出します。

これは私がそれを呼んでいる方法です:

 //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:引数をnullにすることはできません。 パラメータ名:key System.Collections.Generic.Dictionary`2 [System.Type、Amazon.Runtime.IExceptionHandler] .TreeGetValue(System.Typeキー、IExceptionHandler &値)(/ Users/builduser/buildslave/mono/buildにあります。 /mcs/class/corlib/System.Collections.Generic/Dictionary.cs:588) Amazon.Runtime.Internal.ErrorHandler.ProcessException(IExecutionContext executionContext、System.Exception例外)(E:/ JenkinsWorkspaces/v3-stage-release /JSA/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(IExecutionContext実行コンテキスト)(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)(でE:/JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/PipelineHandler.cs:57) Amazon.Runtime.Internal.Signer.InvokeSync(IExecutionContext executionContext) JenkinsWorkspaces/v3ステージリリース/ AWSDotNetPublic/sdk/src/Core/Amazon.Runtime/Pipeline/Handlers/Signer.cs:38) Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext)(E:/ JenkinsWorkspaces/v3-stage-relea AWSDotNetPublic/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/(JDelegate):/ JenkinsWorkspaces/v3-stage-release/AWSDotNetPublic/sdk/srcにあります。 /Core/Amazon.Runtime/Pipeline/RetryHandler/RetryHandler.cs:74)

ご協力いただければ幸いです。

おかげ

+0

どのフィールドそれはあなたがnullにすることはできません言っていますか?エラーメッセージは何でしたか? –

+0

どのフィールドがヌルであるかはわかりませんでした。 sdb.Select関数の内部エラーのように思えました。 私はチャンスがあったときにエラーの詳細を投稿します。 – Lance

+0

私は説明に完全な誤りを掲載しましたが、コメントに収まりません。乾杯 – Lance

答えて

0

は、それは私の参照、または互換性のないのSimpleDB/Cognitoパッケージでの問題のいずれかであることが判明しました。

私はAmazonへの参照をすべて削除しました。 NuGet更新した後、これらのコマンドでCognitoとのSimpleDBをインストールするNuGetのコマンドラインを使用:

インストール・パッケージAWSSDK.CognitoIdentity をインストールし、パッケージAWSSDK.SimpleDBを

関連する問題