Amazon DynamoDB
App · Databases · 20 actions
Read and write items in Amazon DynamoDB tables - get, put, update, query, scan, batches, transactions and PartiQL - and create, configure and tag tables.
Actions
| Action | What it does |
|---|---|
| Batch get items | Read up to 100 items of one table by key in one step. |
| Batch write items | Put and/or delete up to 25 items of one table in one step. |
| Create table | Create a table with a partition key and optional sort key, then wait until it is ready. |
| Delete item | Delete one item by its key, and report whether there was one to delete. |
| Delete table | Delete a table and every item in it. |
| Describe table | Read a table's key, status, capacity, indexes and approximate item count and size (DynamoDB refreshes those two periodically). |
| Get item | Read one item by its full primary key. |
| Get Time to Live | Check whether expired items are deleted automatically, and which attribute holds their expiry time. |
| List table tags | Read a table's tags as key: value pairs. |
| List tables | List the names of the tables in the connected region. |
| Put item | Create an item, or replace the whole item that has the same key. |
| Query items | Read the items that share a partition key, optionally narrowed by the sort key, in sort-key order. |
| Run PartiQL statement | Run one PartiQL (SQL-compatible) statement: a SELECT, or an INSERT, UPDATE or DELETE of a single item. |
| Scan table | Read every item in a table or index, a page (up to 1 MB) at a time. |
| Set Time to Live | Turn automatic deletion of expired items on or off. |
| Tag table | Add tags to a table, or change existing ones' values (up to 50 tags per table). |
| Transact write items | Apply up to 100 puts, updates, deletes and condition checks all-or-nothing, across tables in the region. |
| Untag table | Remove tags from a table by key. |
| Update item | Set or remove some attributes of an item, leaving the rest. |
| Update table | Change a table's billing mode, capacity, table class or deletion protection, then wait until it is ready. |
Batch get items
Read up to 100 items of one table by key in one step. Items come back in no particular order; keys with no item are listed in missing_keys.
Inputs
- Table
tabletextRequired - Pick a table, or enter its name, ARN or DynamoDB console address. It must be in the region you connected with.
- Keys
keyslistRequired - A list of keys, each an object like {"pk": "customer#1", "sk": 1}. At most 100.
- Attributes to return
attributeslist - Only return these attributes (use a.b for a nested one). Leave empty for every attribute.
- Consistent read
consistent_readtrue/false - Read the latest committed data (costs twice the read capacity). Not available on a global secondary index.Default:
false.
Outputs
resultobject
Example output
{
"result": {
"count": 1,
"items": [
{
"lines": [
"book",
"pen"
],
"pk": "customer#1",
"sk": 1,
"status": "paid",
"total": 42.5
}
],
"missing_keys": [
{
"pk": "customer#1",
"sk": 9
}
],
"unprocessed_keys": []
}
}Batch write items
Put and/or delete up to 25 items of one table in one step. Each write stands alone (it is not a transaction) and takes no conditions.
Inputs
- Table
tabletextRequired - Pick a table, or enter its name, ARN or DynamoDB console address. It must be in the region you connected with.
- Items to put
put_itemslist - Items to create or replace, each an object including its key.
- Keys to delete
delete_keyslist - Keys of items to delete, each an object.
Outputs
resultobject
Example output
{
"result": {
"delete_count": 0,
"put_count": 2,
"unprocessed": [],
"unprocessed_count": 0
}
}Create table
Create a table with a partition key and optional sort key, then wait until it is ready. Provisioned capacity (default 5 read / 5 write) is covered by the AWS free tier; on-demand is billed per request.
Inputs
- Table name
table_nametextRequired - 3-255 letters, digits, '_', '-' and '.'. Unique in the region.
- Partition key name
partition_key_nametextRequired - The attribute every item is looked up by, for example 'pk' or 'customer_id'.
- Partition key type
partition_key_typetext - The partition key's type.One of:
S(String),N(Number),B(Binary). Default:S. - Sort key name
sort_key_nametext - Optional second key that orders items sharing a partition key, for example 'created_at'.
- Sort key type
sort_key_typetext - The sort key's type.One of:
S(String),N(Number),B(Binary). Default:S. - Billing mode
billing_modetext - Provisioned capacity is covered by the free tier (25 read and 25 write units per region); on-demand bills every request.One of:
PROVISIONED(Provisioned capacity (covered by the free tier)),PAY_PER_REQUEST(On-demand (billed per request)). Default:PROVISIONED. - Read capacity units
read_capacity_unitsnumber - Provisioned billing only. Reads per second (4 KB each, strongly consistent). The free tier covers 25 in total per region.From 1 to 40000.
- Write capacity units
write_capacity_unitsnumber - Provisioned billing only. Writes per second (1 KB each). The free tier covers 25 in total per region.From 1 to 40000.
- Table class
table_classtext - Standard suits most tables; Infrequent Access costs less to store and more to read and write.One of:
STANDARD,STANDARD_INFREQUENT_ACCESS(Standard - Infrequent Access). - Deletion protection
deletion_protectiontrue/false - Block Delete table until this is turned off again.
- Tags
tagsobject - Cost-allocation tags as key: value pairs.
- Wait until ready
wait_until_activetrue/false - Wait (up to about 90 seconds) until the table is ACTIVE, so the next step can use it straight away.Default:
true.
Outputs
resultobject
Example output
{
"result": {
"active": true,
"table": {
"billing_mode": "PROVISIONED",
"created_at": "2026-09-28T08:00:00Z",
"deletion_protection_enabled": false,
"encryption_type": null,
"global_secondary_indexes": [
{
"index_arn": "arn:aws:dynamodb:us-east-1:123456789012:table/orders/index/by-status",
"index_name": "by-status",
"item_count": 3,
"partition_key": {
"name": "status",
"type": "S"
},
"projection_type": "ALL",
"size_bytes": 312,
"sort_key": null,
"status": "ACTIVE"
}
],
"item_count": 3,
"latest_stream_arn": null,
"local_secondary_indexes": [],
"partition_key": {
"name": "pk",
"type": "S"
},
"read_capacity_units": 5,
"size_bytes": 312,
"sort_key": {
"name": "sk",
"type": "N"
},
"status": "ACTIVE",
"stream_enabled": false,
"table_arn": "arn:aws:dynamodb:us-east-1:123456789012:table/orders",
"table_class": "STANDARD",
"table_id": "4b6c1e3a-2f0d-4f7e-9c35-6d1f2a8b7e10",
"table_name": "orders",
"write_capacity_units": 5
}
}
}Delete item
Delete one item by its key, and report whether there was one to delete.
Inputs
- Table
tabletextRequired - Pick a table, or enter its name, ARN or DynamoDB console address. It must be in the region you connected with.
- Key
keyobjectRequired - The item's full primary key: its partition key, plus its sort key if the table has one. For example pk: customer#1, sk: 42.
- Only if it exists
only_if_existstrue/false - Fail when no item has this key.Default:
false. - Condition expression
condition_expressiontext - Only write if this is true, for example '#s = :expected'. Put the names and values it uses in the two fields below.
- Expression attribute names
expression_attribute_namesobject - Placeholders for attribute names in your expressions, for example #s: status. Needed for reserved words such as 'status' or 'name'.
- Expression attribute values
expression_attribute_valuesobject - Placeholders for values in your expressions, for example :expected: paid.
Outputs
resultobject
Example output
{
"result": {
"deleted": true,
"deleted_item": {
"lines": [
"book",
"pen"
],
"pk": "customer#1",
"sk": 1,
"status": "paid",
"total": 42.5
},
"key": {
"pk": "customer#1",
"sk": 1
}
}
}Delete table
Delete a table and every item in it. There is no undo. A table with deletion protection on must have it turned off first.
Inputs
- Table
tabletextRequired - Pick a table, or enter its name, ARN or DynamoDB console address. It must be in the region you connected with.
Outputs
resultobject
Example output
{
"result": {
"deleted": true,
"status": "DELETING",
"table_arn": "arn:aws:dynamodb:us-east-1:123456789012:table/orders",
"table_name": "orders"
}
}Describe table
Read a table's key, status, capacity, indexes and approximate item count and size (DynamoDB refreshes those two periodically).
Inputs
- Table
tabletextRequired - Pick a table, or enter its name, ARN or DynamoDB console address. It must be in the region you connected with.
Outputs
resultobject
Example output
{
"result": {
"table": {
"billing_mode": "PROVISIONED",
"created_at": "2026-09-28T08:00:00Z",
"deletion_protection_enabled": false,
"encryption_type": null,
"global_secondary_indexes": [
{
"index_arn": "arn:aws:dynamodb:us-east-1:123456789012:table/orders/index/by-status",
"index_name": "by-status",
"item_count": 3,
"partition_key": {
"name": "status",
"type": "S"
},
"projection_type": "ALL",
"size_bytes": 312,
"sort_key": null,
"status": "ACTIVE"
}
],
"item_count": 3,
"latest_stream_arn": null,
"local_secondary_indexes": [],
"partition_key": {
"name": "pk",
"type": "S"
},
"read_capacity_units": 5,
"size_bytes": 312,
"sort_key": {
"name": "sk",
"type": "N"
},
"status": "ACTIVE",
"stream_enabled": false,
"table_arn": "arn:aws:dynamodb:us-east-1:123456789012:table/orders",
"table_class": "STANDARD",
"table_id": "4b6c1e3a-2f0d-4f7e-9c35-6d1f2a8b7e10",
"table_name": "orders",
"write_capacity_units": 5
}
}
}Get item
Read one item by its full primary key. A missing item returns found: false rather than failing.
Inputs
- Table
tabletextRequired - Pick a table, or enter its name, ARN or DynamoDB console address. It must be in the region you connected with.
- Key
keyobjectRequired - The item's full primary key: its partition key, plus its sort key if the table has one. For example pk: customer#1, sk: 42.
- Attributes to return
attributeslist - Only return these attributes (use a.b for a nested one). Leave empty for every attribute.
- Consistent read
consistent_readtrue/false - Read the latest committed data (costs twice the read capacity). Not available on a global secondary index.Default:
false.
Outputs
resultobject
Example output
{
"result": {
"found": true,
"item": {
"lines": [
"book",
"pen"
],
"pk": "customer#1",
"sk": 1,
"status": "paid",
"total": 42.5
},
"key": {
"pk": "customer#1",
"sk": 1
}
}
}Get Time to Live
Check whether expired items are deleted automatically, and which attribute holds their expiry time.
Inputs
- Table
tabletextRequired - Pick a table, or enter its name, ARN or DynamoDB console address. It must be in the region you connected with.
Outputs
resultobject
Example output
{
"result": {
"attribute_name": "expires_at",
"enabled": true,
"status": "ENABLED",
"table": "orders"
}
}List table tags
Read a table's tags as key: value pairs.
Inputs
- Table
tabletextRequired - Pick a table, or enter its name, ARN or DynamoDB console address. It must be in the region you connected with.
- Next token
next_tokentext - The 'next_token' from a previous page, to read the next one.
Outputs
resultobject
Example output
{
"result": {
"count": 1,
"has_more": false,
"next_token": null,
"table_arn": "arn:aws:dynamodb:us-east-1:123456789012:table/orders",
"tags": {
"team": "billing"
}
}
}List tables
List the names of the tables in the connected region.
Inputs
- Limit
limitnumber - How many table names per page, 1-100. Default 100.From 1 to 100.
- Next token
next_tokentext - The 'next_token' from a previous page, to read the next one.
Outputs
resultobject
Example output
{
"result": {
"count": 2,
"has_more": false,
"next_token": null,
"table_names": [
"customers",
"orders"
]
}
}Put item
Create an item, or replace the whole item that has the same key. Turn on 'Only if new' to never overwrite.
Inputs
- Table
tabletextRequired - Pick a table, or enter its name, ARN or DynamoDB console address. It must be in the region you connected with.
- Item
itemobjectRequired - The item's attributes, including its key. Values can be text, numbers, true/false, lists or objects.
- Only if new
only_if_newtrue/false - Fail instead of overwriting an existing item.Default:
false. - Condition expression
condition_expressiontext - Only write if this is true, for example '#s = :expected'. Put the names and values it uses in the two fields below.
- Expression attribute names
expression_attribute_namesobject - Placeholders for attribute names in your expressions, for example #s: status. Needed for reserved words such as 'status' or 'name'.
- Expression attribute values
expression_attribute_valuesobject - Placeholders for values in your expressions, for example :expected: paid.
- Return
return_valuestext - Also return the item this one replaced.One of:
NONE(Nothing),ALL_OLD(The whole item as it was before). Default:NONE.
Outputs
resultobject
Example output
{
"result": {
"item": {
"lines": [
"book",
"pen"
],
"pk": "customer#1",
"sk": 1,
"status": "paid",
"total": 42.5
},
"key": {
"pk": "customer#1",
"sk": 1
},
"old_item": null,
"written": true
}
}Query items
Read the items that share a partition key, optionally narrowed by the sort key, in sort-key order. Only the key values are needed; the key names come from the table.
Inputs
- Table
tabletextRequired - Pick a table, or enter its name, ARN or DynamoDB console address. It must be in the region you connected with.
- Partition key value
partition_key_valuetextRequired - The partition key value to read, for example customer#1.
- Sort key condition
sort_key_operatortext - Narrow by the sort key. Leave empty for every item.One of:
=(equals),<(less than),<=(less than or equal to),>(greater than),>=(greater than or equal to),begins_with(begins with),between(between (inclusive)). - Sort key value
sort_key_valuetext - The sort key value to compare with.
- Sort key value (end)
sort_key_value_endtext - With 'between': the upper bound (inclusive).
- Index
index_nametext - Read a secondary index instead of the table. Leave empty for the table.
- Filter expression
filter_expressiontext - Drop items that do not match, for example '#s = :s'. Applied after reading, so filtered-out items still use read capacity.
- Expression attribute names
expression_attribute_namesobject - Placeholders for attribute names in your expressions, for example #s: status. Needed for reserved words such as 'status' or 'name'.
- Expression attribute values
expression_attribute_valuesobject - Placeholders for values in your expressions, for example :expected: paid.
- Attributes to return
attributeslist - Only return these attributes (use a.b for a nested one). Leave empty for every attribute.
- Newest / highest first
descendingtrue/false - Return items in descending sort-key order.Default:
false. - Consistent read
consistent_readtrue/false - Read the latest committed data (costs twice the read capacity). Not available on a global secondary index.Default:
false. - Count only
count_onlytrue/false - Return only how many items match, not the items.Default:
false. - Limit
limitnumber - Stop after evaluating this many items (before the filter). A page also stops at 1 MB.From 1 to 1000000.
- Next token
next_tokentext - The 'next_token' from a previous page, to read the next one.
Outputs
resultobject
Example output
{
"result": {
"count": 1,
"has_more": true,
"items": [
{
"lines": [
"book",
"pen"
],
"pk": "customer#1",
"sk": 1,
"status": "paid",
"total": 42.5
}
],
"last_evaluated_key": {
"pk": "customer#1",
"sk": 1
},
"next_token": "eyJwayI6eyJTIjoiY3VzdG9tZXIjMSJ9LCJzayI6eyJOIjoiMiJ9fQ==",
"scanned_count": 1
}
}Run PartiQL statement
Run one PartiQL (SQL-compatible) statement: a SELECT, or an INSERT, UPDATE or DELETE of a single item. Use '?' for values and list them in Parameters.
Inputs
- Statement
statementtextRequired - The statement. Put the table name in double quotes and text values in single quotes, or use '?'.
- Parameters
parameterslist - The values for each '?', in order.
- Consistent read
consistent_readtrue/false - Read the latest committed data (costs twice the read capacity). Not available on a global secondary index.Default:
false. - Limit
limitnumber - SELECT only: stop after evaluating this many items.From 1 to 1000000.
- Next token
next_tokentext - The 'next_token' from a previous page, to read the next one.
Outputs
resultobject
Example output
{
"result": {
"count": 1,
"has_more": false,
"items": [
{
"lines": [
"book",
"pen"
],
"pk": "customer#1",
"sk": 1,
"status": "paid",
"total": 42.5
}
],
"next_token": null
}
}Scan table
Read every item in a table or index, a page (up to 1 MB) at a time. Every item read uses read capacity, even ones the filter drops - prefer Query items when you know the partition key.
Inputs
- Table
tabletextRequired - Pick a table, or enter its name, ARN or DynamoDB console address. It must be in the region you connected with.
- Index
index_nametext - Read a secondary index instead of the table. Leave empty for the table.
- Filter expression
filter_expressiontext - Drop items that do not match, for example '#s = :s'. Applied after reading, so filtered-out items still use read capacity.
- Expression attribute names
expression_attribute_namesobject - Placeholders for attribute names in your expressions, for example #s: status. Needed for reserved words such as 'status' or 'name'.
- Expression attribute values
expression_attribute_valuesobject - Placeholders for values in your expressions, for example :expected: paid.
- Attributes to return
attributeslist - Only return these attributes (use a.b for a nested one). Leave empty for every attribute.
- Consistent read
consistent_readtrue/false - Read the latest committed data (costs twice the read capacity). Not available on a global secondary index.Default:
false. - Count only
count_onlytrue/false - Return only how many items match, not the items.Default:
false. - Limit
limitnumber - Stop after evaluating this many items (before the filter). A page also stops at 1 MB.From 1 to 1000000.
- Next token
next_tokentext - The 'next_token' from a previous page, to read the next one.
Outputs
resultobject
Example output
{
"result": {
"count": 1,
"has_more": true,
"items": [
{
"lines": [
"book",
"pen"
],
"pk": "customer#1",
"sk": 1,
"status": "paid",
"total": 42.5
}
],
"last_evaluated_key": {
"pk": "customer#1",
"sk": 1
},
"next_token": "eyJwayI6eyJTIjoiY3VzdG9tZXIjMSJ9LCJzayI6eyJOIjoiMiJ9fQ==",
"scanned_count": 1
}
}Set Time to Live
Turn automatic deletion of expired items on or off. The attribute must hold the expiry time as a number of epoch seconds. Deletion is free and typically happens within two days of expiry. A table allows one change per hour.
Inputs
- Table
tabletextRequired - Pick a table, or enter its name, ARN or DynamoDB console address. It must be in the region you connected with.
- Enabled
enabledtrue/falseRequired - On to delete expired items, off to stop.Default:
true. - Expiry attribute
attribute_nametext - The attribute holding the expiry time, for example 'expires_at'. When turning off, leave empty to use the current one.
Outputs
resultobject
Example output
{
"result": {
"attribute_name": "expires_at",
"enabled": true,
"table": "orders"
}
}Tag table
Add tags to a table, or change existing ones' values (up to 50 tags per table).
Inputs
- Table
tabletextRequired - Pick a table, or enter its name, ARN or DynamoDB console address. It must be in the region you connected with.
- Tags
tagsobjectRequired - Tags as key: value pairs.
Outputs
resultobject
Example output
{
"result": {
"table_arn": "arn:aws:dynamodb:us-east-1:123456789012:table/orders",
"tagged": true,
"tags": {
"team": "billing"
}
}
}Transact write items
Apply up to 100 puts, updates, deletes and condition checks all-or-nothing, across tables in the region. If any condition fails, nothing is written and the step names the operation that failed. Costs twice the write capacity.
Inputs
- Operations
operationslistRequired - A list of operations, each an object with 'action' (put, update, delete or condition_check), 'table', and 'item' (put) or 'key' (the others). Updates take 'set_attributes' or 'update_expression'; any of them can take 'condition_expression', 'expression_attribute_names' and 'expression_attribute_values'.
- Client request token
client_request_tokentext - Optional, up to 36 characters: repeating a transaction with the same token shortly afterwards does not apply it twice.
Outputs
resultobject
Example output
{
"result": {
"committed": true,
"operation_count": 2,
"operations": [
{
"action": "update",
"table": "stock"
},
{
"action": "update",
"table": "stock"
}
]
}
}Untag table
Remove tags from a table by key. Missing keys are ignored.
Inputs
- Table
tabletextRequired - Pick a table, or enter its name, ARN or DynamoDB console address. It must be in the region you connected with.
- Tag keys
tag_keyslistRequired - The tag keys to remove.
Outputs
resultobject
Example output
{
"result": {
"removed_tag_keys": [
"team"
],
"table_arn": "arn:aws:dynamodb:us-east-1:123456789012:table/orders",
"untagged": true
}
}Update item
Set or remove some attributes of an item, leaving the rest. Creates the item if the key is new, unless 'Only if it exists' is on.
Inputs
- Table
tabletextRequired - Pick a table, or enter its name, ARN or DynamoDB console address. It must be in the region you connected with.
- Key
keyobjectRequired - The item's full primary key: its partition key, plus its sort key if the table has one. For example pk: customer#1, sk: 42.
- Set attributes
set_attributesobject - Attributes to set, as name: new value.
- Remove attributes
remove_attributeslist - Attribute names to remove from the item.
- Update expression
update_expressiontext - Advanced, instead of the two fields above: a DynamoDB update expression, for example 'ADD #n :one'.
- Only if it exists
only_if_existstrue/false - Fail instead of creating an item that is not there.Default:
false. - Condition expression
condition_expressiontext - Only write if this is true, for example '#s = :expected'. Put the names and values it uses in the two fields below.
- Expression attribute names
expression_attribute_namesobject - Placeholders for attribute names in your expressions, for example #s: status. Needed for reserved words such as 'status' or 'name'.
- Expression attribute values
expression_attribute_valuesobject - Placeholders for values in your expressions, for example :expected: paid.
- Return
return_valuestext - What to return. Default: the whole item as it is now.One of:
NONE(Nothing),ALL_OLD(The whole item as it was before),UPDATED_OLD(Only the changed attributes, before),ALL_NEW(The whole item as it is now),UPDATED_NEW(Only the changed attributes, now). Default:ALL_NEW.
Outputs
resultobject
Example output
{
"result": {
"item": {
"lines": [
"book",
"pen"
],
"pk": "customer#1",
"sk": 1,
"status": "paid",
"total": 42.5
},
"key": {
"pk": "customer#1",
"sk": 1
},
"updated": true
}
}Update table
Change a table's billing mode, capacity, table class or deletion protection, then wait until it is ready. Only the fields you fill in change. A table can switch to on-demand at most four times in 24 hours.
Inputs
- Table
tabletextRequired - Pick a table, or enter its name, ARN or DynamoDB console address. It must be in the region you connected with.
- Billing mode
billing_modetext - Leave empty to keep the current mode. Switching to Provisioned needs both capacity fields.One of:
PROVISIONED(Provisioned capacity (covered by the free tier)),PAY_PER_REQUEST(On-demand (billed per request)). - Read capacity units
read_capacity_unitsnumber - Provisioned billing only. Reads per second (4 KB each, strongly consistent). The free tier covers 25 in total per region.From 1 to 40000.
- Write capacity units
write_capacity_unitsnumber - Provisioned billing only. Writes per second (1 KB each). The free tier covers 25 in total per region.From 1 to 40000.
- Table class
table_classtext - Standard suits most tables; Infrequent Access costs less to store and more to read and write.One of:
STANDARD,STANDARD_INFREQUENT_ACCESS(Standard - Infrequent Access). - Deletion protection
deletion_protectiontrue/false - Block Delete table until this is turned off again.
- Wait until ready
wait_until_activetrue/false - Wait (up to about 90 seconds) until the table is ACTIVE, so the next step can use it straight away.Default:
true.
Outputs
resultobject
Example output
{
"result": {
"active": true,
"changed": [
"ProvisionedThroughput"
],
"table": {
"billing_mode": "PROVISIONED",
"created_at": "2026-09-28T08:00:00Z",
"deletion_protection_enabled": false,
"encryption_type": null,
"global_secondary_indexes": [
{
"index_arn": "arn:aws:dynamodb:us-east-1:123456789012:table/orders/index/by-status",
"index_name": "by-status",
"item_count": 3,
"partition_key": {
"name": "status",
"type": "S"
},
"projection_type": "ALL",
"size_bytes": 312,
"sort_key": null,
"status": "ACTIVE"
}
],
"item_count": 3,
"latest_stream_arn": null,
"local_secondary_indexes": [],
"partition_key": {
"name": "pk",
"type": "S"
},
"read_capacity_units": 5,
"size_bytes": 312,
"sort_key": {
"name": "sk",
"type": "N"
},
"status": "ACTIVE",
"stream_enabled": false,
"table_arn": "arn:aws:dynamodb:us-east-1:123456789012:table/orders",
"table_class": "STANDARD",
"table_id": "4b6c1e3a-2f0d-4f7e-9c35-6d1f2a8b7e10",
"table_name": "orders",
"write_capacity_units": 5
}
}
}