AWS DynamoDB iOS SDK无提示失败但始终返回成功状态

时间:2014-12-15 02:56:51

标签: ios amazon-web-services amazon-dynamodb amazon-cognito

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

由于

1 个答案:

答案 0 :(得分:0)

这是SDK的known issue,修复程序正在进行中。

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

if (task.error) {
    return task;
}