diff --git a/en/docs/connectors/catalog/cloud-infrastructure/aws.marketplace.mpe/aws-marketplace-mpe-connector-overview.md b/en/docs/connectors/catalog/cloud-infrastructure/aws.marketplace.mpe/aws-marketplace-mpe-connector-overview.md index 3811d0f3603..a5849b495ff 100644 --- a/en/docs/connectors/catalog/cloud-infrastructure/aws.marketplace.mpe/aws-marketplace-mpe-connector-overview.md +++ b/en/docs/connectors/catalog/cloud-infrastructure/aws.marketplace.mpe/aws-marketplace-mpe-connector-overview.md @@ -4,7 +4,7 @@ title: "Overview" # Overview -AWS Marketplace Entitlement Service (MPE) enables AWS Marketplace sellers to programmatically determine the entitlements of customers who have subscribed to their products. The Ballerina `ballerinax/aws.marketplace.mpe` connector wraps the AWS Marketplace Entitlement Service API, allowing you to query customer entitlements from your Ballerina integration flows. +AWS Marketplace Entitlement Service (MPE) enables AWS Marketplace sellers to programmatically determine the entitlements of customers who have subscribed to their products. The MPE connector wraps the AWS Marketplace Entitlement Service API, allowing you to query customer entitlements from your Ballerina integration flows. ## Key features diff --git a/en/docs/connectors/catalog/cloud-infrastructure/aws.marketplace.mpm/aws-marketplace-mpm-connector-overview.md b/en/docs/connectors/catalog/cloud-infrastructure/aws.marketplace.mpm/aws-marketplace-mpm-connector-overview.md index 56bec0e6e7e..520b3fa3287 100644 --- a/en/docs/connectors/catalog/cloud-infrastructure/aws.marketplace.mpm/aws-marketplace-mpm-connector-overview.md +++ b/en/docs/connectors/catalog/cloud-infrastructure/aws.marketplace.mpm/aws-marketplace-mpm-connector-overview.md @@ -4,7 +4,7 @@ title: "Overview" # Overview -AWS Marketplace Metering Service enables SaaS providers to report customer usage for products listed on AWS Marketplace. The Ballerina `ballerinax/aws.marketplace.mpm` connector provides programmatic access to the AWS Marketplace Metering API, allowing you to resolve customers from registration tokens and submit batch metering usage records for billing purposes. +AWS Marketplace Metering Service enables SaaS providers to report customer usage for products listed on AWS Marketplace. The MPM connector provides programmatic access to the AWS Marketplace Metering API, allowing you to resolve customers from registration tokens and submit batch metering usage records for billing purposes. ## Key features diff --git a/en/docs/connectors/catalog/communication/aws.sns/aws-sns-connector-overview.md b/en/docs/connectors/catalog/communication/aws.sns/aws-sns-connector-overview.md index 85348d9fd9b..22a36e3b84d 100644 --- a/en/docs/connectors/catalog/communication/aws.sns/aws-sns-connector-overview.md +++ b/en/docs/connectors/catalog/communication/aws.sns/aws-sns-connector-overview.md @@ -4,7 +4,7 @@ title: "Overview" # Overview -Amazon Simple Notification Service (SNS) is a fully managed pub/sub messaging and notification service for coordinating the delivery of messages to subscribing endpoints and clients. The Ballerina `ballerinax/aws.sns` connector provides programmatic access to AWS SNS, enabling you to create topics, manage subscriptions, publish messages, and manage platform applications and SMS capabilities from your Ballerina integration flows. +Amazon Simple Notification Service (SNS) is a fully managed pub/sub messaging and notification service for coordinating the delivery of messages to subscribing endpoints and clients. The SNS connector provides programmatic access to AWS SNS, enabling you to create topics, manage subscriptions, publish messages, and manage platform applications and SMS capabilities from your Ballerina integration flows. ## Key features diff --git a/en/docs/connectors/catalog/database/aws.dynamodb/setup-guide.md b/en/docs/connectors/catalog/database/aws.dynamodb/setup-guide.md index 8acc8d3530b..37c0a24732f 100644 --- a/en/docs/connectors/catalog/database/aws.dynamodb/setup-guide.md +++ b/en/docs/connectors/catalog/database/aws.dynamodb/setup-guide.md @@ -7,14 +7,14 @@ description: "How to set up and configure the ballerinax/aws.dynamodb connector. # Setup Guide -This guide explains how to configure Amazon DynamoDB and obtain the AWS credentials required to use the connector. +This guide walks you through setting up your AWS account and obtaining the credentials required to use the AWS DynamoDB connector. ## Prerequisites - An active AWS account ([sign up at aws.amazon.com](https://aws.amazon.com/)) - Sufficient IAM permissions to create users, policies, and DynamoDB tables in your target region -## Create a DynamoDB table +## Step 1: Create a DynamoDB table You can create the table your application operates on either through the connector itself (using `createTable`) or ahead of time in the [DynamoDB console](https://console.aws.amazon.com/dynamodbv2). @@ -24,58 +24,82 @@ A DynamoDB table is defined by its primary key, which is either a partition key If you create the table through the AWS console before running your Ballerina application, note the table name and region — you will need them when configuring the connector. ::: -## Obtain IAM user credentials - -To generate an IAM access key, follow the [obtaining IAM user credentials](https://central.ballerina.io/ballerinax/aws/latest#obtaining-iam-user-credentials) guide on Ballerina Central. - -Once you have a user, attach an IAM policy granting the DynamoDB permissions your application needs. The control-plane actions (creating and describing tables) and the data-plane actions (reading and writing items) are granted separately: - -```json -{ - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Action": [ - "dynamodb:CreateTable", - "dynamodb:DescribeTable", - "dynamodb:UpdateTable", - "dynamodb:DeleteTable", - "dynamodb:DescribeTimeToLive", - "dynamodb:CreateBackup", - "dynamodb:PutItem", - "dynamodb:GetItem", - "dynamodb:UpdateItem", - "dynamodb:DeleteItem", - "dynamodb:Query", - "dynamodb:Scan", - "dynamodb:BatchGetItem", - "dynamodb:BatchWriteItem" - ], - "Resource": "arn:aws:dynamodb:::table/" - }, - { - "Effect": "Allow", - "Action": "dynamodb:DeleteBackup", - "Resource": "arn:aws:dynamodb:::table//backup/*" - }, - { - "Effect": "Allow", - "Action": [ - "dynamodb:ListTables", - "dynamodb:DescribeLimits" - ], - "Resource": "*" - } - ] -} -``` +## Step 2: Create an IAM user + +1. Log in to the [AWS Management Console](https://console.aws.amazon.com/). +2. Navigate to **IAM** (Identity and Access Management). +3. Select **Users** in the left sidebar, then select **Create user**. +4. Enter a user name (for example, `ballerina-dynamodb-connector`) and select **Next**. +5. Select **Attach policies directly**. +6. Select **Create policy**, open the **JSON** tab, and paste the policy below, then attach it. Replace ``, ``, and `` with the values for your table, or use `table/*` to grant access to every table in the account. + + ```json + { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "dynamodb:CreateTable", + "dynamodb:DescribeTable", + "dynamodb:UpdateTable", + "dynamodb:DeleteTable", + "dynamodb:DescribeTimeToLive", + "dynamodb:CreateBackup", + "dynamodb:PutItem", + "dynamodb:GetItem", + "dynamodb:UpdateItem", + "dynamodb:DeleteItem", + "dynamodb:Query", + "dynamodb:Scan", + "dynamodb:BatchGetItem", + "dynamodb:BatchWriteItem" + ], + "Resource": "arn:aws:dynamodb:::table/" + }, + { + "Effect": "Allow", + "Action": "dynamodb:DeleteBackup", + "Resource": "arn:aws:dynamodb:::table//backup/*" + }, + { + "Effect": "Allow", + "Action": [ + "dynamodb:ListTables", + "dynamodb:DescribeLimits" + ], + "Resource": "*" + } + ] + } + ``` + + `dynamodb:ListTables` and `dynamodb:DescribeLimits` are account-level actions and cannot be scoped to a table ARN, so they stay in their own statement scoped to `*`; omit that statement entirely if your application calls neither operation. `dynamodb:DeleteBackup` is scoped to the backup resource rather than the table, which is why it needs a statement of its own. + +7. Select **Next**, review the settings, and select **Create user**. :::note -`dynamodb:ListTables` and `dynamodb:DescribeLimits` are account-level actions and cannot be scoped to a table ARN — AWS denies them when the resource is anything other than `*`. Omit that statement entirely if your application calls neither operation. +For a screenshot-by-screenshot walkthrough of the IAM user creation and access key generation steps, see the [AWS SQS setup guide](../../messaging/aws.sqs/setup-guide.md). The console flow is identical, only the attached policy differs. ::: -## Choose an authentication method +:::tip +For production workloads, consider using an IAM role with temporary credentials via AWS STS instead of long-lived access keys. +::: + +## Step 3: Generate access keys + +1. In the IAM console, select the user you created. +2. Go to the **Security credentials** tab. +3. Under **Access keys**, select **Create access key**. +4. Select the **Application running outside AWS** use case and select **Next**. +5. Optionally add a description tag, then select **Create access key**. +6. Copy the **Access key ID** and **Secret access key**. + +:::warning +The secret access key is shown only once at creation time. Store it securely and do not commit it to source control. Use Ballerina's `configurable` feature and a `Config.toml` file to supply credentials at runtime. +::: + +## Step 4: Choose an authentication method The connector supports multiple credential strategies. Use whichever matches your deployment environment: @@ -85,4 +109,4 @@ The connector supports multiple credential strategies. Use whichever matches you ## Next steps -- [Action Reference](actions.md) - Available operations \ No newline at end of file +- [Action Reference](actions.md) - Available operations diff --git a/en/docs/connectors/catalog/database/aws.dynamodbstreams/actions.md b/en/docs/connectors/catalog/database/aws.dynamodbstreams/actions.md new file mode 100644 index 00000000000..98544c2ead5 --- /dev/null +++ b/en/docs/connectors/catalog/database/aws.dynamodbstreams/actions.md @@ -0,0 +1,331 @@ +--- +connector: true +connector_name: "aws.dynamodbstreams" +toc_max_heading_level: 4 +title: "Actions" +--- + +# Actions + +The AWS DynamoDB Streams connector exposes the following clients: + +Available clients: + +| Client | Purpose | +|--------|---------| +| [`Client`](#client) | Interact with the Amazon DynamoDB Streams API to list streams, describe streams, navigate shards, and consume stream records. | + +--- + +## Client + +The `Client` connects to the Amazon DynamoDB Streams API and provides operations for discovering streams, navigating shards, and consuming stream records. + +### Configuration + +**ConnectionConfig** + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `auth` | auth:AuthConfig | Required | Authentication configuration: static credentials, an AWS profile, STS assume-role, web identity (OIDC), IAM Identity Center (SSO), an external credential process, or the default credential provider chain | +| `region` | aws:Region|string | Required | AWS region — an `aws:Region` enum member or a plain region string (e.g., `"us-east-1"`) for regions not yet in the enum | +| `endpoint` | aws:EndpointConfig | Optional | Optional endpoint options: FIPS/dualstack variants, or a custom endpoint override (e.g. LocalStack, VPC interface endpoints) | + +The client also accepts the standard Ballerina HTTP client options (`timeout`, `retryConfig`, `secureSocket`, `proxy`, and the rest of `http:ClientConfiguration`), which are omitted here. + +### Initializing the client + +```ballerina +import ballerinax/aws; +import ballerinax/aws.dynamodbstreams; + +dynamodbstreams:ConnectionConfig config = { + auth: { + accessKeyId: "", + secretAccessKey: "" + }, + region: aws:US_EAST_1 +}; +dynamodbstreams:Client dynamodbStreams = check new (config); +``` + +### Operations + +#### Stream discovery + +
+listStreams + +
+ +Returns the stream ARNs associated with the current account and endpoint. If `tableName` is given, only the stream ARNs for that table are returned. The returned Ballerina stream auto-paginates — it transparently fetches subsequent pages as the caller iterates. + +**Parameters:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `request` | ListStreamsInput | No | The details of the streams to list. Fields: `tableName` (filter by table), `exclusiveStartStreamArn` (pagination cursor), `'limit` (max per page, upper limit 100) | + +**Returns:** `stream` + +**Sample code:** + +```ballerina +stream streams = + dynamodbStreams->listStreams({tableName: "Orders"}); +check from dynamodbstreams:Stream 'stream in streams + do { + string? arn = 'stream.streamArn; + }; +``` + +**Sample response:** + +```json +{ + "streamArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Orders/stream/2024-01-15T10:30:00.000", + "streamLabel": "2024-01-15T10:30:00.000", + "tableName": "Orders" +} +``` + +
+
+ +
+describeStream + +
+ +Returns information about a stream, including its current status, Amazon Resource Name (ARN), the composition of its shards, and its corresponding DynamoDB table. A stream can have more shards than fit in a single response; when `lastEvaluatedShardId` is set on the result, pass it back as `exclusiveStartShardId` to read the next page of shards. + +**Parameters:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `request` | DescribeStreamInput | Yes | The details of the stream to describe. Required field: `streamArn`. Optional fields: `exclusiveStartShardId` (pagination cursor), `'limit` (max shards per page, upper limit 100) | + +**Returns:** `StreamDescription|Error` + +**Sample code:** + +```ballerina +dynamodbstreams:StreamDescription description = check dynamodbStreams->describeStream({ + streamArn: "arn:aws:dynamodb:us-east-1:123456789012:table/Orders/stream/2024-01-15T10:30:00.000" +}); +``` + +**Sample response:** + +```json +{ + "streamArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Orders/stream/2024-01-15T10:30:00.000", + "streamLabel": "2024-01-15T10:30:00.000", + "streamStatus": "ENABLED", + "streamViewType": "NEW_AND_OLD_IMAGES", + "creationRequestDateTime": 1705314600.0, + "tableName": "Orders", + "keySchema": [ + { "attributeName": "OrderId", "keyType": "HASH" } + ], + "shards": [ + { + "shardId": "shardId-00000001705314600000-abcdef12", + "parentShardId": null, + "sequenceNumberRange": { + "startingSequenceNumber": "1000000000000000000001", + "endingSequenceNumber": "2000000000000000000001" + } + } + ], + "lastEvaluatedShardId": null +} +``` + +
+
+ +#### Shard navigation + +
+getShardIterator + +
+ +Returns a shard iterator, which describes a position within a shard. Use the iterator in a subsequent `getRecords` call to read the stream records from the shard. Shard iterators expire 15 minutes after they are returned. + +**Parameters:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `request` | GetShardIteratorInput | Yes | The details of the shard iterator to obtain. Required fields: `streamArn`, `shardId`, `shardIteratorType` (`TRIM_HORIZON`, `LATEST`, `AT_SEQUENCE_NUMBER`, or `AFTER_SEQUENCE_NUMBER`). Optional field: `sequenceNumber` — required when `shardIteratorType` is `AT_SEQUENCE_NUMBER` or `AFTER_SEQUENCE_NUMBER` | + +**Returns:** `string|Error` + +**Sample code:** + +```ballerina +string shardIterator = check dynamodbStreams->getShardIterator({ + streamArn: "arn:aws:dynamodb:us-east-1:123456789012:table/Orders/stream/2024-01-15T10:30:00.000", + shardId: "shardId-00000001705314600000-abcdef12", + shardIteratorType: dynamodbstreams:TRIM_HORIZON +}); +``` + +**Sample response:** + +```json +"arn:aws:dynamodb:us-east-1:123456789012:table/Orders/stream/2024-01-15T10:30:00.000|1|AAAAAAAAAAGzaRHZ0L7A...truncated..." +``` + +
+
+ +#### Record consumption + +
+getRecords + +
+ +Retrieves the stream records currently available at the shard iterator's position — at most `limit` of them and never more than 1000. An empty `records` array does not mean the shard is exhausted; the shard is fully read only once `nextShardIterator` is absent in the response. + +**Parameters:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `request` | GetRecordsInput | Yes | The details of the records to retrieve. Required field: `shardIterator`. Optional field: `'limit` — maximum number of records to return per call (upper limit 1000) | + +**Returns:** `GetRecordsOutput|Error` + +**Sample code:** + +```ballerina +dynamodbstreams:GetRecordsOutput result = check dynamodbStreams->getRecords({ + shardIterator: "arn:aws:dynamodb:us-east-1:123456789012:table/Orders/stream/...", + 'limit: 100 +}); +``` + +**Sample response:** + +```json +{ + "records": [ + { + "eventID": "c4ca4238a0b923820dcc509a6f75849b", + "eventName": "INSERT", + "eventVersion": "1.1", + "eventSource": "aws:dynamodb", + "awsRegion": "us-east-1", + "dynamodb": { + "sequenceNumber": "1000000000000000000001", + "keys": { + "OrderId": { "S": "ord-001" } + }, + "newImage": { + "OrderId": { "S": "ord-001" }, + "Status": { "S": "PLACED" }, + "Total": { "N": "59.99" } + }, + "streamViewType": "NEW_AND_OLD_IMAGES", + "approximateCreationDateTime": 1705314600.0, + "sizeBytes": 72 + } + } + ], + "nextShardIterator": "arn:aws:dynamodb:us-east-1:123456789012:table/Orders/stream/...|2|BBBBBBBBBBBBzaRHZ..." +} +``` + +
+
+ +
+pollRecords + +
+ +Polls a single shard and emits its stream records as a Ballerina stream. Consecutive empty polls back off exponentially from `pollInterval` up to `maxPollInterval`. The stream stops at the shard boundary — it completes once the shard is closed and fully read. + +**Parameters:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `request` | PollRecordsInput | Yes | The details of the shard to poll. Required field: `shardIterator`. Optional fields: `'limit` (max records per underlying `GetRecords` call, upper limit 1000), `pollInterval` (initial backoff in seconds, default `1`), `maxPollInterval` (backoff ceiling in seconds, default `20`), `maxIdlePolls` (consecutive empty polls before the stream completes — when absent the stream tails the shard indefinitely until it closes) | + +**Returns:** `stream` + +**Sample code:** + +```ballerina +stream records = + dynamodbStreams->pollRecords({ + shardIterator: "arn:aws:dynamodb:us-east-1:123456789012:table/Orders/stream/...", + pollInterval: 1, + maxPollInterval: 5, + maxIdlePolls: 3 + }); +check from dynamodbstreams:Record 'record in records + do { + dynamodbstreams:OperationType? eventName = 'record.eventName; + }; +``` + +**Sample response:** + +```json +{ + "eventID": "1679e8f0c92b41a5a2b44f0c3e7d9a01", + "eventName": "MODIFY", + "eventVersion": "1.1", + "eventSource": "aws:dynamodb", + "awsRegion": "us-east-1", + "dynamodb": { + "sequenceNumber": "1000000000000000000002", + "keys": { + "OrderId": { "S": "ord-001" } + }, + "oldImage": { + "OrderId": { "S": "ord-001" }, + "Status": { "S": "PLACED" } + }, + "newImage": { + "OrderId": { "S": "ord-001" }, + "Status": { "S": "SHIPPED" } + }, + "streamViewType": "NEW_AND_OLD_IMAGES", + "approximateCreationDateTime": 1705314900.0, + "sizeBytes": 102 + } +} +``` + +
+
+ +#### Lifecycle + +
+close + +
+ +Releases the resources held by the credential provider: its background refresh threads and the HTTP connections it keeps open to reach STS/SSO. + +**Parameters:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| — | — | — | No parameters | + +**Returns:** `Error?` + +**Sample code:** + +```ballerina +check dynamodbStreams.close(); +``` + +
+
\ No newline at end of file diff --git a/en/docs/connectors/catalog/database/aws.dynamodbstreams/connector-overview.md b/en/docs/connectors/catalog/database/aws.dynamodbstreams/connector-overview.md new file mode 100644 index 00000000000..befd5502bad --- /dev/null +++ b/en/docs/connectors/catalog/database/aws.dynamodbstreams/connector-overview.md @@ -0,0 +1,46 @@ +--- +connector: true +connector_name: "aws.dynamodbstreams" +title: "Overview" +description: "Overview of the ballerinax/aws.dynamodbstreams connector for WSO2 Integrator." +--- + +# Overview + +The AWS DynamoDB Streams connector enables integration with [Amazon DynamoDB Streams](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html), a service that captures a time-ordered sequence of item-level modifications made to a DynamoDB table and stores them for up to 24 hours. Applications can use this connector to react to data changes in near real time by reading stream records distributed across shards. The connector provides complete coverage of the [AWS DynamoDB Streams API](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Operations_Amazon_DynamoDB_Streams.html). + +## Key features + +- Complete coverage of the DynamoDB Streams APIs +- Checkpointable shard reads +- Auto-paginating Ballerina stream for listing streams and a polling records +- Flexible credential configuration: static keys, AWS credentials file profiles, STS assume-role, web identity (OIDC), IAM Identity Center (SSO), an external credential process, or the default AWS credential provider chain +- Automatic refresh of expiring temporary credentials + +## Actions + +The AWS DynamoDB Streams connector exposes a single client for interacting with the DynamoDB Streams API, covering stream discovery, shard navigation, and record consumption. + +| Client | Actions | +|--------|---------| +| `Client` | List streams, describe streams, get shard iterators, get records, poll records | + +See the **[Action Reference](actions.md)** for the full list of operations, parameters, and sample code for each client. + +## Documentation + +* **[Setup Guide](setup-guide.md)**: How to enable a DynamoDB stream on your table and configure the IAM permissions required by the connector. + +* **[Action Reference](actions.md)**: Full reference for all clients — operations, parameters, return types, and sample code. + +* **[Example](example.md)**: Learn how to build and configure an integration using the **AWS DynamoDB Streams** connector, including connection setup, operation configuration, and execution flow. + +## How to contribute + +As an open source project, WSO2 welcomes contributions from the community. + +To contribute to the code for this connector, please create a pull request in the following repository. + +* [AWS DynamoDB Streams Connector GitHub repository](https://github.com/ballerina-platform/module-ballerinax-aws.dynamodbstreams) + +Check the issue tracker for open issues that interest you. We look forward to receiving your contributions. \ No newline at end of file diff --git a/en/docs/connectors/catalog/database/aws.dynamodbstreams/example.md b/en/docs/connectors/catalog/database/aws.dynamodbstreams/example.md new file mode 100644 index 00000000000..f549e74c94a --- /dev/null +++ b/en/docs/connectors/catalog/database/aws.dynamodbstreams/example.md @@ -0,0 +1,120 @@ +--- +connector: true +connector_name: "aws.dynamodbstreams" +title: "Example" +--- + +# Example + +## What you'll build + +This example builds an automation that describes a DynamoDB stream. Describing a stream reports its current status, its shard composition, and the table it belongs to, so it's the call a consumer makes before it starts reading records. The automation logs the returned stream status. + +**Operations used:** +- **Describe Stream** : Returns the status, shards, and source table of a DynamoDB stream. + +## Architecture + +```mermaid +flowchart LR + A((User)) --> B[Describe Stream] + B --> C[AWS DynamoDB Streams Connector] + C --> D[(Amazon DynamoDB Streams)] +``` + +## Prerequisites + +- An AWS account with a DynamoDB table that has a stream enabled. The stream's **Latest stream ARN** is the value this example needs. +- An access key ID and secret access key for an IAM identity that's allowed to call `dynamodb:DescribeStream` on that stream. + +## Setting up the AWS DynamoDB Streams integration + +> **New to WSO2 Integrator?** Follow the [Create a New Integration](../../../../develop/create-integrations/create-a-new-integration.md) guide to set up your integration first, then return here to add the connector. + +## Adding the AWS DynamoDB Streams connector + +### Step 1: Open the connector palette + +Select **Add Connection** in the **Connections** section. + +![AWS DynamoDB Streams connector palette open before selection](/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_01_palette.png) + +### Step 2: Select the AWS DynamoDB Streams connector + +1. Enter `aws.dynamodbstreams` in the search field. +2. Select the **Dynamodbstreams** connector card. + +## Configuring the AWS DynamoDB Streams connection + +### Step 3: Bind the connection parameters to configurable variables + +Switch **Config** to **Expression** mode, then bind its credential and region fields to configurable variables. + +- **Config** : Connection configuration holding the authentication details and the AWS region. +- **Connection Name** : Name that identifies this connection in the project tree. + +![AWS DynamoDB Streams connection form with all parameters bound before saving](/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_02_connection_form.png) + +### Step 4: Save the connection + +Select **Save Connection** and verify that the connection appears in the **Connections** section. + +![AWS DynamoDB Streams connection visible after saving](/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_03_connections_list.png) + +### Step 5: Set actual values for your configurables + +1. Select **Configurations** at the bottom of the project tree under **Data Mappers**. +2. Enter a value for each configurable listed below before you run the integration. + +- **accessKeyId** (`string`) : Access key ID of the IAM identity that reads the stream. +- **secretAccessKey** (`string`) : Secret access key that pairs with the access key ID. +- **region** (`string`) : AWS region that hosts the table, such as `us-east-1`. +- **streamArn** (`string`) : Latest stream ARN of the DynamoDB table whose stream you want to describe. + +## Configuring the AWS DynamoDB Streams Describe Stream operation + +### Step 6: Add an automation entry point + +1. Select **Add Artifact** on the **Design** canvas. +2. Select **Automation**. +3. Select **Create** to accept the settings. + +### Step 7: Expand the connection and configure the Describe Stream operation + +1. Select **+** on the automation flow between **Start** and **Error Handler**. +2. Expand **dynamodbstreamsClient** to display its operations. + +![AWS DynamoDB Streams connection expanded to display operations before selection](/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_04_operations_panel.png) + +3. Select **Describe Stream** and enter its required values. + +- **Request** : Details of the stream to describe, carrying the stream ARN. +- **Result** : Name of the variable that holds the returned stream description. + +![AWS DynamoDB Streams Describe Stream operation with all values entered before saving](/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_05_operation_form.png) + +4. Select **Save**. + +### Step 8: Log the Describe Stream result + +Add a **Log Info** action that reports the returned stream status, then return to the visual flow. + +![Completed AWS DynamoDB Streams flow with the configured operation](/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_06_completed_flow.png) + +## Try it yourself + +Try this sample in WSO2 Integration Platform. + +[![Deploy to Devant](https://openindevant.choreoapps.dev/images/DeployDevant-White.svg)](https://console.devant.dev/new?gh=wso2/integration-samples/tree/main/integrator-default-profile/connectors/aws.dynamodbstreams_connector_sample) + +[View source on GitHub](https://github.com/wso2/integration-samples/tree/main/integrator-default-profile/connectors/aws.dynamodbstreams_connector_sample) + +## More code examples + +The `aws.dynamodbstreams` connector provides practical examples illustrating usage in various scenarios. Explore these [examples](https://github.com/ballerina-platform/module-ballerinax-aws.dynamodbstreams/tree/main/examples). + +1. [Real-time order processing](https://github.com/ballerina-platform/module-ballerinax-aws.dynamodbstreams/tree/main/examples/order-management) + This example shows how to tail a DynamoDB stream with `pollRecords` to react to order changes as they happen. + +2. [Checkpointed shard consumer](https://github.com/ballerina-platform/module-ballerinax-aws.dynamodbstreams/tree/main/examples/shard-checkpointing) + This example shows how to read a stream with `getRecords`, persisting each record's sequence number so that a restarted consumer resumes where it stopped. It runs on the default credential provider chain, so it works unchanged on EC2, ECS, and EKS. diff --git a/en/docs/connectors/catalog/database/aws.dynamodbstreams/setup-guide.md b/en/docs/connectors/catalog/database/aws.dynamodbstreams/setup-guide.md new file mode 100644 index 00000000000..6782c038ec1 --- /dev/null +++ b/en/docs/connectors/catalog/database/aws.dynamodbstreams/setup-guide.md @@ -0,0 +1,104 @@ +--- +connector: true +connector_name: "aws.dynamodbstreams" +title: "Setup Guide" +description: "How to set up and configure the ballerinax/aws.dynamodbstreams connector." +--- + +# Setup Guide + +This guide walks you through enabling an Amazon DynamoDB stream on your table and obtaining the credentials required to use the AWS DynamoDB Streams connector. + +## Prerequisites + +- An active [AWS account](https://aws.amazon.com/) +- An existing Amazon DynamoDB table from which to capture changes + +## Step 1: Enable a stream on your DynamoDB table + +A table only produces stream records once a stream is enabled on it. + +1. Log in to the [DynamoDB console](https://console.aws.amazon.com/dynamodbv2). +2. Select **Tables** in the left sidebar, then select your table. +3. Go to the **Exports and streams** tab. +4. Under **DynamoDB stream details**, select **Turn on**. +5. Pick the view type that carries the data your application needs, then select **Turn on stream**. + +| View type | What each record carries | +|-----------|--------------------------| +| `KEYS_ONLY` | Only the key attributes of the modified item | +| `NEW_IMAGE` | The whole item as it looked after the change | +| `OLD_IMAGE` | The whole item as it looked before the change | +| `NEW_AND_OLD_IMAGES` | Both the new and old item images | + +Take note of the resulting **Latest stream ARN** — this is the `streamArn` you pass to the connector operations. + +## Step 2: Create an IAM user + +1. Log in to the [AWS Management Console](https://console.aws.amazon.com/). +2. Navigate to **IAM** (Identity and Access Management). +3. Select **Users** in the left sidebar, then select **Create user**. +4. Enter a user name (for example, `ballerina-dynamodbstreams-connector`) and select **Next**. +5. Select **Attach policies directly**. +6. Select **Create policy**, open the **JSON** tab, and paste the policy below, then attach it. Replace ``, ``, and `` with the values for your table, or use `table/*/stream/*` to grant access to every stream in the account. + + ```json + { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "dynamodb:ListStreams", + "Resource": "*" + }, + { + "Effect": "Allow", + "Action": [ + "dynamodb:DescribeStream", + "dynamodb:GetShardIterator", + "dynamodb:GetRecords" + ], + "Resource": "arn:aws:dynamodb:::table//stream/*" + } + ] + } + ``` + + `dynamodb:ListStreams` operates across the account and takes no stream resource, so it stays in its own statement scoped to `*`; omit that statement entirely if your application never calls `listStreams`. The other three actions are scoped to the stream ARN, which is separate from the table's data-plane actions. + +7. Select **Next**, review the settings, and select **Create user**. + +:::note +For a screenshot-by-screenshot walkthrough of the IAM user creation and access key generation steps, see the [AWS SQS setup guide](../../messaging/aws.sqs/setup-guide.md). The console flow is identical, only the attached policy differs. +::: + +:::tip +For production workloads, consider using an IAM role with temporary credentials via AWS STS instead of long-lived access keys. The connector accepts assume-role, web identity, SSO, and default-provider-chain credentials through its `auth` field. +::: + +## Step 3: Generate access keys + +1. In the IAM console, select the user you created. +2. Go to the **Security credentials** tab. +3. Under **Access keys**, select **Create access key**. +4. Select the **Application running outside AWS** use case and select **Next**. +5. Optionally add a description tag, then select **Create access key**. +6. Copy the **Access key ID** and **Secret access key**. + +:::warning +The secret access key is shown only once at creation time. Store it securely and do not commit it to source control. Use Ballerina's `configurable` feature and a `Config.toml` file to supply credentials at runtime. +::: + +## Step 4: Identify your AWS region + +Determine the AWS region that hosts the DynamoDB table whose stream you want to read, for example: + +- `aws:US_EAST_1` (US East: N. Virginia) + +:::note +A stream lives in the same region as its table, so the connector's `region` must match that table's region. +::: + +## Next steps + +- [Action Reference](actions.md) - Available operations diff --git a/en/docs/connectors/catalog/database/aws.redshift/aws-redshift-connector-overview.md b/en/docs/connectors/catalog/database/aws.redshift/aws-redshift-connector-overview.md index c1999fa5f6e..ba69b184d97 100644 --- a/en/docs/connectors/catalog/database/aws.redshift/aws-redshift-connector-overview.md +++ b/en/docs/connectors/catalog/database/aws.redshift/aws-redshift-connector-overview.md @@ -4,7 +4,7 @@ title: "Overview" # Overview -Amazon Redshift is a fully managed, petabyte-scale cloud data warehouse service. The Ballerina `ballerinax/aws.redshift` connector (v1.2.1) provides programmatic access to Redshift clusters via JDBC, enabling you to execute queries, perform DML/DDL operations, run batch statements, and call stored procedures from your Ballerina integration flows. +Amazon Redshift is a fully managed, petabyte-scale cloud data warehouse service. The Redshift connector provides programmatic access to Redshift clusters via JDBC, enabling you to execute queries, perform DML/DDL operations, run batch statements, and call stored procedures from your Ballerina integration flows. ## Key features diff --git a/en/docs/connectors/catalog/database/aws.simpledb/actions.md b/en/docs/connectors/catalog/database/aws.simpledb/actions.md new file mode 100644 index 00000000000..5c6435cb7a8 --- /dev/null +++ b/en/docs/connectors/catalog/database/aws.simpledb/actions.md @@ -0,0 +1,372 @@ +--- +connector: true +connector_name: "aws.simpledb" +toc_max_heading_level: 4 +title: "Actions" +--- + +# Actions + +The AWS SimpleDB connector exposes the following clients: + +Available clients: + +| Client | Purpose | +|--------|---------| +| [`Client`](#client) | Manage SimpleDB domains and perform item attribute reads, writes, queries, and deletes | + +--- + +## Client + +Provides access to all Amazon SimpleDB domain management and item attribute operations through a single authenticated client. + +### Configuration + +**ConnectionConfig** + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `auth` | auth:AuthConfig | Required | Authentication configuration: static credentials, AWS profile, STS assume-role, web identity (OIDC), IAM Identity Center (SSO), external credential process, or the default provider chain | +| `region` | aws:Region|string | Required | AWS region: an `aws:Region` enum member or a plain region string (e.g., `"us-east-1"`) for regions not yet in the enum | +| `endpoint` | aws:EndpointConfig | Optional | Optional endpoint options: FIPS/dualstack variants, or a custom endpoint override (e.g. VPC interface endpoints) | + +The client also accepts the standard Ballerina HTTP client options (`timeout`, `retryConfig`, `secureSocket`, `proxy`, and the rest of `http:ClientConfiguration`), which are omitted here. + +### Initializing the client + +```ballerina +import ballerinax/aws; +import ballerinax/aws.simpledb; + +simpledb:ConnectionConfig config = { + auth: { + accessKeyId: "", + secretAccessKey: "" + }, + region: aws:US_EAST_1 +}; +simpledb:Client simpleDb = check new (config); +``` + +### Operations + +#### Domain management + +
+createDomain + +
+ +Create a domain. + +**Parameters:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `domainName` | string | Yes | Name of domain | + +**Returns:** `CreateDomainResponse|xml|error` + +**Sample code:** + +```ballerina +simpledb:CreateDomainResponse|xml result = check simpleDb->createDomain("inventory"); +``` + +**Sample response:** + +```json +{ + "responseMetadata": { + "requestId": "b1e3e6fb-7c79-4d64-9b81-b54d7b023e40", + "boxUsage": "0.0055590278" + } +} +``` + +
+
+ +
+listDomains + +
+ +List available domains. + +**Parameters:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| + +This operation takes no parameters. + +**Returns:** `ListDomainsResponse|xml|error` + +**Sample code:** + +```ballerina +simpledb:ListDomainsResponse|xml result = check simpleDb->listDomains(); +``` + +**Sample response:** + +```json +{ + "listDomainsResult": { + "domainNames": "inventory products orders", + "nextToken": "" + }, + "responseMetadata": { + "requestId": "d3e5b9c0-1f2a-4b6c-8d7e-b9c0d1e2f3a4", + "boxUsage": "0.0000219907" + } +} +``` + +
+
+ +
+getDomainMetaData + +
+ +Get information about the domain, including when the domain was created, the number of items and attributes, and the size of attribute names and values. + +**Parameters:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `domainName` | string | Yes | Name of domain | + +**Returns:** `DomainMetaDataResponse|xml|error` + +**Sample code:** + +```ballerina +simpledb:DomainMetaDataResponse|xml result = check simpleDb->getDomainMetaData("inventory"); +``` + +**Sample response:** + +```json +{ + "domainMetadataResult": { + "itemCount": "4", + "itemNamesSizeBytes": "48", + "attributeNameCount": "3", + "attributeNamesSizeBytes": "36", + "attributeValueCount": "12", + "attributeValuesSizeBytes": "120", + "timestamp": "1735689600" + }, + "responseMetadata": { + "requestId": "c2f4a7b8-0e1d-4c5a-9f2e-a8b3c4d5e6f7", + "boxUsage": "0.0000219907" + } +} +``` + +
+
+ +
+deleteDomain + +
+ +Delete a domain. + +**Parameters:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `domainName` | string | Yes | Name of domain | + +**Returns:** `DeleteDomainResponse|xml|error` + +**Sample code:** + +```ballerina +simpledb:DeleteDomainResponse|xml result = check simpleDb->deleteDomain("inventory"); +``` + +**Sample response:** + +```json +{ + "responseMetadata": { + "requestId": "e4f6c0d1-2a3b-4c7d-9e8f-c0d1e2f3a4b5", + "boxUsage": "0.0055590278" + } +} +``` + +
+
+ +#### Item operations + +
+putAttributes + +
+ +Creates an attribute in an item. The value is added to the attribute rather than replacing any value it already has. + +**Parameters:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `domainName` | string | Yes | Name of domain | +| `itemName` | string | Yes | Name of item | +| `attributes` | Attribute[] | Yes | Attributes to create; each `Attribute` has a `name` (string) and a `value` (string) | + +**Returns:** `PutAttributesResponse|xml|error` + +**Sample code:** + +```ballerina +simpledb:PutAttributesResponse|xml result = check simpleDb->putAttributes( + "inventory", + "sku-1024", + [{name: "colour", value: "blue"}] +); +``` + +**Sample response:** + +```json +{ + "responseMetadata": { + "requestId": "a6b8e2f3-4c5d-4e9f-1a0b-e2f3a4b5c6d7", + "boxUsage": "0.0000219907" + } +} +``` + +
+
+ +
+getAttributes + +
+ +Get all of the attributes associated with the item. + +**Parameters:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `domainName` | string | Yes | Name of domain | +| `itemName` | string | Yes | Name of item | +| `consistentRead` | boolean | Yes | True if consistent reads are to be accepted | + +**Returns:** `GetAttributesResponse|xml|error` + +**Sample code:** + +```ballerina +simpledb:GetAttributesResponse|xml result = check simpleDb->getAttributes("inventory", "sku-1024", true); +``` + +**Sample response:** + +```json +{ + "getAttributesResult": { + "attributes": "colour=blue size=medium" + }, + "responseMetadata": { + "requestId": "f5a7d1e2-3b4c-4d8e-0f9a-d1e2f3a4b5c6", + "boxUsage": "0.0000219907" + } +} +``` + +
+
+ +
+deleteAttributes + +
+ +Delete attributes in an item. When `attributes` is empty, the whole item is deleted. + +**Parameters:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `domainName` | string | Yes | Name of domain | +| `itemName` | string | Yes | Name of item | +| `attributes` | Attribute[] | Yes | Attributes to delete; pass an empty array to delete the entire item. Each `Attribute` has a `name` (string) and a `value` (string) | + +**Returns:** `DeleteAttributesResponse|xml|error` + +**Sample code:** + +```ballerina +simpledb:DeleteAttributesResponse|xml result = check simpleDb->deleteAttributes( + "inventory", + "sku-1024", + [{name: "colour", value: "blue"}] +); +``` + +**Sample response:** + +```json +{ + "responseMetadata": { + "requestId": "b7c9f3a4-5d6e-4f0a-2b1c-f3a4b5c6d7e8", + "boxUsage": "0.0000219907" + } +} +``` + +
+
+ +
+select + +
+ +Select set of attributes that match the select expression. + +**Parameters:** + +| Name | Type | Required | Description | +|------|------|----------|-------------| +| `selectExpression` | string | Yes | SQL-like select expression to retrieve attributes (e.g., `select * from \`domainName\` where colour = 'blue'`) | +| `consistentRead` | boolean | Yes | True if consistent reads are to be accepted | + +**Returns:** `SelectResponse|xml|error` + +**Sample code:** + +```ballerina +string selectExpression = "select * from `inventory` where colour = 'blue'"; +simpledb:SelectResponse|xml result = check simpleDb->'select(selectExpression, true); +``` + +**Sample response:** + +```json +{ + "selectResult": { + "items": "sku-1024" + }, + "responseMetadata": { + "requestId": "c8d0a4b5-6e7f-4a1b-3c2d-a4b5c6d7e8f9", + "boxUsage": "0.0000219907" + } +} +``` + +
+
\ No newline at end of file diff --git a/en/docs/connectors/catalog/database/aws.simpledb/connector-overview.md b/en/docs/connectors/catalog/database/aws.simpledb/connector-overview.md new file mode 100644 index 00000000000..5cf94ace0d5 --- /dev/null +++ b/en/docs/connectors/catalog/database/aws.simpledb/connector-overview.md @@ -0,0 +1,47 @@ +--- +connector: true +connector_name: "aws.simpledb" +title: "Overview" +description: "Overview of the ballerinax/aws.simpledb connector for WSO2 Integrator." +--- + +# Overview + +The AWS SimpleDB connector enables integration with Amazon SimpleDB, a highly available NoSQL data store that organises data into schemaless domains of items and attributes. It provides operations to manage domains and perform item-level attribute reads, writes, and queries using a SQL-like select expression, all without requiring upfront schema or index definitions. + +## Key features + +- Create, list, inspect, and delete SimpleDB domains +- Store, retrieve and delete item attributes +- Query items across a domain using SQL-like `select` expressions +- Support for consistent reads to ensure up-to-date query results +- Flexible credential configuration: static keys, AWS profiles, STS assume-role, web identity (OIDC), IAM Identity Center (SSO), external credential process, or the default AWS credential provider chain +- Automatic refresh of expiring temporary credentials + +## Actions + +The connector exposes a single client that covers all domain management and item attribute operations. + +| Client | Actions | +|--------|---------| +| `Client` | Domain management, attribute writes, attribute reads, item queries, attribute deletes | + +See the **[Action Reference](actions.md)** for the full list of operations, parameters, and sample code for each client. + +## Documentation + +* **[Setup Guide](setup-guide.md)**: How to verify SimpleDB regional availability and configure the required IAM permissions for your AWS identity. + +* **[Action Reference](actions.md)**: Full reference for all clients — operations, parameters, return types, and sample code. + +* **[Example](example.md)**: Learn how to build and configure an integration using the **AWS SimpleDB** connector, including connection setup, operation configuration, and execution flow. + +## How to contribute + +As an open source project, WSO2 welcomes contributions from the community. + +To contribute to the code for this connector, please create a pull request in the following repository. + +* [AWS SimpleDB Connector GitHub repository](https://github.com/ballerina-platform/module-ballerinax-aws.simpledb) + +Check the issue tracker for open issues that interest you. We look forward to receiving your contributions. \ No newline at end of file diff --git a/en/docs/connectors/catalog/database/aws.simpledb/example.md b/en/docs/connectors/catalog/database/aws.simpledb/example.md new file mode 100644 index 00000000000..9ec3f5ab18f --- /dev/null +++ b/en/docs/connectors/catalog/database/aws.simpledb/example.md @@ -0,0 +1,119 @@ +--- +connector: true +connector_name: "aws.simpledb" +title: "Example" +--- + +# Example + +## What you'll build + +This example builds an automation that creates a domain in Amazon SimpleDB. A domain is the schemaless container that holds items and their attributes, so creating one is the first step in any SimpleDB integration. The automation logs the service response so you can confirm the call succeeded. + +**Operations used:** +- **Create Domain** : Creates a SimpleDB domain with the given name. + +## Architecture + +```mermaid +flowchart LR + A((User)) --> B[Create Domain] + B --> C[AWS SimpleDB Connector] + C --> D[(Amazon SimpleDB)] +``` + +## Prerequisites + +- An AWS account with Amazon SimpleDB available in the region you plan to use. SimpleDB runs in eight regions only, including `us-east-1`, `eu-west-1`, and `ap-southeast-1`. +- An access key ID and secret access key for an IAM identity that's allowed to call `sdb:CreateDomain` on the domain you name in this example. + +## Setting up the AWS SimpleDB integration + +> **New to WSO2 Integrator?** Follow the [Create a New Integration](../../../../develop/create-integrations/create-a-new-integration.md) guide to set up your integration first, then return here to add the connector. + +## Adding the AWS SimpleDB connector + +### Step 1: Open the connector palette + +Select **Add Connection** in the **Connections** section. + +![AWS SimpleDB connector palette open before selection](/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_01_palette.png) + +### Step 2: Select the AWS SimpleDB connector + +1. Enter `aws.simpledb` in the search field. +2. Select the **Simpledb** connector card. + +## Configuring the AWS SimpleDB connection + +### Step 3: Bind the connection parameters to configurable variables + +Switch **Config** to **Expression** mode, then bind its credential and region fields to configurable variables. + +- **Config** : Connection configuration holding the authentication details and the AWS region. +- **Connection Name** : Name that identifies this connection in the project tree. + +![AWS SimpleDB connection form with all parameters bound before saving](/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_02_connection_form.png) + +### Step 4: Save the connection + +Select **Save Connection** and verify that the connection appears in the **Connections** section. + +![AWS SimpleDB connection visible after saving](/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_03_connections_list.png) + +### Step 5: Set actual values for your configurables + +1. Select **Configurations** at the bottom of the project tree under **Data Mappers**. +2. Enter a value for each configurable listed below before you run the integration. + +- **accessKeyId** (`string`) : Access key ID of the IAM identity that calls SimpleDB. +- **secretAccessKey** (`string`) : Secret access key that pairs with the access key ID. +- **region** (`string`) : AWS region that serves the domain, such as `us-east-1`. + +## Configuring the AWS SimpleDB Create Domain operation + +### Step 6: Add an automation entry point + +1. Select **Add Artifact** on the **Design** canvas. +2. Select **Automation**. +3. Select **Create** to accept the settings. + +### Step 7: Expand the connection and configure the Create Domain operation + +1. Select **+** on the automation flow between **Start** and **Error Handler**. +2. Expand **simpledbClient** to display its operations. + +![AWS SimpleDB connection expanded to display operations before selection](/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_04_operations_panel.png) + +3. Select **Create Domain** and enter its required values. + +- **Domain Name** : Name of the domain to create. +- **Result** : Name of the variable that holds the service response. + +![AWS SimpleDB Create Domain operation with all values entered before saving](/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_05_operation_form.png) + +4. Select **Save**. + +### Step 8: Log the Create Domain result + +Add a **Log Info** action that reports the returned value, then return to the visual flow. + +![Completed AWS SimpleDB flow with the configured operation](/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_06_completed_flow.png) + +## Try it yourself + +Try this sample in WSO2 Integration Platform. + +[![Deploy to Devant](https://openindevant.choreoapps.dev/images/DeployDevant-White.svg)](https://console.devant.dev/new?gh=wso2/integration-samples/tree/main/integrator-default-profile/connectors/aws.simpledb_connector_sample) + +[View source on GitHub](https://github.com/wso2/integration-samples/tree/main/integrator-default-profile/connectors/aws.simpledb_connector_sample) + +## More code examples + +The `aws.simpledb` connector provides practical examples illustrating usage in various scenarios. Explore these [examples](https://github.com/ballerina-platform/module-ballerinax-aws.simpledb/tree/main/examples). + +1. [Domain management](https://github.com/ballerina-platform/module-ballerinax-aws.simpledb/tree/main/examples/domain-management) + This example shows how to create a domain, inspect its metadata, list the domains in the account, and delete it. + +2. [Product catalogue](https://github.com/ballerina-platform/module-ballerinax-aws.simpledb/tree/main/examples/product-catalogue) + This example shows how to store item attributes and query them back with a `select` expression. diff --git a/en/docs/connectors/catalog/database/aws.simpledb/setup-guide.md b/en/docs/connectors/catalog/database/aws.simpledb/setup-guide.md new file mode 100644 index 00000000000..372a21c9cc1 --- /dev/null +++ b/en/docs/connectors/catalog/database/aws.simpledb/setup-guide.md @@ -0,0 +1,98 @@ +--- +connector: true +connector_name: "aws.simpledb" +title: "Setup Guide" +description: "How to set up and configure the ballerinax/aws.simpledb connector." +--- + +# Setup Guide + +This guide walks you through setting up your AWS account and obtaining the credentials required to use the AWS SimpleDB connector. + +## Prerequisites + +- An active AWS account with access to one of the regions where [Amazon SimpleDB](https://aws.amazon.com/simpledb/) is available +- Permissions to create IAM users and attach IAM policies in the AWS Management Console + +## Step 1: Create an IAM user + +1. Log in to the [AWS Management Console](https://console.aws.amazon.com/). +2. Navigate to **IAM** (Identity and Access Management). +3. Select **Users** in the left sidebar, then select **Create user**. +4. Enter a user name (for example, `ballerina-simpledb-connector`) and select **Next**. +5. Select **Attach policies directly**. +6. Select **Create policy**, open the **JSON** tab, and paste the policy below, then attach it. Replace ``, ``, and `` with the values for your deployment, or use `domain/*` to grant access to every domain in the account. + + ```json + { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "sdb:ListDomains", + "Resource": "*" + }, + { + "Effect": "Allow", + "Action": [ + "sdb:CreateDomain", + "sdb:DomainMetadata", + "sdb:DeleteDomain", + "sdb:GetAttributes", + "sdb:PutAttributes", + "sdb:DeleteAttributes", + "sdb:Select" + ], + "Resource": "arn:aws:sdb:::domain/" + } + ] + } + ``` + + `sdb:ListDomains` operates across the account and takes no domain resource, so it stays in its own statement scoped to `*`. Every other action, including `CreateDomain`, is scoped to the domain ARN. + +7. Select **Next**, review the settings, and select **Create user**. + +:::note +For a screenshot-by-screenshot walkthrough of the IAM user creation and access key generation steps, see the [AWS SQS setup guide](../../messaging/aws.sqs/setup-guide.md). The console flow is identical, only the attached policy differs. +::: + +:::tip +For production workloads, consider using an IAM role with temporary credentials via AWS STS instead of long-lived access keys. +::: + +## Step 2: Generate access keys + +1. In the IAM console, select the user you created. +2. Go to the **Security credentials** tab. +3. Under **Access keys**, select **Create access key**. +4. Select the **Application running outside AWS** use case and select **Next**. +5. Optionally add a description tag, then select **Create access key**. +6. Copy the **Access key ID** and **Secret access key**. + +:::warning +The secret access key is shown only once at creation time. Store it securely and do not commit it to source control. Use Ballerina's `configurable` feature and a `Config.toml` file to supply credentials at runtime. +::: + +## Step 3: Identify your AWS region + +Determine the AWS region that hosts your SimpleDB domains. Amazon SimpleDB is a legacy service with no AWS Management Console UI, and it is available in only these eight regions: + +| Region | Endpoint | +|--------|----------| +| `us-east-1` | `sdb.amazonaws.com` | +| `us-west-1` | `sdb.us-west-1.amazonaws.com` | +| `us-west-2` | `sdb.us-west-2.amazonaws.com` | +| `eu-west-1` | `sdb.eu-west-1.amazonaws.com` | +| `ap-southeast-1` | `sdb.ap-southeast-1.amazonaws.com` | +| `ap-southeast-2` | `sdb.ap-southeast-2.amazonaws.com` | +| `ap-northeast-1` | `sdb.ap-northeast-1.amazonaws.com` | +| `sa-east-1` | `sdb.sa-east-1.amazonaws.com` | + +:::note +The `us-east-1` region uses the region-less `sdb.amazonaws.com` host; the connector resolves this automatically. For new applications, AWS recommends Amazon DynamoDB instead of SimpleDB. +::: + +## Next steps + +- [Action Reference](actions.md) - Available operations diff --git a/en/docs/connectors/catalog/index.mdx b/en/docs/connectors/catalog/index.mdx index 6652efc73a1..3487c7f2a87 100644 --- a/en/docs/connectors/catalog/index.mdx +++ b/en/docs/connectors/catalog/index.mdx @@ -36,6 +36,7 @@ Find the right connector for your integration. Use the search bar or filter by c { name: "Ardoq", description: "Enterprise architecture platform for modeling business and IT landscapes as connected components, references, and workspaces", operations: "Create, Read, Update, Delete, Batch, Reporting", auth: "Bearer Token", link: "erp-business/ardoq/overview", category: "ERP & Business" }, { name: "Asana", description: "Project management platform with tasks, projects, sections, goals, and team collaboration", operations: "Create, Read, Update, Delete, Search, Batch", auth: "Personal Access Token / OAuth 2.0", link: "productivity-collaboration/asana/connector-overview", category: "Productivity & Collaboration", icon: "https://bcentral-packageicons.azureedge.net/images/ballerinax_asana_3.0.1.png" }, { name: "AWS DynamoDB", description: "Connect to Amazon DynamoDB to create, read, update, and delete tables and items in a fully managed serverless NoSQL database.", operations: "Create Table, Get Item, Update Item, Query, Scan, Get Batch Items", auth: "Access Keys / Profile / Assume Role / Web Identity / SSO / Process / Default Chain", link: "database/aws.dynamodb/connector-overview", category: "Database", icon: "https://bcentral-packageicons.azureedge.net/images/ballerinax_aws.dynamodb_3.0.0.png" }, + { name: "AWS DynamoDB Streams", description: "Connect to Amazon DynamoDB Streams to capture and process item-level changes from DynamoDB tables in near real time.", operations: "List Streams, Describe Stream, Get Shard Iterator, Get Records, Poll Records", auth: "Access Keys / Profile / Assume Role / Web Identity / SSO / Process / Default Chain", link: "database/aws.dynamodbstreams/connector-overview", category: "Database", icon: "https://bcentral-packageicons.azureedge.net/images/ballerinax_aws.dynamodbstreams_2.0.0.png" }, { name: "AWS Marketplace MPE", description: "Retrieve customer entitlements for AWS Marketplace products", operations: "GetEntitlements", auth: "AWS Access Keys", link: "cloud-infrastructure/aws.marketplace.mpe/aws-marketplace-mpe-connector-overview", category: "Cloud & Infrastructure", icon: "https://bcentral-packageicons.azureedge.net/images/ballerinax_aws.marketplace.mpe_0.2.1.png" }, { name: "AWS Marketplace MPM", description: "AWS Marketplace metering for customer resolution and usage billing", operations: "Resolve Customer, Batch Meter Usage", auth: "AWS Access Key", link: "cloud-infrastructure/aws.marketplace.mpm/aws-marketplace-mpm-connector-overview", category: "Cloud & Infrastructure", icon: "https://bcentral-packageicons.azureedge.net/images/ballerinax_aws.marketplace.mpm_0.2.1.png" }, { name: "AWS Redshift", description: "Cloud data warehouse with SQL queries, batch operations, and stored procedure support", operations: "Query, Execute, Batch Execute, Call", auth: "Username/Password", link: "database/aws.redshift/aws-redshift-connector-overview", category: "Database", icon: "https://bcentral-packageicons.azureedge.net/images/ballerinax_aws.redshift_1.2.1.png" }, @@ -43,6 +44,7 @@ Find the right connector for your integration. Use the search bar or filter by c { name: "AWS S3", description: "Object storage with bucket management, object CRUD, presigned URLs, and multipart uploads", operations: "Create, Read, Delete, List, Presign, Multipart Upload", auth: "AWS Access Keys / IAM Role", link: "storage-file/aws.s3/overview", category: "Storage & Files", icon: "https://bcentral-packageicons.azureedge.net/images/ballerinax_aws.s3_3.5.1.png" }, { name: "AWS Secrets Manager", description: "Secrets management service for retrieving and describing AWS secrets", operations: "Describe, Get Secret Value, Batch Get", auth: "AWS Access Keys / IAM Role", link: "security-identity/aws.secretmanager/aws-secrets-manager-connector-overview", category: "Security & Identity", icon: "https://bcentral-packageicons.azureedge.net/images/ballerinax_aws.secretmanager_0.4.0.png" }, { name: "AWS SES", description: "Send transactional, bulk, and templated email and manage identities, contact lists, and templates via Amazon Simple Email Service.", operations: "Send Email, Send Bulk Email, Send Custom Verification Email, Create Email Identity, Create Contact List, Create Email Template", auth: "Access Keys / Profile / Assume Role / Web Identity / SSO / Process / Default Chain", link: "marketing-social/aws.ses/connector-overview", category: "Marketing & Social", icon: "https://bcentral-packageicons.azureedge.net/images/ballerinax_aws.ses_3.0.0.png" }, + { name: "AWS SimpleDB", description: "Connect with Amazon SimpleDB to manage schemaless NoSQL domains and perform item attribute reads, writes, and SQL-like queries.", operations: "Create Domain, Get Domain Meta Data, Select, List Domains, Delete Domain, Get Attributes, Put Attributes, Delete Attributes", auth: "Access Keys / Profile / Assume Role / Web Identity / SSO / Process / Default Chain", link: "database/aws.simpledb/connector-overview", category: "Database", icon: "https://bcentral-packageicons.azureedge.net/images/ballerinax_aws.simpledb_3.0.0.png" }, { name: "AWS SNS", description: "Pub/sub messaging service for topic-based notifications, SMS, and mobile push", operations: "Create Topic, Publish, Subscribe, Batch Publish, Platform Apps, SMS", auth: "AWS Access Keys", link: "communication/aws.sns/aws-sns-connector-overview", category: "Communication", icon: "https://bcentral-packageicons.azureedge.net/images/ballerinax_aws.sns_3.0.0.png" }, { name: "AWS SQS", description: "Connect with Amazon SQS to send, receive, and manage messages across standard and FIFO queues with support for batch operations and event-driven consumption.", operations: "Send, Receive, Delete, Create, List, Manage", auth: "AWS IAM", link: "messaging/aws.sqs/overview", category: "Messaging", icon: "https://bcentral-packageicons.azureedge.net/images/ballerinax_aws.sqs_5.0.0.png" }, { name: "Azure AI Search", description: "Azure AI Search service management for indexes, indexers, data sources, skillsets, and synonym maps", operations: "Create, Read, Update, Delete, List, Run, Reset, Analyze, Statistics", auth: "API Key", link: "ai-ml/azure.ai.search/azure-ai-search-connector-overview", category: "AI & ML", icon: "https://bcentral-packageicons.azureedge.net/images/ballerinax_azure.ai.search_1.0.1.png" }, diff --git a/en/docs/connectors/catalog/marketing-social/aws.ses/setup-guide.md b/en/docs/connectors/catalog/marketing-social/aws.ses/setup-guide.md index fb9500df267..9cdc6601b50 100644 --- a/en/docs/connectors/catalog/marketing-social/aws.ses/setup-guide.md +++ b/en/docs/connectors/catalog/marketing-social/aws.ses/setup-guide.md @@ -7,14 +7,14 @@ description: "How to set up and configure the ballerinax/aws.ses connector." # Setup Guide -This guide describes how to configure Amazon SES and create the IAM credentials required to use the connector. +This guide walks you through setting up your AWS account and obtaining the credentials required to use the AWS SES connector. ## Prerequisites - An active [AWS account](https://aws.amazon.com/) - Access to the [Amazon SES console](https://console.aws.amazon.com/ses/) -## Verify an email identity +## Step 1: Verify an email identity Amazon SES only sends from an address or domain you have proved you own. In the [Amazon SES console](https://console.aws.amazon.com/ses/), open **Identities** > **Create identity** and verify one of the following: @@ -27,49 +27,86 @@ Amazon SES only sends from an address or domain you have proved you own. In the A new account is in the Amazon SES **sandbox**, where mail can only be sent to verified addresses and the sending quota is low. Request production access from **Account dashboard** > **Request production access** before sending to arbitrary recipients. ::: -## Obtain IAM user credentials - -Create an IAM user and generate an access key by following the [obtaining IAM user credentials](https://central.ballerina.io/ballerinax/aws/latest#obtaining-iam-user-credentials) guide. - -Attach the Amazon SES permissions your application needs. The following policy covers sending mail and reading the account's identities, lists, and templates: - -```json -{ - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Action": [ - "ses:SendEmail", - "ses:SendBulkEmail", - "ses:SendCustomVerificationEmail" - ], - "Resource": "arn:aws:ses:::identity/" - }, - { - "Effect": "Allow", - "Action": [ - "ses:GetEmailIdentity", - "ses:ListEmailIdentities", - "ses:GetContactList", - "ses:ListContactLists", - "ses:ListContacts", - "ses:GetContact", - "ses:GetEmailTemplate", - "ses:ListEmailTemplates", - "ses:GetCustomVerificationEmailTemplate", - "ses:ListCustomVerificationEmailTemplates" - ], - "Resource": "*" - } - ] -} -``` +## Step 2: Create an IAM user + +1. Log in to the [AWS Management Console](https://console.aws.amazon.com/). +2. Navigate to **IAM** (Identity and Access Management). +3. Select **Users** in the left sidebar, then select **Create user**. +4. Enter a user name (for example, `ballerina-ses-connector`) and select **Next**. +5. Select **Attach policies directly**. +6. Select **Create policy**, open the **JSON** tab, and paste the policy below, then attach it. Replace ``, ``, ``, and `` with the values for your deployment, or use `identity/*` to grant access to every verified identity in the account. + + ```json + { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "ses:SendEmail", + "ses:SendBulkEmail", + "ses:SendCustomVerificationEmail" + ], + "Resource": "arn:aws:ses:::identity/" + }, + { + "Effect": "Allow", + "Action": "ses:SendCustomVerificationEmail", + "Resource": "arn:aws:ses:::custom-verification-email-template/" + }, + { + "Effect": "Allow", + "Action": [ + "ses:GetEmailIdentity", + "ses:ListEmailIdentities", + "ses:GetContactList", + "ses:ListContactLists", + "ses:ListContacts", + "ses:GetContact", + "ses:GetEmailTemplate", + "ses:ListEmailTemplates", + "ses:GetCustomVerificationEmailTemplate", + "ses:ListCustomVerificationEmailTemplates" + ], + "Resource": "*" + } + ] + } + ``` + + `ses:SendCustomVerificationEmail` is granted on both the identity and the template ARN — drop the second statement if you don't send custom verification email. The read actions in the last statement can't be scoped to an identity, so they use `*`; see [controlling access to identities](https://docs.aws.amazon.com/ses/latest/dg/control-user-access.html). Add `Create*`, `Update*`, and `Delete*` actions only if your application manages these resources. + +7. Select **Next**, review the settings, and select **Create user**. + +:::note +For a screenshot-by-screenshot walkthrough of the IAM user creation and access key generation steps, see the [AWS SQS setup guide](../../messaging/aws.sqs/setup-guide.md). The console flow is identical, only the attached policy differs. +::: + +:::tip +For production workloads, consider using an IAM role with temporary credentials via AWS STS instead of long-lived access keys. +::: + +## Step 3: Generate access keys + +1. In the IAM console, select the user you created. +2. Go to the **Security credentials** tab. +3. Under **Access keys**, select **Create access key**. +4. Select the **Application running outside AWS** use case and select **Next**. +5. Optionally add a description tag, then select **Create access key**. +6. Copy the **Access key ID** and **Secret access key**. + +:::warning +The secret access key is shown only once at creation time. Store it securely and do not commit it to source control. Use Ballerina's `configurable` feature and a `Config.toml` file to supply credentials at runtime. +::: + +## Step 4: Identify your AWS region + +Determine the AWS region you will send from, and configure the connector with that same region. :::note -None of these actions can be scoped to an identity ARN, so they need a statement of their own with `Resource` set to `*` — the two-statement split Amazon SES [documents](https://docs.aws.amazon.com/ses/latest/dg/control-user-access.html) for restricting which identities a user may send from. Some do accept a narrower resource of their own, such as a contact list or template ARN, if you want to scope them further. Add the matching `Create*`, `Update*`, and `Delete*` actions only if your application manages these resources rather than just reading them. +Amazon SES is a regional service, and an identity is verified per region — an address or domain verified in one region is not verified in another. Use the region in which you completed Step 1. ::: ## Next steps -- [Action Reference](actions.md) - Available operations \ No newline at end of file +- [Action Reference](actions.md) - Available operations diff --git a/en/docs/connectors/catalog/security-identity/aws.secretmanager/connector-overview.md b/en/docs/connectors/catalog/security-identity/aws.secretmanager/connector-overview.md index da7b78f7925..8e6ac920f64 100644 --- a/en/docs/connectors/catalog/security-identity/aws.secretmanager/connector-overview.md +++ b/en/docs/connectors/catalog/security-identity/aws.secretmanager/connector-overview.md @@ -4,7 +4,7 @@ title: "Overview" # Overview -AWS Secrets Manager is a managed service that helps you protect access to your applications, services, and IT resources by enabling you to easily rotate, manage, and retrieve database credentials, API keys, and other secrets. The Ballerina AWS Secrets Manager connector provides programmatic access to the AWS Secrets Manager API, allowing you to describe, retrieve, and batch-retrieve secrets from your Ballerina integration flows. +AWS Secrets Manager is a managed service that helps you protect access to your applications, services, and IT resources by enabling you to easily rotate, manage, and retrieve database credentials, API keys, and other secrets. The Secrets Manager connector provides programmatic access to the AWS Secrets Manager API, allowing you to describe, retrieve, and batch-retrieve secrets from your Ballerina integration flows. ## Key features diff --git a/en/sidebars.ts b/en/sidebars.ts index 73333e93c01..118f7e3c547 100644 --- a/en/sidebars.ts +++ b/en/sidebars.ts @@ -439,6 +439,16 @@ const sidebars: SidebarsConfig = { 'connectors/catalog/database/aws.dynamodb/example', ], }, + { + type: 'category', + label: 'AWS DynamoDB Streams', + link: { type: 'doc', id: 'connectors/catalog/database/aws.dynamodbstreams/connector-overview' }, + items: [ + 'connectors/catalog/database/aws.dynamodbstreams/setup-guide', + 'connectors/catalog/database/aws.dynamodbstreams/actions', + 'connectors/catalog/database/aws.dynamodbstreams/example', + ], + }, { type: 'category', label: 'AWS Marketplace MPE', @@ -509,6 +519,16 @@ const sidebars: SidebarsConfig = { 'connectors/catalog/marketing-social/aws.ses/example', ], }, + { + type: 'category', + label: 'AWS SimpleDB', + link: { type: 'doc', id: 'connectors/catalog/database/aws.simpledb/connector-overview' }, + items: [ + 'connectors/catalog/database/aws.simpledb/setup-guide', + 'connectors/catalog/database/aws.simpledb/actions', + 'connectors/catalog/database/aws.simpledb/example', + ], + }, { type: 'category', label: 'AWS SNS', diff --git a/en/static/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_01_palette.png b/en/static/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_01_palette.png new file mode 100644 index 00000000000..33b82ed9c5f Binary files /dev/null and b/en/static/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_01_palette.png differ diff --git a/en/static/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_02_connection_form.png b/en/static/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_02_connection_form.png new file mode 100644 index 00000000000..ee8b67671bd Binary files /dev/null and b/en/static/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_02_connection_form.png differ diff --git a/en/static/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_03_connections_list.png b/en/static/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_03_connections_list.png new file mode 100644 index 00000000000..3a58cbc57f3 Binary files /dev/null and b/en/static/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_03_connections_list.png differ diff --git a/en/static/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_04_operations_panel.png b/en/static/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_04_operations_panel.png new file mode 100644 index 00000000000..05327f72c09 Binary files /dev/null and b/en/static/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_04_operations_panel.png differ diff --git a/en/static/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_05_operation_form.png b/en/static/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_05_operation_form.png new file mode 100644 index 00000000000..2594d15ab4d Binary files /dev/null and b/en/static/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_05_operation_form.png differ diff --git a/en/static/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_06_completed_flow.png b/en/static/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_06_completed_flow.png new file mode 100644 index 00000000000..5e0b3519866 Binary files /dev/null and b/en/static/img/connectors/catalog/database/aws.dynamodbstreams/ballerinax_aws_dynamodbstreams_screenshot_06_completed_flow.png differ diff --git a/en/static/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_01_palette.png b/en/static/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_01_palette.png new file mode 100644 index 00000000000..7e52b61c0ba Binary files /dev/null and b/en/static/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_01_palette.png differ diff --git a/en/static/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_02_connection_form.png b/en/static/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_02_connection_form.png new file mode 100644 index 00000000000..9d667e1a892 Binary files /dev/null and b/en/static/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_02_connection_form.png differ diff --git a/en/static/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_03_connections_list.png b/en/static/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_03_connections_list.png new file mode 100644 index 00000000000..563ee91feff Binary files /dev/null and b/en/static/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_03_connections_list.png differ diff --git a/en/static/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_04_operations_panel.png b/en/static/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_04_operations_panel.png new file mode 100644 index 00000000000..142eba83046 Binary files /dev/null and b/en/static/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_04_operations_panel.png differ diff --git a/en/static/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_05_operation_form.png b/en/static/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_05_operation_form.png new file mode 100644 index 00000000000..4d3cdad0362 Binary files /dev/null and b/en/static/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_05_operation_form.png differ diff --git a/en/static/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_06_completed_flow.png b/en/static/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_06_completed_flow.png new file mode 100644 index 00000000000..de6efc4ab08 Binary files /dev/null and b/en/static/img/connectors/catalog/database/aws.simpledb/ballerinax_aws_simpledb_screenshot_06_completed_flow.png differ