在 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
}
)
我正在使用 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
}
)