我一直在努力使用我的iOS应用程序连接AWS DynamoDB。我对DynamoDB上缺少教程/文档感到沮丧(我想它仍然相当新)。但我一直试图跟随Amazon's User Preference Tutorial我试图只是连接到数据库并读取内容或写一些东西,但我得到一个异常抛出。
AmazonCredentials *creds;
creds = [creds initWithAccessKey:MY_ACCESS_KEY withSecretKey:MY_SECRET_KEY];
AmazonDynamoDBClient *ddb = [[AmazonDynamoDBClient alloc] initWithCredentials:creds];
DynamoDBGetItemRequest *request = [[DynamoDBGetItemRequest alloc]
initWithTableName:@"Users" andKey:[[DynamoDBKey alloc] initWithHashKeyElement:
[[DynamoDBAttributeValue alloc] initWithS:@"Chase"]]];
DynamoDBGetItemResponse *response = [ddb getItem:request]; //THROWING THE EXCEPTION HERE!
NSMutableDictionary *user = response.item;
NSLog(@"%@",user);
输出显示: 因未捕获的异常'AmazonServiceException'而终止应用程序,原因:''
我从教程中所做的唯一改变是我设置用户凭据的方式和引发异常的行,教程有:
DynamoDBCreateTableResponse *response = [[AmazonClientManager ddb] getItem:request];
我无法在任何地方找到任何AmazonClientManager类,但AmazonDynamoDBClient类似乎有相同的方法,所以我假设它应该工作(这很可能是破坏我的代码的假设)。我不知道亚马逊是否仍然支持该类,因为我无法在任何文档中找到它。
此外,在我被大吼之前,我知道我不应该在应用程序中分发我自己的凭据。我稍后会改变它。我现在正试图进入理智状态。
答案 0 :(得分:3)
您需要更改这些行
AmazonCredentials *creds;
creds = [creds initWithAccessKey:MY_ACCESS_KEY withSecretKey:MY_SECRET_KEY];
到这个
AmazonCredentials *creds = [[AmazonCredentials alloc] initWithAccessKey:MY_ACCESS_KEY withSecretKey:MY_SECRET_KEY];
此外,AmazonClientManager不是SDK的一部分。它是示例应用程序的一部分,并返回AmazonDynamoDBClient的实例。它包含在示例项目中。