我使用 AWSiOSSDKv2 按照 AWS 移动开发工具包示例创建了一个 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":"User: arn:aws:sts::xxxxxx:assumed-role/Cognito_xxxxxxxxUnauth_DefaultRole/iOS-Provider 无权执行:dynamodb :PutItem 资源: arn:aws:dynamodb:us-east-1:xxxxxxxxxxxxx:table/xxxxxxxx"}]
但是,在我上面的代码中,它总是写“成功地将数据插入表中。”。
我什至尝试过修改 AWS 移动示例并且可以重现相同的错误。我还尝试安装 POD 并将 AWSiOSSDKv2 框架手动添加到我的项目中,但都没有解决问题。
有没有人遇到过这个问题,有人知道如何解决吗?我正在尝试创建一个仅对 dynamodb 表具有写访问权限的未经授权的用户。
谢谢