ios dynamodb неправильно регистрирует таблицы

Я скачал пример пользовательских настроек (для Xcode) с сайта Amazon. Я вставил свои ключи в код, как и просили. Затем запустите приложение. Предполагается создать таблицу с именем TestUserPrefence. Кажется, в приложении это делается правильно, потому что приложение работает нормально после создания таблицы и вставки данных; однако, когда вы заходите в консоль AWS для DynamoDB, таблица не создается. Кроме того, когда я выхожу из приложения и запускаю его снова, таблица исчезает, и мне приходится создавать ее заново.

Итак, как мне добавить таблицы в target c, которые остаются и видны в консоли aws?

Вот код, который должен создавать таблицы (скопирован из примера).

#define TEST_TABLE_NAME              @"TestUserPreference"
#define TEST_TABLE_HASH_KEY          @"userNo"


+(void)createTable
{
DynamoDBCreateTableRequest *createTableRequest = [[DynamoDBCreateTableRequest new] autorelease];

DynamoDBProvisionedThroughput *provisionedThroughput = [[DynamoDBProvisionedThroughput new] autorelease];
provisionedThroughput.readCapacityUnits  = [NSNumber numberWithInt:10];
provisionedThroughput.writeCapacityUnits = [NSNumber numberWithInt:5];

DynamoDBKeySchemaElement *keySchemaElement = [[[DynamoDBKeySchemaElement alloc] initWithAttributeName:TEST_TABLE_HASH_KEY
                                                                                           andKeyType:@"HASH"] autorelease];
DynamoDBAttributeDefinition *attributeDefinition = [[DynamoDBAttributeDefinition new] autorelease];
attributeDefinition.attributeName = TEST_TABLE_HASH_KEY;
attributeDefinition.attributeType = @"N";

createTableRequest.tableName = TEST_TABLE_NAME;
createTableRequest.provisionedThroughput = provisionedThroughput;
[createTableRequest addKeySchema:keySchemaElement];
[createTableRequest addAttributeDefinition:attributeDefinition];

DynamoDBCreateTableResponse *response = [[AmazonClientManager ddb] createTable:createTableRequest];
if(response.error != nil)
{
    [AmazonClientManager wipeCredentialsOnAuthError:response.error];
    NSLog(@"Error: %@", response.error);
}
}

Дополнительная информация: я обнаружил, что таблица создается на другом сервере (по какой-то причине в Северной Вирджинии), а не на том, который я просматривал на консоли (по умолчанию в Орегоне). Очевидно, вам нужно создать таблицу в консоли на сервере, который будет использовать ваше приложение; однако, похоже, нет способа установить это.


person Bruce Matichuk    schedule 12.09.2013    source источник


Ответы (2)


Я являюсь одним из сопровождающих AWS SDK для iOS. Прошу прощения за беспокойство.

Похоже, что с недавним обновлением этого образца мы потеряли изменение по умолчанию на регион us-west-2 (Орегон) для этого образца. Это контролируется конечной точкой, установленной на AmazonDynamoDBClient во время создания. Вы можете просто изменить код в AmazonClientManager.m, чтобы добавить следующее:

ddb.endpoint = [AmazonEndpoints ddbEndpoint:US_WEST_2];

Это создаст/использует таблицу в регионе us-west-2.

person Bob Kinney    schedule 12.09.2013

Я узнал решение:

Region useast1 = Region.getRegion(Regions.US_EAST_1);
ddb.setRegion(useast1 );
person nick92    schedule 28.05.2014