import * as core from "@terrascript/core"; export interface JmxExporterArgs extends core.SchemaArgs { enabledInBroker: boolean | core.BooleanOut; } export class JmxExporter extends core.Schema { @core.attr(Boolean) public enabledInBroker!: boolean | core.BooleanOut; } export interface NodeExporterArgs extends core.SchemaArgs { enabledInBroker: boolean | core.BooleanOut; } export class NodeExporter extends core.Schema { @core.attr(Boolean) public enabledInBroker!: boolean | core.BooleanOut; } export interface PrometheusArgs extends core.SchemaArgs { jmxExporter?: JmxExporter; nodeExporter?: NodeExporter; } export class Prometheus extends core.Schema { @core.attr(JmxExporter) public jmxExporter?: JmxExporter; @core.attr(NodeExporter) public nodeExporter?: NodeExporter; } export interface OpenMonitoringArgs extends core.SchemaArgs { prometheus: Prometheus; } export class OpenMonitoring extends core.Schema { @core.attr(Prometheus) public prometheus!: Prometheus; } export interface CloudwatchLogsArgs extends core.SchemaArgs { enabled: boolean | core.BooleanOut; logGroup?: string | core.StringOut; } export class CloudwatchLogs extends core.Schema { @core.attr(Boolean) public enabled!: boolean | core.BooleanOut; @core.attr(String) public logGroup?: string | core.StringOut; } export interface FirehoseArgs extends core.SchemaArgs { deliveryStream?: string | core.StringOut; enabled: boolean | core.BooleanOut; } export class Firehose extends core.Schema { @core.attr(String) public deliveryStream?: string | core.StringOut; @core.attr(Boolean) public enabled!: boolean | core.BooleanOut; } export interface S3Args extends core.SchemaArgs { bucket?: string | core.StringOut; enabled: boolean | core.BooleanOut; prefix?: string | core.StringOut; } export class S3 extends core.Schema { @core.attr(String) public bucket?: string | core.StringOut; @core.attr(Boolean) public enabled!: boolean | core.BooleanOut; @core.attr(String) public prefix?: string | core.StringOut; } export interface BrokerLogsArgs extends core.SchemaArgs { cloudwatchLogs?: CloudwatchLogs; firehose?: Firehose; s3?: S3; } export class BrokerLogs extends core.Schema { @core.attr(CloudwatchLogs) public cloudwatchLogs?: CloudwatchLogs; @core.attr(Firehose) public firehose?: Firehose; @core.attr(S3) public s3?: S3; } export interface LoggingInfoArgs extends core.SchemaArgs { brokerLogs: BrokerLogs; } export class LoggingInfo extends core.Schema { @core.attr(BrokerLogs) public brokerLogs!: BrokerLogs; } export interface ConfigurationInfoArgs extends core.SchemaArgs { arn: string | core.StringOut; revision: number | core.NumberOut; } export class ConfigurationInfo extends core.Schema { @core.attr(String) public arn!: string | core.StringOut; @core.attr(Number) public revision!: number | core.NumberOut; } export interface EncryptionInTransitArgs extends core.SchemaArgs { clientBroker?: string | core.StringOut; inCluster?: boolean | core.BooleanOut; } export class EncryptionInTransit extends core.Schema { @core.attr(String) public clientBroker?: string | core.StringOut; @core.attr(Boolean) public inCluster?: boolean | core.BooleanOut; } export interface EncryptionInfoArgs extends core.SchemaArgs { encryptionAtRestKmsKeyArn?: string | core.StringOut; encryptionInTransit?: EncryptionInTransit; } export class EncryptionInfo extends core.Schema { @core.attr(String, { computed: true }) public encryptionAtRestKmsKeyArn?: string | core.StringOut; @core.attr(EncryptionInTransit) public encryptionInTransit?: EncryptionInTransit; } export interface ProvisionedThroughputArgs extends core.SchemaArgs { enabled?: boolean | core.BooleanOut; volumeThroughput?: number | core.NumberOut; } export class ProvisionedThroughput extends core.Schema { @core.attr(Boolean) public enabled?: boolean | core.BooleanOut; @core.attr(Number) public volumeThroughput?: number | core.NumberOut; } export interface EbsStorageInfoArgs extends core.SchemaArgs { provisionedThroughput?: ProvisionedThroughput; volumeSize?: number | core.NumberOut; } export class EbsStorageInfo extends core.Schema { @core.attr(ProvisionedThroughput) public provisionedThroughput?: ProvisionedThroughput; @core.attr(Number) public volumeSize?: number | core.NumberOut; } export interface StorageInfoArgs extends core.SchemaArgs { ebsStorageInfo?: EbsStorageInfo; } export class StorageInfo extends core.Schema { @core.attr(EbsStorageInfo) public ebsStorageInfo?: EbsStorageInfo; } export interface PublicAccessArgs extends core.SchemaArgs { type?: string | core.StringOut; } export class PublicAccess extends core.Schema { @core.attr(String, { computed: true }) public type?: string | core.StringOut; } export interface ConnectivityInfoArgs extends core.SchemaArgs { publicAccess?: PublicAccess; } export class ConnectivityInfo extends core.Schema { @core.attr(PublicAccess, { computed: true }) public publicAccess?: PublicAccess; } export interface BrokerNodeGroupInfoArgs extends core.SchemaArgs { azDistribution?: string | core.StringOut; clientSubnets: core.Array | core.ArrayOut; connectivityInfo?: ConnectivityInfo; ebsVolumeSize?: number | core.NumberOut; instanceType: string | core.StringOut; securityGroups: core.Array | core.ArrayOut; storageInfo?: StorageInfo; } export class BrokerNodeGroupInfo extends core.Schema { @core.attr(String) public azDistribution?: string | core.StringOut; @core.attr(String, { kind: "array" }) public clientSubnets!: core.Array | core.ArrayOut; @core.attr(ConnectivityInfo, { computed: true }) public connectivityInfo?: ConnectivityInfo; @core.attr(Number, { computed: true }) public ebsVolumeSize?: number | core.NumberOut; @core.attr(String) public instanceType!: string | core.StringOut; @core.attr(String, { kind: "array" }) public securityGroups!: core.Array | core.ArrayOut; @core.attr(StorageInfo, { computed: true }) public storageInfo?: StorageInfo; } export interface SaslArgs extends core.SchemaArgs { iam?: boolean | core.BooleanOut; scram?: boolean | core.BooleanOut; } export class Sasl extends core.Schema { @core.attr(Boolean) public iam?: boolean | core.BooleanOut; @core.attr(Boolean) public scram?: boolean | core.BooleanOut; } export interface TlsArgs extends core.SchemaArgs { certificateAuthorityArns?: core.Array | core.ArrayOut; } export class Tls extends core.Schema { @core.attr(String, { kind: "array" }) public certificateAuthorityArns?: | core.Array | core.ArrayOut; } export interface ClientAuthenticationArgs extends core.SchemaArgs { sasl?: Sasl; tls?: Tls; unauthenticated?: boolean | core.BooleanOut; } export class ClientAuthentication extends core.Schema { @core.attr(Sasl) public sasl?: Sasl; @core.attr(Tls) public tls?: Tls; @core.attr(Boolean) public unauthenticated?: boolean | core.BooleanOut; } export interface MskClusterArgs extends core.ResourceArgs { /** * (Required) Configuration block for the broker nodes of the Kafka cluster. */ brokerNodeGroupInfo: BrokerNodeGroupInfo; /** * (Optional) Configuration block for specifying a client authentication. See below. */ clientAuthentication?: ClientAuthentication; /** * (Required) Name of the MSK cluster. */ clusterName: string | core.StringOut; /** * (Optional) Configuration block for specifying a MSK Configuration to attach to Kafka brokers. See be * low. */ configurationInfo?: ConfigurationInfo; /** * (Optional) Configuration block for specifying encryption. See below. */ encryptionInfo?: EncryptionInfo; /** * (Optional) Specify the desired enhanced MSK CloudWatch monitoring level. See [Monitoring Amazon MSK * with Amazon CloudWatch](https://docs.aws.amazon.com/msk/latest/developerguide/monitoring.html) */ enhancedMonitoring?: string | core.StringOut; /** * (Required) Specify the desired Kafka software version. */ kafkaVersion: string | core.StringOut; /** * (Optional) Configuration block for streaming broker logs to Cloudwatch/S3/Kinesis Firehose. See belo * w. */ loggingInfo?: LoggingInfo; /** * (Required) The desired total number of broker nodes in the kafka cluster. It must be a multiple of * the number of specified client subnets. */ numberOfBrokerNodes: number | core.NumberOut; /** * (Optional) Configuration block for JMX and Node monitoring for the MSK cluster. See below. */ openMonitoring?: OpenMonitoring; /** * (Optional) A map of tags to assign to the resource. If configured with a provider [`default_tags` co * nfiguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-co * nfiguration-block) present, tags with matching keys will overwrite those defined at the provider-lev * el. */ tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ tagsAll?: core.Map | core.MapOut; } export class MskCluster extends core.Resource { /** * (Required) Amazon Resource Name (ARN) of the MSK Configuration to use in the cluster. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * Comma separated list of one or more hostname:port pairs of kafka brokers suitable to bootstrap conne * ctivity to the kafka cluster. Contains a value if `encryption_info.0.encryption_in_transit.0.client_ * broker` is set to `PLAINTEXT` or `TLS_PLAINTEXT`. The resource sorts values alphabetically. AWS may * not always return all endpoints so this value is not guaranteed to be stable across applies. */ @core.attr(String, { computed: true }) public bootstrapBrokers!: string | core.StringOut; /** * One or more DNS names (or IP addresses) and SASL IAM port pairs. For example, `b-1-public.exampleClu * sterName.abcde.c2.kafka.us-east-1.amazonaws.com:9198,b-2-public.exampleClusterName.abcde.c2.kafka.us * east-1.amazonaws.com:9198,b-3-public.exampleClusterName.abcde.c2.kafka.us-east-1.amazonaws.com:9198 * . This attribute will have a value if `encryption_info.0.encryption_in_transit.0.client_broker` is * set to `TLS_PLAINTEXT` or `TLS` and `client_authentication.0.sasl.0.iam` is set to `true` and `broke * r_node_group_info.0.connectivity_info.0.public_access.0.type` is set to `SERVICE_PROVIDED_EIPS` and * the cluster fulfill all other requirements for public access. The resource sorts the list alphabetic * ally. AWS may not always return all endpoints so the values may not be stable across applies. */ @core.attr(String, { computed: true }) public bootstrapBrokersPublicSaslIam!: string | core.StringOut; /** * One or more DNS names (or IP addresses) and SASL SCRAM port pairs. For example, `b-1-public.exampleC * lusterName.abcde.c2.kafka.us-east-1.amazonaws.com:9196,b-2-public.exampleClusterName.abcde.c2.kafka. * us-east-1.amazonaws.com:9196,b-3-public.exampleClusterName.abcde.c2.kafka.us-east-1.amazonaws.com:91 * 96`. This attribute will have a value if `encryption_info.0.encryption_in_transit.0.client_broker` i * s set to `TLS_PLAINTEXT` or `TLS` and `client_authentication.0.sasl.0.scram` is set to `true` and `b * roker_node_group_info.0.connectivity_info.0.public_access.0.type` is set to `SERVICE_PROVIDED_EIPS` * and the cluster fulfill all other requirements for public access. The resource sorts the list alphab * etically. AWS may not always return all endpoints so the values may not be stable across applies. */ @core.attr(String, { computed: true }) public bootstrapBrokersPublicSaslScram!: string | core.StringOut; /** * One or more DNS names (or IP addresses) and TLS port pairs. For example, `b-1-public.exampleClusterN * ame.abcde.c2.kafka.us-east-1.amazonaws.com:9194,b-2-public.exampleClusterName.abcde.c2.kafka.us-east * 1.amazonaws.com:9194,b-3-public.exampleClusterName.abcde.c2.kafka.us-east-1.amazonaws.com:9194`. Th * is attribute will have a value if `encryption_info.0.encryption_in_transit.0.client_broker` is set t * o `TLS_PLAINTEXT` or `TLS` and `broker_node_group_info.0.connectivity_info.0.public_access.0.type` i * s set to `SERVICE_PROVIDED_EIPS` and the cluster fulfill all other requirements for public access. T * he resource sorts the list alphabetically. AWS may not always return all endpoints so the values may * not be stable across applies. */ @core.attr(String, { computed: true }) public bootstrapBrokersPublicTls!: string | core.StringOut; /** * One or more DNS names (or IP addresses) and SASL IAM port pairs. For example, `b-1.exampleClusterNam * e.abcde.c2.kafka.us-east-1.amazonaws.com:9098,b-2.exampleClusterName.abcde.c2.kafka.us-east-1.amazon * aws.com:9098,b-3.exampleClusterName.abcde.c2.kafka.us-east-1.amazonaws.com:9098`. This attribute wil * l have a value if `encryption_info.0.encryption_in_transit.0.client_broker` is set to `TLS_PLAINTEXT * or `TLS` and `client_authentication.0.sasl.0.iam` is set to `true`. The resource sorts the list al * phabetically. AWS may not always return all endpoints so the values may not be stable across applies * . */ @core.attr(String, { computed: true }) public bootstrapBrokersSaslIam!: string | core.StringOut; /** * One or more DNS names (or IP addresses) and SASL SCRAM port pairs. For example, `b-1.exampleClusterN * ame.abcde.c2.kafka.us-east-1.amazonaws.com:9096,b-2.exampleClusterName.abcde.c2.kafka.us-east-1.amaz * onaws.com:9096,b-3.exampleClusterName.abcde.c2.kafka.us-east-1.amazonaws.com:9096`. This attribute w * ill have a value if `encryption_info.0.encryption_in_transit.0.client_broker` is set to `TLS_PLAINTE * XT` or `TLS` and `client_authentication.0.sasl.0.scram` is set to `true`. The resource sorts the lis * t alphabetically. AWS may not always return all endpoints so the values may not be stable across app * lies. */ @core.attr(String, { computed: true }) public bootstrapBrokersSaslScram!: string | core.StringOut; /** * One or more DNS names (or IP addresses) and TLS port pairs. For example, `b-1.exampleClusterName.abc * de.c2.kafka.us-east-1.amazonaws.com:9094,b-2.exampleClusterName.abcde.c2.kafka.us-east-1.amazonaws.c * om:9094,b-3.exampleClusterName.abcde.c2.kafka.us-east-1.amazonaws.com:9094`. This attribute will hav * e a value if `encryption_info.0.encryption_in_transit.0.client_broker` is set to `TLS_PLAINTEXT` or * TLS`. The resource sorts the list alphabetically. AWS may not always return all endpoints so the va * lues may not be stable across applies. */ @core.attr(String, { computed: true }) public bootstrapBrokersTls!: string | core.StringOut; /** * (Required) Configuration block for the broker nodes of the Kafka cluster. */ @core.attr(BrokerNodeGroupInfo) public brokerNodeGroupInfo!: BrokerNodeGroupInfo; /** * (Optional) Configuration block for specifying a client authentication. See below. */ @core.attr(ClientAuthentication) public clientAuthentication?: ClientAuthentication; /** * (Required) Name of the MSK cluster. */ @core.attr(String) public clusterName!: string | core.StringOut; /** * (Optional) Configuration block for specifying a MSK Configuration to attach to Kafka brokers. See be * low. */ @core.attr(ConfigurationInfo) public configurationInfo?: ConfigurationInfo; /** * Current version of the MSK Cluster used for updates, e.g., `K13V1IB3VIYZZH` */ @core.attr(String, { computed: true }) public currentVersion!: string | core.StringOut; /** * (Optional) Configuration block for specifying encryption. See below. */ @core.attr(EncryptionInfo) public encryptionInfo?: EncryptionInfo; /** * (Optional) Specify the desired enhanced MSK CloudWatch monitoring level. See [Monitoring Amazon MSK * with Amazon CloudWatch](https://docs.aws.amazon.com/msk/latest/developerguide/monitoring.html) */ @core.attr(String) public enhancedMonitoring?: string | core.StringOut; @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Required) Specify the desired Kafka software version. */ @core.attr(String) public kafkaVersion!: string | core.StringOut; /** * (Optional) Configuration block for streaming broker logs to Cloudwatch/S3/Kinesis Firehose. See belo * w. */ @core.attr(LoggingInfo) public loggingInfo?: LoggingInfo; /** * (Required) The desired total number of broker nodes in the kafka cluster. It must be a multiple of * the number of specified client subnets. */ @core.attr(Number) public numberOfBrokerNodes!: number | core.NumberOut; /** * (Optional) Configuration block for JMX and Node monitoring for the MSK cluster. See below. */ @core.attr(OpenMonitoring) public openMonitoring?: OpenMonitoring; /** * (Optional) A map of tags to assign to the resource. If configured with a provider [`default_tags` co * nfiguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-co * nfiguration-block) present, tags with matching keys will overwrite those defined at the provider-lev * el. */ @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ @core.attr(String, { computed: true, kind: "map" }) public tagsAll?: core.Map | core.MapOut; /** * A comma separated list of one or more hostname:port pairs to use to connect to the Apache Zookeeper * cluster. The returned values are sorted alphabetically. The AWS API may not return all endpoints, so * this value is not guaranteed to be stable across applies. */ @core.attr(String, { computed: true }) public zookeeperConnectString!: string | core.StringOut; /** * A comma separated list of one or more hostname:port pairs to use to connect to the Apache Zookeeper * cluster via TLS. The returned values are sorted alphabetically. The AWS API may not return all endpo * ints, so this value is not guaranteed to be stable across applies. */ @core.attr(String, { computed: true }) public zookeeperConnectStringTls!: string | core.StringOut; constructor(name: string, args?: MskClusterArgs) { super(name, "aws_msk_cluster", args); } public override getNamespace(): string { return "aws_managed_streaming_for_kafka"; } }