ScyllaDB University Live | Free Virtual Training Event
Learn more
ScyllaDB Documentation Logo Documentation
  • Deployments
    • Cloud
    • Server
  • Tools
    • ScyllaDB Manager
    • ScyllaDB Monitoring Stack
    • ScyllaDB Operator
  • Drivers
    • CQL Drivers
    • DynamoDB Drivers
    • Supported Driver Versions
  • Resources
    • ScyllaDB University
    • Community Forum
    • Tutorials
Install
Search Ask AI
ScyllaDB Docs ScyllaDB Operator Connect Your App Alternator (DynamoDB API)

Caution

You're viewing documentation for an unstable version of ScyllaDB Operator. Switch to the latest stable version.

Alternator (DynamoDB API)¶

This page explains how to enable and use ScyllaDB’s Alternator, a DynamoDB-compatible API, on Kubernetes.

Enable Alternator¶

Add the alternator section to your ScyllaCluster spec:

apiVersion: scylla.scylladb.com/v1
kind: ScyllaCluster
metadata:
  name: scylladb
spec:
  alternator: {}
  # ... rest of the spec

This enables the Alternator API with HTTPS on port 8043 and authorization enabled by default.

Configuration options¶

Field

Description

Default

writeIsolation

Write isolation level for Alternator operations.

"" (ScyllaDB default)

insecureEnableHTTP

Also serve Alternator on the unencrypted HTTP port.

false

insecureDisableAuthorization

Disable Alternator authorization.

false

servingCertificate.type

TLS certificate configuration (OperatorManaged or UserManaged).

OperatorManaged

Note

Unlike CQL clients, Alternator clients do not need to connect to every ScyllaDB node directly or discover individual node IP addresses. The Alternator protocol is HTTP-based, so you can also expose it through an Ingress or other HTTP networking concepts.

Obtain credentials¶

Alternator uses the CQL salted_hash from system.roles as the AWS secret access key. The access key ID is the CQL username.

Caution

The salted_hash is only available when CQL password authentication is enabled. Always configure authentication before using Alternator.

CLUSTER_NAME=scylladb
CQL_USER=cassandra

kubectl exec -it service/${CLUSTER_NAME}-client -c scylla -- cqlsh --user ${CQL_USER} \
  -e "SELECT salted_hash FROM system.roles WHERE role = '${CQL_USER}'"

Connect with AWS CLI¶

Set up the environment variables and TLS CA bundle:

Step 1: Look up the Alternator endpoint

CLUSTER_NAME=scylladb
CQL_USER=cassandra

SCYLLADB_EP="$(kubectl get service/${CLUSTER_NAME}-client -o='jsonpath={.spec.clusterIP}')"
export AWS_ENDPOINT_URL_DYNAMODB="https://${SCYLLADB_EP}:8043"

Step 2: Set the access key ID

export AWS_ACCESS_KEY_ID="${CQL_USER}"

Step 3: Get the secret access key

AWS_SECRET_ACCESS_KEY="$(kubectl exec -i service/${CLUSTER_NAME}-client -c scylla -- cqlsh --user ${CQL_USER} --no-color \
  -e "SELECT salted_hash from system.roles WHERE role = '${AWS_ACCESS_KEY_ID}';" \
  | sed -e 's/\r//g' | sed -e '4q;d' | sed -E -e 's/^\s+//')"
export AWS_SECRET_ACCESS_KEY

Step 4: Download the TLS CA bundle

AWS_CA_BUNDLE="$(mktemp)"
export AWS_CA_BUNDLE
kubectl get configmap/${CLUSTER_NAME}-alternator-local-serving-ca \
  --template='{{ index .data "ca-bundle.crt" }}' > "${AWS_CA_BUNDLE}"

Now use the aws dynamodb CLI normally:

aws dynamodb create-table \
  --table-name SeaMonsters \
  --attribute-definitions AttributeName=Species,AttributeType=S AttributeName=MonsterName,AttributeType=S \
  --key-schema AttributeName=Species,KeyType=HASH AttributeName=MonsterName,KeyType=RANGE \
  --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
aws dynamodb list-tables
TABLENAMES      SeaMonsters

TLS certificate resources¶

The Operator creates these resources for Alternator:

Resource

Name

Contents

Serving CA

configmap/<cluster-name>-alternator-local-serving-ca

ca-bundle.crt — CA to validate Alternator HTTPS.

Troubleshoot¶

  • AccessDeniedException: Confirms Alternator is reachable but credentials are wrong. Re-extract credentials per the steps above and verify they match.

  • Could not connect to the endpoint: Alternator may not be enabled on the cluster. Verify spec.alternator is set in the ScyllaCluster and Pods are running. Check that the Service port (8043 for HTTPS by default) is reachable.

Multi-datacenter limitations¶

When using Alternator with a multi-datacenter ScyllaDB deployment (multiple ScyllaCluster resources connected via externalSeeds), the following constraints apply:

Limitation

Detail

No built-in cross-DC routing

