在 Python 中使用 Boto3 为 DynamoDB 创建全局二级索引 (GSI)

Create Global Secondary Index (GSI) for DynamoDB using Boto3 in Python

我正在使用 Python boto3 包创建 DynamoDB table:

import boto3
ddb = boto3.resource('dynamodb')
table = ddb.create_table(
    TableName = "MyTable",
    KeySchema = [
        {
            'AttributeName': 'key1',
            'KeyType': 'HASH'
        },
        {
            'AttributeName': 'key2',
            'KeyType': 'RANGE'
        }
    ],
    AttributeDefinitions = [
        {
            'AttributeName': 'key1',
            'AttributeType': 'S'
        },
        {
            'AttributeName': 'key2',
            'AttributeType': 'S'
        }
    ],
    ProvisionedThroughput = {
        'ReadCapacityUnits': 1,
        'WriteCapacityUnits': 1
    }
)

我想知道在使用此包创建 table 时是否可以创建全局辅助密钥 (GSI) ,以及如何创建。不过,我发现可以更新 table 以包含 GSI ()。

以您为例,只需将 GlobalSecondaryIndexes 属性添加到 create_table:

import boto3
ddb = boto3.resource('dynamodb')
table = ddb.create_table(
    TableName = "MyTable",
    KeySchema = [
        {
            'AttributeName': 'key1',
            'KeyType': 'HASH'
        },
        {
            'AttributeName': 'key2',
            'KeyType': 'RANGE'
        }
    ],
    GlobalSecondaryIndexes=[
        {
            'IndexName': 'idx1',
            'KeySchema': [
               {
                  'AttributeName': 'key2',
                  'KeyType': 'HASH'
               }
             ],
             'Projection': {
               'ProjectionType': 'ALL'
             },
             'ProvisionedThroughput': {
                  'ReadCapacityUnits': 1,
                  'WriteCapacityUnits': 1
             }
        }
    ],
    AttributeDefinitions = [
        {
            'AttributeName': 'key1',
            'AttributeType': 'S'
        },
        {
            'AttributeName': 'key2',
            'AttributeType': 'S'
        }
    ],
    ProvisionedThroughput = {
        'ReadCapacityUnits': 1,
        'WriteCapacityUnits': 1
    }
)