我使用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显示错误:
[{" __类型":"#com.amazon.coral.service AccessDeniedException异常""消息":"用户: 阿尔恩:AWS:STS :: XXXXXX:假设角色/ Cognito_xxxxxxxxUnauth_DefaultRole / iOS设备提供商 未授权执行:dynamodb:PutItem on resource: ARN:AWS:dynamodb:US-东-1:XXXXXXXXXXXXX:表/ XXXXXXXX"}]
但是,在上面的代码中,它始终写入"成功将数据插入表中。"。
我甚至尝试修改AWS Mobile示例,并且可以重现相同的错误。我还尝试安装POD并手动将AWSiOSSDKv2框架添加到我的项目中,既没有解决问题。
有没有人遇到过这个问题,有没有人知道如何解决?我试图创建一个只对dynamodb表具有写访问权的未授权用户。
由于
答案 0 :(得分:0)
这是SDK的known issue,修复程序正在进行中。
同时,如果您使用CocoaPods,将以下行添加到AWSDynamoDBObjectMapper.m L154应修复它:
if (task.error) {
return task;
}