Alternator endpoints are per-datacenter. There is no built-in load balancer that routes DynamoDB API requests across datacenters. Connect your application to the Alternator endpoint in the datacenter closest to it.

Authentication tokens are DC-local

Each ScyllaCluster has its own Alternator authentication credentials. If you require the same credentials across DCs, you must configure the same alternatorWriteIsolation and authentication settings on each cluster independently.

Related pages¶

  • Connect via CQL — CQL connection and authentication setup.

  • Discovery endpoint — how the client Service works.

  • Security — TLS certificate management.

Was this page helpful?

PREVIOUS
Connect via CQL
NEXT
Discovery endpoint
  • Create an issue
  • Edit this page

On this page

  • Alternator (DynamoDB API)
    • Enable Alternator
      • Configuration options
    • Obtain credentials
    • Connect with AWS CLI
    • TLS certificate resources
      • Troubleshoot
    • Multi-datacenter limitations
    • Related pages
ScyllaDB Operator
Search Ask AI
  • master
    • master
    • v1.21
    • v1.20
    • v1.19
    • v1.18
  • Get Started
    • What Is ScyllaDB Operator?
    • ScyllaDB Concepts on Kubernetes
  • Install Operator
    • Provision infrastructure
      • Set up a GKE cluster for ScyllaDB
      • Set up an EKS cluster for ScyllaDB
      • Set up an OKE cluster for ScyllaDB
      • Set up an OpenShift cluster for ScyllaDB
    • Install with GitOps
    • Install with Helm
    • Install on OpenShift
  • Deploy ScyllaDB
    • Before you deploy
      • Set up dedicated node pools
      • Configure CPU pinning
      • Configure nodes
      • Configure ScyllaDB Operator
    • Deploy your first cluster
    • Reference deployments
      • Reference deployment: GKE
      • Reference deployment: EKS
      • Reference deployment: OKE
      • Reference deployment: OpenShift
    • Install ScyllaDB Manager
    • Set up networking
      • Configure external access
      • IPv6 networking
        • Getting started with IPv6 networking
        • Configure dual-stack networking
        • Configure IPv6-only networking
        • Migrate clusters to IPv6
        • Troubleshoot IPv6 networking issues
        • IPv6 networking concepts
    • Set up monitoring
      • Set up ScyllaDB Monitoring
      • Set up ScyllaDB Monitoring on OpenShift
      • Expose Grafana
    • Production checklist
  • Connect Your App
    • Connect via CQL
    • Alternator (DynamoDB API)
    • Discovery endpoint
  • Understand
    • Storage
    • Tuning
    • ScyllaDB Manager
    • Networking
    • ScyllaDB Monitoring overview
    • Bootstrap synchronisation
    • Automatic data cleanup
    • Sidecar and pod anatomy
    • Ignition
    • Pod disruption budgets
    • Security
    • StatefulSets and racks
  • Operate
    • Scale, add, remove racks
    • Replace nodes
    • Expand storage volumes
    • Use maintenance mode
    • Back up and restore
    • Restore from backup
    • Perform a rolling restart
    • Migrate a rack to a new node pool
    • Pass additional ScyllaDB arguments
    • Configure precomputed IO properties
  • Upgrade
    • Upgrading ScyllaDB Operator
    • Upgrading ScyllaDB clusters
  • Troubleshoot
    • Investigate pod restarts
    • Change log level on a live cluster
    • Recover from a failed node replace
    • Troubleshoot performance
    • Collect debugging information
      • Collect data with must-gather
      • must-gather contents
      • Query system tables for debugging
    • Collect core dumps
  • Reference
    • API Reference
      • scylla.scylladb.com
        • NodeConfig (scylla.scylladb.com/v1alpha1)
        • RemoteKubernetesCluster (scylla.scylladb.com/v1alpha1)
        • RemoteOwner (scylla.scylladb.com/v1alpha1)
        • ScyllaCluster (scylla.scylladb.com/v1)
        • ScyllaDBCluster (scylla.scylladb.com/v1alpha1)
        • ScyllaDBDatacenterNodesStatusReport (scylla.scylladb.com/v1alpha1)
        • ScyllaDBDatacenter (scylla.scylladb.com/v1alpha1)
        • ScyllaDBManagerClusterRegistration (scylla.scylladb.com/v1alpha1)
        • ScyllaDBManagerTask (scylla.scylladb.com/v1alpha1)
        • ScyllaDBMonitoring (scylla.scylladb.com/v1alpha1)
        • ScyllaOperatorConfig (scylla.scylladb.com/v1alpha1)
    • Feature gates
    • IPv6 configuration reference
    • Releases
    • Known issues
    • Conditions reference
    • nodetool alternatives
  • Contributing to ScyllaDB Operator
Docs Tutorials University Contact Us About Us
© 2026, ScyllaDB. All rights reserved. | Terms of Service | Privacy Policy | ScyllaDB, and ScyllaDB Cloud, are registered trademarks of ScyllaDB, Inc.
Last updated on 22 May 2026.
Powered by Sphinx 9.1.0 & ScyllaDB Theme 1.9.2