【发布时间】:2015-02-13 02:47:55
【问题描述】:
我使用 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:xxxxxxxxxxxx:table/xxxxxxxx"}]
但是,在我上面的代码中,它总是写“成功地将数据插入到表中。”。
我什至尝试修改 AWS 移动示例,并且可以重现相同的错误。我还尝试安装 POD 并将 AWSiOSSDKv2 框架手动添加到我的项目中,但都没有解决问题。
有没有人遇到过这个问题,有没有人知道如何解决?我正在尝试创建一个未经授权的用户,该用户只有对 dynamodb 表的写入权限。
谢谢
【问题讨论】:
标签: ios amazon-web-services amazon-dynamodb amazon-cognito