Я пытался протестировать таблицу в DynamoDB. Эта таблица создается со следующим вводом:
Accounts = &dynamodb.CreateTableInput{
AttributeDefinitions: []*dynamodb.AttributeDefinition{
{
AttributeName: aws.String("account_company_id"),
AttributeType: aws.String(dynamodb.ScalarAttributeTypeS),
},
{
AttributeName: aws.String("account_id"),
AttributeType: aws.String(dynamodb.ScalarAttributeTypeS),
},
{
AttributeName: aws.String("company_id"),
AttributeType: aws.String(dynamodb.ScalarAttributeTypeS),
},
},
BillingMode: aws.String(dynamodb.BillingModePayPerRequest),
GlobalSecondaryIndexes: []*dynamodb.GlobalSecondaryIndex{
{
IndexName: aws.String("get_account_id"),
KeySchema: []*dynamodb.KeySchemaElement{
{
AttributeName: aws.String("company_id"),
KeyType: aws.String(dynamodb.KeyTypeHash),
},
},
Projection: &dynamodb.Projection{
ProjectionType: aws.String(dynamodb.ProjectionTypeInclude),
NonKeyAttributes: []*string{
aws.String("account_company_id"),
aws.String("company_id"),
aws.String("account_id"),
},
},
},
},
KeySchema: []*dynamodb.KeySchemaElement{
{
AttributeName: aws.String("account_company_id"),
KeyType: aws.String(dynamodb.KeyTypeHash),
},
},
StreamSpecification: &dynamodb.StreamSpecification{
StreamEnabled: aws.Bool(true),
StreamViewType: aws.String(dynamodb.StreamViewTypeNewAndOldImages),
},
TableName: aws.String("Accounts"),
}
И запрос к таблице выглядит так:
dynamodb.QueryInput{
TableName: aws.String("Accounts"),
IndexName: aws.String("get_account_id"),
KeyConditionExpression: aws.String("company_id = :id"),
Select: aws.String(dynamodb.SelectAllAttributes),
ExpressionAttributeValues: map[string]*dynamodb.AttributeValue{
":id": {S: aws.String(companyID)},
},
}
Меня смущает следующее: когда я пытаюсь запустить этот запрос против таблица в DynamoDB local, я получаю обратно все атрибуты, а не атрибуты, связанные с глобальным вторичным индексом. Это противоречит тому, что AWS говорит, что должно произойти здесь . Это потому, что я указываю dynamodb.SelectAllAttributes
в запросе или мне что-то еще не хватает?