Ошибка при использовании глобального вторичного индекса в Dynamodb в python - PullRequest
1 голос
/ 14 июля 2020

Я создал глобальный вторичный индекс в AWS Dynamodb, где In user table, в которой я использую телефон как GSI. Я получаю сообщение об ошибке:

'Таблица UsersTable не имеет индекса: PHONE_INDEX' .

Ниже приведен фрагмент кода для таблица пользователей и телефон как GSI. Я не могу понять причину, по которой я получаю эту ошибку.

from pynamodb.models import Model
from pynamodb.indexes import GlobalSecondaryIndex, KeysOnlyProjection, AllProjection
from pynamodb.attributes import( UnicodeAttribute, NumberAttribute)
from passlib.hash import pbkdf2_sha256 as sha256
import auth.exceptions as exception

class PhoneIndex(GlobalSecondaryIndex):
    
    class Meta:
        index_name = 'PHONE_INDEX'
        read_capacity_units = 2
        write_capacity_units = 2
        # All attributes are projected
        projection = KeysOnlyProjection()

    # This attribute is the hash key for the index
    # Note that this attribute must also exist
    # in the model
    phone = UnicodeAttribute(hash_key=True)


class UserModel(Model):
    # Table Users
    if config.IS_OFFLINE:
        class Meta:
            table_name = config.USERS_TABLE
            index_name = 'PHONE_INDEX'
            host = "http://localhost:8000"
            region = config.REGION
            aws_access_key_id = 'my_access_key_id'
            aws_secret_access_key = 'my_secret_access_key'
            aws_session_token = 'my_session_token'
    else:
        class Meta:
            table_name = config.USERS_TABLE
            region = config.REGION
    customerid= UnicodeAttribute()
    phone = UnicodeAttribute()
    name = UnicodeAttribute()
    username = UnicodeAttribute(hash_key=True)
    password= UnicodeAttribute()
    phone_index=PhoneIndex()

1 Ответ

0 голосов
/ 24 июля 2020

Я получал эту ошибку, поскольку я не добавил глобальный вторичный индекс в свой файл шаблона облачной информации.

...