【问题标题】:AWS DynamoDB iOS SDK silently failing but always returning success statusAWS DynamoDB iOS SDK 静默失败但始终返回成功状态
【发布时间】: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


    【解决方案1】:

    这是 SDK 的 known issue,正在修复中。

    同时,如果您使用的是 CocoaPods,在AWSDynamoDBObjectMapper.m L154 中添加以下行应该可以解决此问题:

    if (task.error) {
        return task;
    }
    

    【讨论】:

    • 感谢洋介,这确实解决了问题。
    猜你喜欢
    • 2017-12-25
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 2014-09-14
    • 2014-11-20
    • 2011-09-20
    相关资源
    最近更新 更多