Table Of Contents


User Guide

First time using the AWS CLI? See the User Guide for help getting started.

[ aws . kafka ]



Creates a new MSK cluster.

See also: AWS API Documentation

See 'aws help' for descriptions of global parameters.


--broker-node-group-info <value>
[--client-authentication <value>]
--cluster-name <value>
[--configuration-info <value>]
[--encryption-info <value>]
[--enhanced-monitoring <value>]
--kafka-version <value>
--number-of-broker-nodes <value>
[--tags <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]


--broker-node-group-info (structure)

Information about the broker nodes in the cluster.

Shorthand Syntax:


JSON Syntax:

  "BrokerAZDistribution": "DEFAULT",
  "ClientSubnets": ["string", ...],
  "InstanceType": "string",
  "SecurityGroups": ["string", ...],
  "StorageInfo": {
    "EbsStorageInfo": {
      "VolumeSize": integer

--client-authentication (structure)

Includes all client authentication related information.

Shorthand Syntax:


JSON Syntax:

  "Tls": {
    "CertificateAuthorityArnList": ["string", ...]

--cluster-name (string)

The name of the cluster.

--configuration-info (structure)

Represents the configuration that you want MSK to use for the brokers in a cluster.

Shorthand Syntax:


JSON Syntax:

  "Arn": "string",
  "Revision": long

--encryption-info (structure)

Includes all encryption-related information.

Shorthand Syntax:


JSON Syntax:

  "EncryptionAtRest": {
    "DataVolumeKMSKeyId": "string"
  "EncryptionInTransit": {
    "ClientBroker": "TLS"|"TLS_PLAINTEXT"|"PLAINTEXT",
    "InCluster": true|false

--enhanced-monitoring (string)

Specifies the level of monitoring for the MSK cluster. The possible values are DEFAULT, PER_BROKER, and PER_TOPIC_PER_BROKER.

Possible values:


--kafka-version (string)

The version of Apache Kafka.

--number-of-broker-nodes (integer)

The number of broker nodes in the cluster.

--tags (map)

Create tags when creating the cluster.

Shorthand Syntax:


JSON Syntax:

{"string": "string"

--cli-input-json (string) Performs service operation based on the JSON string provided. The JSON string follows the format provided by --generate-cli-skeleton. If other arguments are provided on the command line, the CLI values will override the JSON-provided values. It is not possible to pass arbitrary binary values using a JSON-provided value as the string will be taken literally.

--generate-cli-skeleton (string) Prints a JSON skeleton to standard output without sending an API request. If provided with no value or the value input, prints a sample input JSON that can be used as an argument for --cli-input-json. If provided with the value output, it validates the command inputs and returns a sample output JSON for that command.

See 'aws help' for descriptions of global parameters.


To create an Amazon MSK cluster

The following create-cluster example creates an MSK cluster named MessagingCluster with three broker nodes. A JSON file named brokernodegroupinfo.json specifies the three subnets over which you want Amazon MSK to distribute the broker nodes. This example doesn't specify the monitoring level, so the cluster gets the DEFAULT level.

aws kafka create-cluster \
    --cluster-name "MessagingCluster" \
    --broker-node-group-info file://brokernodegroupinfo.json \
    --kafka-version "2.2.1" \
    --number-of-broker-nodes 3

Contents of brokernodegroupinfo.json:

    "InstanceType": "kafka.m5.xlarge",
    "BrokerAZDistribution": "DEFAULT",
    "ClientSubnets": [


    "ClusterArn": "arn:aws:kafka:us-west-2:123456789012:cluster/MessagingCluster/a1b2c3d4-5678-90ab-cdef-11111EXAMPLE-2",
    "ClusterName": "MessagingCluster",
    "State": "CREATING"

For more information, see Create an Amazon MSK Cluster in the Amazon Managed Streaming for Apache Kafka.


ClusterArn -> (string)

The Amazon Resource Name (ARN) of the cluster.

ClusterName -> (string)

The name of the MSK cluster.

State -> (string)

The state of the cluster. The possible states are CREATING, ACTIVE, and FAILED.