Error: dynamodb property projection cannot be empty

Answered by Rafal Wilinski
What's Causing This Error
This error message indicates that the ProjectionExpression property of the 'Scan' or 'Query' operation is empty or not set. The ProjectionExpression is used to specify the attributes that need to be returned from an item.
If you have provided the ProjectionExpression parameter and have given an empty string, you will run into this error.
Solution: Here's How To Resolve It
To solve this error, provide a value for the ProjectionExpression property. Generally, you can define the name of the attributes you wish to project in the operation.
Here is an example of how to perform a scan operation with a valid 'ProjectionExpression':
import boto3
# Instantiate a client
dynamodb = boto3.client('dynamodb', region_name='us-west-2')
# Define the parameters
table_name = "my_table"
projection_expression = "attribute1, attribute2"
# Perform the operation
response = dynamodb.scan(TableName=table_name,
ProjectionExpression=projection_expression)
print(response)
You can also use ExpressionAttributeNames to provide an alias for your attribute names.
import boto3
# Instantiate a client
dynamodb = boto3.client('dynamodb', region_name='us-west-2')
# Define the parameters
table_name = "my_table"
projection_expression = "#a1, #a2"
expression_attribute_names = {"#a1": "attribute1", "#a2": "attribute2"}
# Perform the operation
response = dynamodb.scan(TableName=table_name, ProjectionExpression=projection_expression,
ExpressionAttributeNames=expression_attribute_names)
print(response)
Other Common DynamoDB Errors (with Solutions)
- DynamoDB Is Unsupported It Cannot Be Instantiated
- ExpressionAttributeValues contains invalid value: One or more parameter values were invalid: An AttributeValue may not contain an empty string
- dynamodb could not instantiate class
- DynamoDB Duplicate Key Error
- failed to list tables not authorized dynamodb
- dynamodb table did not stabilize
- Error ValidationException: One or more parameter values were invalid: Type mismatch for key X expected: S actual: M
- dynamodb put function not working
- dynamodb does not support null values
- DynamoDB Error All Attributes Must Be Indexed
- DynamoDB No Provisioned Throughput specified for the table
- CORS Error DynamoDB
- error dynamodb streams must be enabled on the table
- DynamoDB string set may not be empty
- dynamodb list_append if_not_exists not working
Better DynamoDB experience.
First 7 days are on us. No strings attached.
Product Features
DynamoDB Tools
DynamoDB Info
© 2025 Dynobase