IaC Bazaar
AWSLive-tested

MSK Serverless (Apache Kafka)

An MSK Serverless Apache Kafka cluster with no brokers to size - SASL/IAM authentication only, encryption in transit and at rest always on, multi-AZ placement, and a locked-down security group.

terraformAWS#aws
aws-mskterraform v1.7

Verification

Live-tested

Really deployed to a cloud sandbox, verified against its outputs and assertions, then destroyed - with the teardown confirmed.

Conformance

  • Static validation (fmt · validate · tflint)
  • Security scan clean (Checkov)
  • Plan test superseded by live test

Provenance

Functional

  • Live-tested - applied, verified, destroyed

Last verified 2026-06-30 · how we verify

Verify this download

cosign · sha-256

Don't take our word for it. Every release is signed with cosign - check the bytes against our pinned public key before you trust them.

# 1. Our pinned public key - fetch once, trust out-of-band
curl -O https://www.iac-bazaar.com/cosign.pub

# 2. This module's Sigstore bundle
curl -o aws-msk-1.0.0.sigstore.json \
  https://www.iac-bazaar.com/api/artifacts/aws-msk/signature

# 3. Verify the tarball you downloaded
cosign verify-blob \
  --key cosign.pub \
  --bundle aws-msk-1.0.0.sigstore.json \
  aws-msk-1.0.0.tar.gz
# → Verified OK

# 4. (optional) confirm the checksum too
echo "d817a5cb490611f5cf92265638fa4b327ffeb51eba2314d06c5fb6b881462341  aws-msk-1.0.0.tar.gz" | sha256sum -c

Use it from the registry

terraform · opentofu
module "msk" {
  source  = "www.iac-bazaar.com/iac-bazaar/aws-msk/aws"
  version = "1.0.0"
}

Paid module — needs a purchase (or a subscription that covers it) plus a registry token from /account/tokens. Full setup: registry docs.

Inputs & outputs

Create a free account to read this module's contract

The declared contract — every input name, type, default and description, plus every output — is shown to signed-in accounts, not to anonymous visitors.

A free account sees the contract of every Free module. This one is Premium, so its contract unlocks when you buy it.

Documentation

aws-msk

Amazon MSK Serverless — a fully-managed, on-demand Apache Kafka cluster with no brokers to size, patch, or pay for at idle. You provision topics, not instances; capacity scales automatically. Works with Terraform and OpenTofu (>= 1.6), AWS provider >= 6.0, < 7.0. Secure by default and self-contained: authentication is SASL/IAM only (the single mode serverless supports), encryption in transit and at rest is always on, the cluster is never publicly reachable, and the networking pieces (default-VPC placement + a locked-down security group) are created for you, so a minimal cluster applies with just a cluster_name.

Why serverless: it skips broker provisioning entirely (cheaper and faster to stand up than provisioned MSK, and nothing to right-size). It is billed per partition-hour, storage, and throughput rather than per broker-hour — there are no idle instances, but an empty cluster still carries a small hourly base while it exists, so tear down test clusters promptly.

Secure defaults:

  • SASL/IAM authentication — every client authenticates and authorizes through IAM. There are no plaintext listeners and no SCRAM secrets to rotate (serverless does not offer unauthenticated or TLS-mutual-auth modes).
  • Encryption in transit and at rest — always on, managed by the service; clients speak Kafka over TLS on port 9098.
  • No public exposure — access is via a module-created security group that opens the Kafka IAM port only to allowed_cidrs / allowed_security_group_ids (no ingress at all by default).
  • Multi-AZ placement — the cluster spreads its network interfaces across 2–3 Availability Zones (default-VPC subnets when you don't pin your own).

Security notes

  • Authorization is IAM-driven: grant the smallest set of kafka-cluster:* actions your producers/consumers need, scoped to this cluster's ARN and the specific topic/group ARNs (built from cluster_uuid). Avoid wildcard topic access.
  • Keep allowed_cidrs / allowed_security_group_ids as tight as possible — prefer granting an application security group over a CIDR range. The default is no ingress at all.
  • For real deployments pin subnet_ids to private subnets (in 2–3 AZs) instead of relying on the default-VPC fallback.

Requirements

  • Terraform or OpenTofu >= 1.6
  • hashicorp/aws >= 6.0, < 7.0

License

Commercial — IaC Bazaar EULA. © IaC Bazaar. Original work (not derived from a third-party module).

Usage code & full reference unlock after purchase

The complete copy-paste usage, the full input/output reference, and operational notes ship with your licence - shown here and bundled in the download.

  • Usage
  • Inputs
  • Outputs

Related modules