Like any other programming language or database, AWS DynamoDB also has a list of keywords that are reserved.
If you make use of them you will get an ValidationException error.
Error: ValidationException: Invalid KeyConditionExpression:
Attribute CLOSE is a reserved keyword
How to make use of the reserved keywords
If you need to make use of the reserved keywords as an attribute name in your expression, you can replace the reserved keyword with #(some character) and add an expression "expression-attribute-names" as shown below.
aws dynamodb get-item \
--table-name InventoryMaster \
--key '{"Id":{"N":"489282"}}' \
--projection-expression "GENERAL"
aws dynamodb get-item \
--table-name InventoryMaster \
--key '{"Id":{"N":"123"}}' \
--projection-expression "#g" \
--expression-attribute-names '{"#c":"GENERAL"}'
Lis of reserved keywords
- ABORT
- ABSOLUTE
- ACTION
- ADD
- AFTER
- AGENT
- AGGREGATE
- ALL
- ALLOCATE
- ALTER
- ANALYZE
- AND
- ANY
- ARCHIVE
- ARE
- ARRAY
- AS
- ASC
- ASCII
- ASENSITIVE
- ASSERTION
- ASYMMETRIC
- AT
- ATOMIC
- ATTACH
- ATTRIBUTE
- AUTH
- AUTHORIZATION
- AUTHORIZE
- AUTO
- AVG
- BACK
- BACKUP
- BASE
- BATCH
- BEFORE
- BEGIN
- BETWEEN
- BIGINT
- BINARY
- BIT
- BLOB
- BLOCK
- BOOLEAN
- BOTH
- BREADTH
- BUCKET
- BULK
- BY
- BYTE
- CALL
- CALLED
- CALLING
- CAPACITY
- CASCADE
- CASCADED
- CASE
- CAST
- CATALOG
- CHAR
- CHARACTER
- CHECK
- CLASS
- CLOB
- CLOSE
- CLUSTER
- CLUSTERED
- CLUSTERING
- CLUSTERS
- COALESCE
- COLLATE
- COLLATION
- COLLECTION
- COLUMN
- COLUMNS
- COMBINE
- COMMENT
- COMMIT
- COMPACT
- COMPILE
- COMPRESS
- CONDITION
- CONFLICT
- CONNECT
- CONNECTION
- CONSISTENCY
- CONSISTENT
- CONSTRAINT
- CONSTRAINTS
- CONSTRUCTOR
- CONSUMED
- CONTINUE
- CONVERT
- COPY
- CORRESPONDING
- COUNT
- COUNTER
- CREATE
- CROSS
- CUBE
- CURRENT
- CURSOR
- CYCLE
- DATA
- DATABASE
- DATE
- DATETIME
- DAY
- DEALLOCATE
- DEC
- DECIMAL
- DECLARE
- DEFAULT
- DEFERRABLE
- DEFERRED
- DEFINE
- DEFINED
- DEFINITION
- DELETE
- DELIMITED
- DEPTH
- DEREF
- DESC
- DESCRIBE
- DESCRIPTOR
- DETACH
- DETERMINISTIC
- DIAGNOSTICS
- DIRECTORIES
- DISABLE
- DISCONNECT
- DISTINCT
- DISTRIBUTE
- DO
- DOMAIN
- DOUBLE
- DROP
- DUMP
- DURATION
- DYNAMIC
- EACH
- ELEMENT
- ELSE
- ELSEIF
- EMPTY
- ENABLE
- END
- EQUAL
- EQUALS
- ERROR
- ESCAPE
- ESCAPED
- EVAL
- EVALUATE
- EXCEEDED
- EXCEPT
- EXCEPTION
- EXCEPTIONS
- EXCLUSIVE
- EXEC
- EXECUTE
- EXISTS
- EXIT
- EXPLAIN
- EXPLODE
- EXPORT
- EXPRESSION
- EXTENDED
- EXTERNAL
- EXTRACT
- FAIL
- FALSE
- FAMILY
- FETCH
- FIELDS
- FILE
- FILTER
- FILTERING
- FINAL
- FINISH
- FIRST
- FIXED
- FLATTERN
- FLOAT
- FOR
- FORCE
- FOREIGN
- FORMAT
- FORWARD
- FOUND
- FREE
- FROM
- FULL
- FUNCTION
- FUNCTIONS
- GENERAL
- GENERATE
- GET
- GLOB
- GLOBAL
- GO
- GOTO
- GRANT
- GREATER
- GROUP
- GROUPING
- HANDLER
- HASH
- HAVE
- HAVING
- HEAP
- HIDDEN
- HOLD
- HOUR
- IDENTIFIED
- IDENTITY
- IF
- IGNORE
- IMMEDIATE
- IMPORT
- IN
- INCLUDING
- INCLUSIVE
- INCREMENT
- INCREMENTAL
- INDEX
- INDEXED
- INDEXES
- INDICATOR
- INFINITE
- INITIALLY
- INLINE
- INNER
- INNTER
- INOUT
- INPUT
- INSENSITIVE
- INSERT
- INSTEAD
- INT
- INTEGER
- INTERSECT
- INTERVAL
- INTO
- INVALIDATE
- IS
- ISOLATION
- ITEM
- ITEMS
- ITERATE
- JOIN
- KEY
- KEYS
- LAG
- LANGUAGE
- LARGE
- LAST
- LATERAL
- LEAD
- LEADING
- LEAVE
- LEFT
- LENGTH
- LESS
- LEVEL
- LIKE
- LIMIT
- LIMITED
- LINES
- LIST
- LOAD
- LOCAL
- LOCALTIME
- LOCALTIMESTAMP
- LOCATION
- LOCATOR
- LOCK
- LOCKS
- LOG
- LOGED
- LONG
- LOOP
- LOWER
- MAP
- MATCH
- MATERIALIZED
- MAX
- MAXLEN
- MEMBER
- MERGE
- METHOD
- METRICS
- MIN
- MINUS
- MINUTE
- MISSING
- MOD
- MODE
- MODIFIES
- MODIFY
- MODULE
- MONTH
- MULTI
- MULTISET
- NAME
- NAMES
- NATIONAL
- NATURAL
- NCHAR
- NCLOB
- NEW
- NEXT
- NO
- NONE
- NOT
- NULL
- NULLIF
- NUMBER
- NUMERIC
- OBJECT
- OF
- OFFLINE
- OFFSET
- OLD
- ON
- ONLINE
- ONLY
- OPAQUE
- OPEN
- OPERATOR
- OPTION
- OR
- ORDER
- ORDINALITY
- OTHER
- OTHERS
- OUT
- OUTER
- OUTPUT
- OVER
- OVERLAPS
- OVERRIDE
- OWNER
- PAD
- PARALLEL
- PARAMETER
- PARAMETERS
- PARTIAL
- PARTITION
- PARTITIONED
- PARTITIONS
- PATH
- PERCENT
- PERCENTILE
- PERMISSION
- PERMISSIONS
- PIPE
- PIPELINED
- PLAN
- POOL
- POSITION
- PRECISION
- PREPARE
- PRESERVE
- PRIMARY
- PRIOR
- PRIVATE
- PRIVILEGES
- PROCEDURE
- PROCESSED
- PROJECT
- PROJECTION
- PROPERTY
- PROVISIONING
- PUBLIC
- PUT
- QUERY
- QUIT
- QUORUM
- RAISE
- RANDOM
- RANGE
- RANK
- RAW
- READ
- READS
- REAL
- REBUILD
- RECORD
- RECURSIVE
- REDUCE
- REF
- REFERENCE
- REFERENCES
- REFERENCING
- REGEXP
- REGION
- REINDEX
- RELATIVE
- RELEASE
- REMAINDER
- RENAME
- REPEAT
- REPLACE
- REQUEST
- RESET
- RESIGNAL
- RESOURCE
- RESPONSE
- RESTORE
- RESTRICT
- RESULT
- RETURN
- RETURNING
- RETURNS
- REVERSE
- REVOKE
- RIGHT
- ROLE
- ROLES
- ROLLBACK
- ROLLUP
- ROUTINE
- ROW
- ROWS
- RULE
- RULES
- SAMPLE
- SATISFIES
- SAVE
- SAVEPOINT
- SCAN
- SCHEMA
- SCOPE
- SCROLL
- SEARCH
- SECOND
- SECTION
- SEGMENT
- SEGMENTS
- SELECT
- SELF
- SEMI
- SENSITIVE
- SEPARATE
- SEQUENCE
- SERIALIZABLE
- SESSION
- SET
- SETS
- SHARD
- SHARE
- SHARED
- SHORT
- SHOW
- SIGNAL
- SIMILAR
- SIZE
- SKEWED
- SMALLINT
- SNAPSHOT
- SOME
- SOURCE
- SPACE
- SPACES
- SPARSE
- SPECIFIC
- SPECIFICTYPE
- SPLIT
- SQL
- SQLCODE
- SQLERROR
- SQLEXCEPTION
- SQLSTATE
- SQLWARNING
- START
- STATE
- STATIC
- STATUS
- STORAGE
- STORE
- STORED
- STREAM
- STRING
- STRUCT
- STYLE
- SUB
- SUBMULTISET
- SUBPARTITION
- SUBSTRING
- SUBTYPE
- SUM
- SUPER
- SYMMETRIC
- SYNONYM
- SYSTEM
- TABLE
- TABLESAMPLE
- TEMP
- TEMPORARY
- TERMINATED
- TEXT
- THAN
- THEN
- THROUGHPUT
- TIME
- TIMESTAMP
- TIMEZONE
- TINYINT
- TO
- TOKEN
- TOTAL
- TOUCH
- TRAILING
- TRANSACTION
- TRANSFORM
- TRANSLATE
- TRANSLATION
- TREAT
- TRIGGER
- TRIM
- TRUE
- TRUNCATE
- TTL
- TUPLE
- TYPE
- UNDER
- UNDO
- UNION
- UNIQUE
- UNIT
- UNKNOWN
- UNLOGGED
- UNNEST
- UNPROCESSED
- UNSIGNED
- UNTIL
- UPDATE
- UPPER
- URL
- USAGE
- USE
- USER
- USERS
- USING
- UUID
- VACUUM
- VALUE
- VALUED
- VALUES
- VARCHAR
- VARIABLE
- VARIANCE
- VARINT
- VARYING
- VIEW
- VIEWS
- VIRTUAL
- VOID
- WAIT
- WHEN
- WHENEVER
- WHERE
- WHILE
- WINDOW
- WITH
- WITHIN
- WITHOUT
- WORK
- WRAPPED
- WRITE
- YEAR
- ZONE
Note: These reserved keywords are not case-sensitive is a important point to remember.
Facing issues? Have Questions? Post them here! I am happy to answer!
- Get the total size and number of objects of a AWS S3 bucket and folders
- How to Create AWS SNS Topic using AWS CLI
- Fix: Amazon Linux bash: sudo: command not found
- [Solution] AWS Java SDK S3 AmazonS3Exception InvalidAccessKeyId
- Create an AWS User using CLI2 Command at a specific Path
- Fix: Missing the following required SSO configuration values: sso_start_url, sso_region
- Fix: zsh: command not found: aws (Mac/macOS)
- Configure AWS Access ID and Secret Keys using CLI on Mac
- Quick way to setup AWS DynamoDB locally on macOS
- Most Essencial AWS CLI 2 S3 ls Command Options
- How to Check AWS SNS Permissions using CLI
- AWS CLI Change Default Output Format
- How to install AWS CLI on Ubuntu
- Quick way to install AWS CLI for macOS Terminal
- Install AWS CLI using Brew Command
- AWS CLI Command to Get a List of SNS Topics
- Get List of AWS SNS Topic Subscriptions using CLI
- How to Setup AWS Credentials using Visual Studio Code
- Installing AWS CLI Version 2 on macOS Sonoma using Terminal
- AW3 CLI command to get list of all region names
- AWS SNS CLI Command Publish Message Attributes
- Create an S3 bucket in a specific AWS region using CLI Command
- [Fix] zsh: command not found: awscli [Mac Terminal]
- Understanding AWS Calculator: DynamoDB on-demand capacity
- [Solution] com.amazonaws.dynamodb.v20120810 MissingAuthenticationToken Key Id or X.509 certificate
- Fix Xcode: Git Repository Creation Failed - Git
- Deep Dive into Java 8 Predicate Interface - Java
- How to install PowerShell on Mac using Brew - Powershell
- REST API to get all Jira projects - Postman, Basic Auth - Jira
- Online Lorem Ipsum Text Generator Tool - Tools
- Failed to load resource: net::ERR_CACHE_MISS PHP - PHP
- How to know the Model Number & Part Number of your iPhone - iOS
- Bash Command to Get Absolute Path for a File - Bash