Let's say we have a composite key : name (partition key) and timestamp (sort key)
If I query name with the latest timestamp, would I bear the cost of all entries inside the partition, or only the latest entry?
If you do a Query with Limit=1 and ScanIndexForward=False then you will get the latest value and only pay to read 1 item.
aws dynamodb query \
--table-name my-table \
--key-condition-expression "#pk = :pk" \
--expression-attribute-values '{":pk":{"S":"leeroy"}' \
--expression-attribute-names '{"#pk":"name"}' \
--no-scan-index-forward \
--limit 1
Likewise, if you know the name and timestamp you can do a GetItem and only pay to read 1 item.
aws dynamodb get-item \
--table-name my-table \
--key '{"name": {"S": "leeroy"},"timestamp": {"S": "2023-01-01T20:00:000"}}'