0

我使用 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 表具有写访问权限的未经授权的用户。

谢谢

4

1 回答 1

0

这是 SDK 的一个已知问题,正在修复中。

同时,如果您使用的是 CocoaPods,将以下行添加到AWSDynamoDBObjectMapper.m L154应该可以修复它:

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