{ "apiVersion": "camel.apache.org/v1", "kind": "Kamelet", "metadata": { "name": "aws-ddb-streams-source", "annotations": { "camel.apache.org/kamelet.support.level": "Stable", "camel.apache.org/catalog.version": "4.22.1", "camel.apache.org/kamelet.icon": "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNNzQuMTc0IDMxLjgwN2w3LjQzNyA1LjM2N3YtNy42MDJsLTcuNDgtOC43NjV2MTAuOTU3bC4wNDMuMDE1eiIvPjxwYXRoIGZpbGw9IiM1Mjk0Q0YiIGQ9Ik01OS44MzggODUuNjY2bDE0LjI5My03LjE0NlYyMC43OTFsLTE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMjA1Qjk4IiBkPSJNMzkuNDk2IDg1LjY2NkwyNS4yMDMgNzguNTJWMjAuNzkxbDE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNMzkuNTA2IDEzLjY2N2gyMC4zMjF2NzEuOTk5SDM5LjUwNnpNNzQuMTMxIDY3LjU2NFY3OC41Mmw3LjQ4LTguNzY0di03LjYwMmwtNy40MzcgNS4zOTd6TTc0LjEzMSA2Mi45MzZsLjA0My0uMDEgNy40MzctNHYtNy42NDlsLTcuNDguNjg4ek03NC4xNzQgMzYuNDI5bC0uMDQzLS4wMVY0Ny4zNWw3LjQ4LjY5OXYtNy42NDV6Ii8+PHBhdGggZmlsbD0iIzFBNDc2RiIgZD0iTTgxLjYxMSA0OC4wNDlsLTcuNDgtLjY5OS0xNC4zMDMtLjU3MkgzOS41MDZsLTE0LjMwMy41NzJWMzYuNDQzbC0uMDE1LjAwOC4wMTUtLjAzMiAxNC4zMDMtMy4zMTRINTkuODI4bDE0LjMwMyAzLjMxNCA1LjI1OCAyLjc5NXYtMS43OTdsMi4yMjItLjI0My03LjQ4LTUuNDEtMTQuMzAzLTQuNDMySDM5LjUwNmwtMTQuMzAzIDQuNDMyVjIwLjgwN2wtNy40OCA4Ljc2M3Y3LjY1M2wuMDU4LS4wNDIgMi4xNjQuMjM2djEuODM0bC0yLjIyMiAxLjE4OXY3LjYxNWwuMDU4LS4wMDYgMi4xNjQuMDMydjMuMTk2bC0xLjg2Ny4wMjgtLjM1NS0uMDM0djcuNjE4bDIuMjIyIDEuMTk1djEuODU1bC0yLjEyOS4yMzUtLjA5My0uMDd2Ny42NTJsNy40OCA4Ljc2NFY2Ny41NjRsMTQuMzAzIDQuNDMySDU5LjgyOGwxNC4zNDUtNC40NDUgNy40MzgtNS4zNjctMi4yMjItLjI0NXYtMS44MThsLTUuMjE2IDIuODA1LTE0LjM0NSAzLjI5NXYuMDA0SDM5LjUwNnYtLjAwNGwtMTQuMzQ4LTMuMjk1LS4wMjUtLjA1MS4wNy4wMzdWNTEuOTY1bDE0LjMwMy41N3YuMDE0SDU5LjgyOHYtLjAxNGwxNC4zMDMtLjU3IDcuNDgtLjY1Ni0yLjIyMi0uMDMydi0zLjE5NnoiLz48L3N2Zz4=", "camel.apache.org/provider": "Apache Software Foundation", "camel.apache.org/kamelet.group": "AWS DynamoDB Streams", "camel.apache.org/kamelet.namespace": "AWS" }, "labels": { "camel.apache.org/kamelet.type": "source" } }, "spec": { "definition": { "title": "AWS DynamoDB Streams Source", "description": "Receive events from Amazon DynamoDB Streams.", "required": [ "table", "region" ], "type": "object", "properties": { "table": { "title": "Table", "description": "The name of the DynamoDB table.", "type": "string" }, "accessKey": { "title": "Access Key", "description": "The access key obtained from AWS.", "type": "string", "format": "password", "x-descriptors": [ "urn:camel:group:credentials" ] }, "secretKey": { "title": "Secret Key", "description": "The secret key obtained from AWS.", "type": "string", "format": "password", "x-descriptors": [ "urn:camel:group:credentials" ] }, "region": { "title": "AWS Region", "description": "The AWS region to access.", "type": "string", "enum": [ "ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global" ] }, "streamIteratorType": { "title": "Stream Iterator Type", "description": "Defines where in the DynamoDB stream to start getting records. There are two enums and the value can be one of FROM_LATEST and FROM_START. Note that using FROM_START can cause a significant delay before the stream has caught up to real-time.", "type": "string", "default": "FROM_LATEST" }, "useDefaultCredentialsProvider": { "title": "Default Credentials Provider", "description": "If `true`, the DynamoDB client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).", "type": "boolean", "default": false }, "useProfileCredentialsProvider": { "title": "Profile Credentials Provider", "description": "Set whether the DynamoDB client should expect to load credentials through a profile credentials provider.", "type": "boolean", "default": false }, "useSessionCredentials": { "title": "Session Credentials", "description": "Set whether the DynamoDB client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in DynamoDB.", "type": "boolean", "default": false }, "profileCredentialsName": { "title": "Profile Credentials Name", "description": "If using a profile credentials provider this parameter sets the profile name.", "type": "string" }, "sessionToken": { "title": "Session Token", "description": "Amazon AWS Session Token used when the user needs to assume a IAM role.", "type": "string", "format": "password", "x-descriptors": [ "urn:camel:group:credentials" ] }, "uriEndpointOverride": { "title": "Overwrite Endpoint URI", "description": "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.", "type": "string" }, "overrideEndpoint": { "title": "Endpoint Overwrite", "description": "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.", "type": "boolean", "default": false }, "delay": { "title": "Delay", "description": "The number of milliseconds before the next poll from the database.", "type": "integer", "default": 500 } } }, "dataTypes": { "out": { "default": "json", "headers": { "CamelAwsDdbStreamEventSource": { "title": "The DDB Stream Event Source", "description": "The Amazon Web Services service from which the stream record originated. For DynamoDB Streams, this is aws:dynamodb.", "type": "string" }, "CamelAwsDdbStreamEventId": { "title": "The DDB Stream Event Id", "description": "A globally unique identifier for the event that was recorded in this stream record.", "type": "string" } }, "types": { "json": { "format": "application-json", "description": "Default Json representation of a DDB Stream Event.", "mediaType": "application/json" }, "cloudevents": { "format": "aws2-ddbstream:application-cloudevents", "description": "Data type transformer converts AWS Dynamo DB Streams get records response to CloudEvent v1_0 data format. The data type sets Camel specific CloudEvent headers with values extracted from AWS Dynamo DB Streams get records.", "headers": { "CamelCloudEventID": { "title": "CloudEvent ID", "description": "The Camel exchange id set as event id.", "type": "string" }, "CamelCloudEventType": { "title": "CloudEvent Type", "description": "The event type.", "default": "org.apache.camel.event.aws.ddbstream.getRecords", "type": "string" }, "CamelCloudEventSource": { "title": "CloudEvent Source", "description": "The event source. By default, the DDB Stream Event source receipt handle with prefix \"aws.ddbstream.\".", "type": "string" }, "CamelCloudEventSubject": { "title": "CloudEvent Subject", "description": "The event subject. The DDB Stream Event Id.", "type": "string" }, "CamelCloudEventTime": { "title": "CloudEvent Time", "description": "The exchange creation timestamp as event time.", "type": "string" } } } } } }, "dependencies": [ "camel:gson", "camel:aws2-ddb", "camel:kamelet" ], "template": { "from": { "uri": "aws2-ddbstream:{{table}}", "parameters": { "secretKey": "{{?secretKey}}", "accessKey": "{{?accessKey}}", "region": "{{region}}", "streamIteratorType": "{{streamIteratorType}}", "useDefaultCredentialsProvider": "{{useDefaultCredentialsProvider}}", "useProfileCredentialsProvider": "{{useProfileCredentialsProvider}}", "useSessionCredentials": "{{useSessionCredentials}}", "uriEndpointOverride": "{{?uriEndpointOverride}}", "profileCredentialsName": "{{?profileCredentialsName}}", "sessionToken": "{{?sessionToken}}", "overrideEndpoint": "{{overrideEndpoint}}", "delay": "{{delay}}" }, "steps": [ { "transformDataType": { "toType": "aws2-ddb:application-x-struct" } }, { "to": "kamelet:sink" } ] } } }, "propertiesSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "title": "AWS DynamoDB Streams Source", "description": "Receive events from Amazon DynamoDB Streams.", "required": [ "table", "region" ], "properties": { "table": { "type": "string", "title": "Table", "description": "The name of the DynamoDB table." }, "accessKey": { "type": "string", "title": "Access Key", "description": "The access key obtained from AWS.", "format": "password" }, "secretKey": { "type": "string", "title": "Secret Key", "description": "The secret key obtained from AWS.", "format": "password" }, "region": { "type": "string", "title": "AWS Region", "description": "The AWS region to access.", "enum": [ "ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global" ] }, "streamIteratorType": { "type": "string", "title": "Stream Iterator Type", "description": "Defines where in the DynamoDB stream to start getting records. There are two enums and the value can be one of FROM_LATEST and FROM_START. Note that using FROM_START can cause a significant delay before the stream has caught up to real-time.", "default": "FROM_LATEST" }, "useDefaultCredentialsProvider": { "type": "boolean", "title": "Default Credentials Provider", "description": "If `true`, the DynamoDB client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).", "default": false }, "useProfileCredentialsProvider": { "type": "boolean", "title": "Profile Credentials Provider", "description": "Set whether the DynamoDB client should expect to load credentials through a profile credentials provider.", "default": false }, "useSessionCredentials": { "type": "boolean", "title": "Session Credentials", "description": "Set whether the DynamoDB client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in DynamoDB.", "default": false }, "profileCredentialsName": { "type": "string", "title": "Profile Credentials Name", "description": "If using a profile credentials provider this parameter sets the profile name." }, "sessionToken": { "type": "string", "title": "Session Token", "description": "Amazon AWS Session Token used when the user needs to assume a IAM role.", "format": "password" }, "uriEndpointOverride": { "type": "string", "title": "Overwrite Endpoint URI", "description": "The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option." }, "overrideEndpoint": { "type": "boolean", "title": "Endpoint Overwrite", "description": "Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.", "default": false }, "delay": { "type": "integer", "title": "Delay", "description": "The number of milliseconds before the next poll from the database.", "default": 500 } } } }