Enable a CDC stream when creating a new table in Amazon Keyspaces
To enable a CDC stream when you create a table, you can use the CREATE TABLE
statement in CQL or the create-table
command with the AWS CLI.
For each changed row in the table, Amazon Keyspaces can capture the following changes based on the view_type
of the
cdc_specification
you select:
NEW_AND_OLD_IMAGES
– both versions of the row, before and after the change. This is the default.
NEW_IMAGE
– the version of the row after the change.
OLD_IMAGE
– the version of the row before the change.
KEYS_ONLY
– the partition and clustering keys of the row that was changed.
For information about how to tag a stream, see Add tags to a new stream when creating a table.
Amazon Keyspaces CDC requires the presence of a service-linked role
(AWSServiceRoleForAmazonKeyspacesCDC
) that publishes metric data
from Amazon Keyspaces CDC streams into the "cloudwatch:namespace": "AWS/Cassandra"
in your CloudWatch account on your behalf. This role is created automatically for you. For
more information, see Using roles for Amazon Keyspaces CDC streams.
- Cassandra Query Language (CQL)
-
Enable a CDC stream when you create a table with CQL
-
CREATE TABLE mykeyspace.mytable (a text, b text, PRIMARY KEY(a))
WITH CUSTOM_PROPERTIES={'cdc_specification': {'view_type': 'NEW_IMAGE'}} AND CDC = TRUE;
To confirm the stream settings, you can use the following statement.
SELECT keyspace_name, table_name, cdc, custom_properties FROM system_schema_mcs.tables WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';
The output of that statement should look similar to this.
SELECT keyspace_name, table_name, cdc, custom_properties FROM system_schema_mcs.tables WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';keyspace_name | table_name | cdc | custom_properties
---------------+------------+------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
mykeyspace | mytable | True | {'capacity_mode': {'last_update_to_pay_per_request_timestamp': '1741383893782', 'throughput_mode': 'PAY_PER_REQUEST'}, 'cdc_specification': {'latest_stream_arn': 'arn:aws:cassandra:aws-region
:111122223333:/keyspace/mykeyspace/table/mytable/stream/2025-03-07T21:44:53.783', 'status': 'ENABLED', 'view_type': 'NEW_IMAGE'}, 'encryption_specification': {'encryption_type': 'AWS_OWNED_KMS_KEY'}, 'point_in_time_recovery': {'status': 'disabled'}}
>
- CLI
-
Enable a CDC stream when you create a table with the AWS CLI
-
To create a stream you can use the following syntax.
aws keyspaces create-table \
--keyspace-name 'mykeyspace' \
--table-name 'mytable' \
--schema-definition 'allColumns=[{name=a,type=text},{name=b,type=text}],partitionKeys=[{name=a}]' \
--cdc-specification status=ENABLED,viewType=NEW_IMAGE
The output of that command shows the standard create-table
response and looks similar to this example.
{ "resourceArn": "arn:aws:cassandra:us-east-1:111222333444:/keyspace/mykeyspace/table/mytable" }