0

AWSiOSSDKv2 を使用して、AWS Mobile SDK の例に従って iOS アプリケーションを作成しました。

無許可の Cognito アカウントで DynamoDB に接続し、テーブルに書き込むことができました。AWS にログインし、テーブルをチェックして、自分のレコードがそこにあることを確認します。

AWSDynamoDBObjectMapper *dynamoDBObjectMapper = [AWSDynamoDBObjectMapper defaultDynamoDBObjectMapper];
[[dynamoDBObjectMapper save:tableRow] continueWithSuccessBlock:^id(BFTask *task) {
    if (!task.error) {
        NSLog(@"Successfully inserted the data into the table.");
    } else {
        NSLog(@"Failed to insert the data into the table.");
    }
    return nil;
}];

ただし、ここで、障害が発生した場合に何が起こるかをテストしたいと思います。dynamoDBTableName を存在しないものに変更して、意図的にエラーを発生させようとしています。残念ながら、私のコードは、そうでなくても常に成功を返します。

別のスレッドで、ログを冗長にすることを勧めている人を見つけました。

[AWSLogger defaultLogger].logLevel = AWSLogLevelVerbose;

コンソールでは、AWSLogger がエラーを表示していることがわかります。

[{"__type":"com.amazon.coral.service#AccessDeniedException","Message":"ユーザー: arn:aws:sts::xxxxxx:assumed-role/Cognito_xxxxxxxxUnauth_DefaultRole/iOS-Provider は実行する権限がありません: dynamodb :PutItem on resource: arn:aws:dynamodb:us-east-1:xxxxxxxxxxxxx:table/xxxxxxxx"}]

ただし、上記のコードでは、常に「データをテーブルに挿入しました。」と書かれています。

AWS Mobile Examples を変更してみましたが、同じバグを再現できます。また、POD をインストールし、AWSiOSSDKv2 フレームワークをプロジェクトに手動で追加しようとしましたが、どちらも問題を解決しませんでした。

この問題に遭遇した人はいますか?解決方法を知っている人はいますか? dynamodb テーブルへの書き込みアクセス権しか持たない無許可のユーザーを作成しようとしています。

ありがとう

4

1 に答える 1

0

これはSDKの既知の問題であり、現在修正中です。

それまでの間、CocoaPods を使用している場合は、次の行をAWSDynamoDBObjectMapper.m L154に追加すると修正されます。

if (task.error) {
    return task;
}
于 2014-12-18T19:25:38.737 に答える