Error: dynamodb global secondary index does not project

Answered by Rafal Wilinski
What's Causing This Error
This error message indicates an issue with how the global secondary index (GSI) is used in a DynamoDB table.
Specifically, it indicates that the GSI is not projecting the necessary attributes. This can happen if the GSI is not correctly configured if the GSI is not being updated with the required attributes.
Solution: Here's How To Resolve It
To solve this error, check the configuration of the GSI to ensure that it is correctly set up and projecting the necessary attributes.
Hence, when creating the GSI, specify the attributes you want to project using the Projection property.
import boto3
# Instantiate a client
dynamodb = boto3.client('dynamodb', region_name='us-west-2')
# Define the parameters
table_name = "my_table"
gsi_name = "my_gsi"
attributes_to_project = ["attribute1", "attribute2"]
gsi_params = {
'Attribute_definitions': [
{
'Attribute_name': 'attribute1',
'attribute_type': 'S'
},
{
'attribute_name': 'attribute2',
'attribute_type': 'S'
},
],
'key_schema': [
{
'attribute_name': 'attribute1',
'key_type': 'HASH'
},
{
'attribute_name': 'attribute2',
'key_type': 'RANGE'
}
],
'projection': {
'projection_type': 'INCLUDE',
'non_key_attributes': attributes_to_project
},
'provisioned_throughput': {
'read_capacity_units': 5,
'write_capacity_units': 5
}
}
# Create the GSI
dynamodb.create_table(TableName=table_name, GlobalSecondaryIndexes=[{'IndexName': gsi_name, **gsi_params}
Other Common DynamoDB Errors (with Solutions)
- ImportError: No module named boto3 (DynamoDB)
- DynamoDB string set cannot be empty
- dynamodb index does not exist
- dynamodb could not instantiate class
- dynamodb unable to parse base64 string
- dynamodb problem function call failed
- dynamodb cannot read properties of undefined
- DynamoDB Mapper Could Not Instantiate Class
- KMS Key Access Denied Error DynamoDB
- is not authorized to perform dynamodb:* on resource
- Unable to start DynamoDB Local process
- DynamoDB Key element does not match the schema
- dynamodb condition does not exist
- error dynamodb streams must be enabled on the table
- DynamoDB - The Security Token Included In The Request Is Invalid
Tired of switching accounts and regions? Use Dynobase.
Start your 7-day free trial today
Product Features
DynamoDB Tools
DynamoDB Info
© 2025 Dynobase