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 テーブルへの書き込みアクセス権しか持たない無許可のユーザーを作成しようとしています。
ありがとう