Operation reference
This reference lists each DNML operation, its keys and the matching fields in the app.
The operations are on four pages: DynamoDB items, DynamoDB tables, Import and export, and Athena.
Operation Blocks
Each operation starts with a TOML array-of-tables header: dynamodb or athena, a dot, and the operation type.
[[dynamodb.query]]
name = "Find recent order"
tableArn = "arn:aws:dynamodb:ap-southeast-2:111122223333:table/Orders"
keyConditionExpression = "accountId = :accountId"
expressionAttributeValues = { ":accountId" = "account#42" }
scanIndexForward = false - For the run order, see Dependencies and execution.
- For block syntax, see Document structure.
- In the app, Add operation, +, in the Operations rail lists these operations. You can search by title or type, for example
dynamodb.query.
Common Keys
All operations accept these keys. Document structure has the full entries.
| Key | Type | Purpose |
|---|---|---|
name (required) | string | The display name of the operation. It must be unique in the request, and other operations use it to refer to the operation. |
description | string | Free-text notes about the operation. |
dependsOn | string or string[] | The names of the operations that must succeed before this operation runs. One name is the same as a list with one name. |
enabled | boolean | If false, Dynomate skips the operation and all operations that depend on it. The default is true. |
onError | enum: "stop" | "continue" | "ignore" | What Dynomate does when the operation fails: "stop" stops the request, "continue" skips only its dependents, and "ignore" lets dependents run without its result. The default is the request setting. |
timeoutMs | integer | The maximum time for the operation, in milliseconds. It replaces the default timeout of the operation, but the request timeout still applies. |
tags | string[] | Your own labels for the operation. They are not AWS resource tags. |
profileName | string | The AWS profile that Dynomate uses to connect. If you omit it, Dynomate uses the request default, then the profile named "default". |
region | string | The AWS region, required for Athena operations, List tables and PartiQL statements. If the operation also has a tableArn, the two regions must match. |
endpointUrl | string | A custom endpoint, for example DynamoDB Local. It must use HTTPS, or HTTP on localhost or a loopback address. An endpoint in the file needs confirmation or approval before the request runs. |
tableArn | string | The full ARN of the table, which gives its name and region. All DynamoDB operations except List tables and PartiQL statements require it. |
Athena operations use catalog, database and table name keys, not tableArn.
All Operations
Destructive shows if an operation can delete or replace data. Sometimes means that it depends on the resolved values. See Safety.
DynamoDB items
| Operation | Block | Destructive | What it does |
|---|---|---|---|
| Get item | dynamodb.get | No | Reads one item by its primary key. |
| Query | dynamodb.query | No | Reads the items that share a partition key in a table or index, across one or more pages. |
| Scan | dynamodb.scan | No | Reads all items in a table or index, with an optional filter and parallel segments. |
| Put item | dynamodb.put | Sometimes | Writes a complete item. It replaces an existing item with the same key. |
| Update item | dynamodb.update | Yes | Changes the attributes of one item with an update expression or with SET, REMOVE, ADD and DELETE clauses. |
| Delete item | dynamodb.delete | Yes | Deletes one item by its primary key, with an optional condition. |
| Batch get | dynamodb.batchGet | No | Reads many items from one table by their primary keys. |
| Batch write | dynamodb.batchWrite | Yes | Puts and deletes many items in one table. The result has a status for each write. |
| Write transaction | dynamodb.transactWrite | Yes | Applies up to 100 puts, updates, deletes and condition checks in one all-or-nothing transaction. |
| Read transaction | dynamodb.transactGet | No | Reads up to 100 items as one consistent snapshot, in the order of the gets. |
| PartiQL statement | dynamodb.executeStatement | Sometimes | Runs a PartiQL statement with positional parameters. The statement names the table. |
DynamoDB tables
| Operation | Block | Destructive | What it does |
|---|---|---|---|
| Describe table | dynamodb.describeTable | No | Returns the status, keys, indexes, billing mode, item count and time to live settings of a table. |
| List tables | dynamodb.listTables | No | Lists the table names in a region. |
| Create table | dynamodb.createTable | No | Creates a table with its keys, indexes, capacity and settings. By default, it waits until the table is active. |
| Delete table | dynamodb.deleteTable | Yes | Deletes a table and all its data. It can check guards before it sends the delete. |
| Truncate table | dynamodb.truncate | Yes | Deletes all items, or all items that match a filter, but keeps the table. |
| Update time to live | dynamodb.updateTimeToLive | Sometimes | Turns time to live expiration on or off for a table attribute. |
Import and export
| Operation | Block | Destructive | What it does |
|---|---|---|---|
| Import items | dynamodb.import | Sometimes | Writes items into a table from inline data, a local file, an S3 object or another DynamoDB table. It checks the full source first. |
| Export items | dynamodb.export | No | Scans a table and writes its items to a local file in JSON, JSON Lines, CSV or DynamoDB JSON Lines format. |
Athena
| Operation | Block | Destructive | What it does |
|---|---|---|---|
| Athena query | athena.query | Yes | Runs an Athena SQL query. By default, it waits for the query and returns its rows. |
| List databases | athena.listDatabases | No | Lists the databases in an Athena data catalog. |
| List Athena tables | athena.listTables | No | Lists the tables in an Athena database, with their columns and partition keys. |
| Describe Athena table | athena.describeTable | No | Returns the columns, partition keys and properties of one Athena table. |
Results
- Later operations read a result through the normalized operation name, for example
find_recent_order.items[0].orderId. See Result roots. - Most results have
requestId: the AWS request ID of the last AWS call, or"unknown". - Failed and skipped operations have no result, so a reference to their result fails. See Outcomes.