Запрос к GSI Возвращает все атрибуты в DynamoDB Local - PullRequest
0 голосов
/ 26 мая 2020

Я пытался протестировать таблицу в 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 в запросе или мне что-то еще не хватает?

...