AWS DynamoDB BatchWriteItem

AWS DynamoDB BatchWriteItem

Certified

Batch write items to DynamoDB

Puts or deletes items with BatchWriteItem, 25 per request. from takes a list of items, a single item, or a kestra:// file such as the output of a Scan with fetchType: STORE. An item is written as a put, or wrapped in putRequest or deleteRequest (with the key) to choose explicitly. Two requests for the same key in one batch of 25 fail that batch, after the earlier batches are written.

yaml
type: io.kestra.plugin.aws.dynamodb.BatchWriteItem

Batch write items from a list into a DynamoDB table

yaml
id: aws_dynamodb_batch_write_list
namespace: company.team

tasks:
  - id: batch_write
    type: io.kestra.plugin.aws.dynamodb.BatchWriteItem
    accessKeyId: "{{ secret('AWS_ACCESS_KEY_ID') }}"
    secretKeyId: "{{ secret('AWS_SECRET_KEY_ID') }}"
    region: "eu-central-1"
    tableName: "persons"
    from:
      - id: "1"
        firstname: "John"
        lastname: "Doe"
      - id: "2"
        firstname: "Jane"
        lastname: "Smith"

Batch write items with explicit putRequest and deleteRequest wrappers

yaml
id: aws_dynamodb_batch_write_puts_and_deletes
namespace: company.team

tasks:
  - id: batch_write
    type: io.kestra.plugin.aws.dynamodb.BatchWriteItem
    accessKeyId: "{{ secret('AWS_ACCESS_KEY_ID') }}"
    secretKeyId: "{{ secret('AWS_SECRET_KEY_ID') }}"
    region: "eu-central-1"
    tableName: "persons"
    from:
      - putRequest:
          id: "1"
          firstname: "John"
      - deleteRequest:
          id: "2"

Load the items read by a Scan into another table

yaml
id: aws_dynamodb_batch_write_file
namespace: company.team

tasks:
  - id: extract_customers
    type: io.kestra.plugin.aws.dynamodb.Scan
    accessKeyId: "{{ secret('AWS_ACCESS_KEY_ID') }}"
    secretKeyId: "{{ secret('AWS_SECRET_KEY_ID') }}"
    region: "eu-central-1"
    tableName: "customers_staging"

  - id: batch_write
    type: io.kestra.plugin.aws.dynamodb.BatchWriteItem
    accessKeyId: "{{ secret('AWS_ACCESS_KEY_ID') }}"
    secretKeyId: "{{ secret('AWS_SECRET_KEY_ID') }}"
    region: "eu-central-1"
    tableName: "customers"
    from: "{{ outputs.extract_customers.uri }}"
Properties

Structured data items, either as a map, a list of map, a URI, or a JSON string.

Structured data items can be defined in the following ways:

  • A single item as a map (a document).
  • A list of items as a list of maps (a list of documents).
  • A URI, supported schemes are kestra for internal storage files, file for host local files, and nsfile for namespace files.
  • A JSON String that will then be serialized either as a single item or a list of items.

Table name

Target DynamoDB table for the operation.

Access Key Id in order to connect to AWS

If no credentials are defined, we will use the default credentials provider chain to fetch credentials.

Assets this task consumes as inputs or produces as outputs, for lineage tracking and the asset graph (Enterprise Edition). A flow declaring this property on a task is rejected in the open-source edition.

Definitions
assetFailureBehaviorstring
Possible Values
IGNOREFAILWARN

Asset failure behavior

Behavior applied to the task state when a declared asset fails to render, emit, or be persisted (e.g. a lock conflict): FAIL escalates it to FAILED, WARN (default) warns it if it would otherwise succeed, IGNORE leaves the state untouched.

enableAutobooleanstring

Whether to auto-register assets referenced dynamically at runtime that are not statically declared in inputs or outputs.

inputsarray

The assets consumed as inputs.

id*string
Min length1
typestring
outputs

The assets produced as outputs.

id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*string
Min length1

Custom asset type

descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150

The endpoint with which the SDK should communicate

This property allows you to use a different S3 compatible storage backend.

Default5

Max retries for unprocessed items

Retries when DynamoDB returns unprocessed items because of throttling, between 0 and 20. Defaults to 5.

AWS region with which the SDK should communicate

Secret Key Id in order to connect to AWS

If no credentials are defined, we will use the default credentials provider chain to fetch credentials.

AWS session token, retrieved from an AWS token service, used for authenticating that this user has received temporary permissions to access a given resource

If no credentials are defined, we will use the default credentials provider chain to fetch credentials.

The AWS STS endpoint with which the SDKClient should communicate

AWS STS Role

The Amazon Resource Name (ARN) of the role to assume. If set the task will use the StsAssumeRoleCredentialsProvider. If no credentials are defined, we will use the default credentials provider chain to fetch credentials.

AWS STS External Id

A unique identifier that might be required when you assume a role in another account. This property is only used when an stsRoleArn is defined.

DefaultPT15M

AWS STS Session duration

The duration of the role session (default: 15 minutes, i.e., PT15M). This property is only used when an stsRoleArn is defined.

AWS STS Session name

This property is only used when an stsRoleArn is defined.

Default0

Number of put and delete requests applied

Unititems

The total number of put and delete requests applied to DynamoDB.