import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * Manages an Amazon Managed Streaming for Apache Kafka (MSK) Channel. * * With [Amazon MSK Data Delivery](https://docs.aws.amazon.com/msk/latest/developerguide/msk-data-delivery.html), a channel delivers Apache Kafka data from an Amazon MSK Provisioned cluster that uses Express brokers directly to Amazon S3, without connectors or additional infrastructure to manage. A channel reads records from a Kafka topic and delivers them to one of two destinations: * * * **Amazon S3 general purpose buckets** — records are written in their source format (`JSON`, `ByteArray`, or `String`) as objects, for use cases such as log archival, compliance retention, and Kafka replay. * * **Apache Iceberg tables on Amazon S3 Tables** — `JSON` records, validated against an AWS Glue Schema Registry schema, are materialized as Apache Iceberg tables. * * Records that cannot be processed are routed to a required dead-letter queue (DLQ) Amazon S3 bucket. Channels are supported only on Amazon MSK Provisioned clusters that use Express brokers; Standard brokers and Amazon MSK Serverless are not supported. * * > **Note:** A channel does not backfill previously produced data; only data produced after creation is delivered. For the Iceberg destination, a channel creates a new Iceberg table for each configuration. * * ## Example Usage * * ### Amazon S3 Destination * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const example = new aws.msk.Channel("example", { * topicConfiguration: { * recordConverter: { * valueConverter: "BYTE_ARRAY", * }, * topicArn: exampleAwsMskTopic.arn, * }, * s3Destination: { * deadLetterQueueS3: { * bucketArn: dlq.arn, * }, * storage: { * bucketArn: exampleAwsS3Bucket.arn, * compressionType: "NONE", * storageClass: "STANDARD", * }, * serviceExecutionRoleArn: exampleAwsIamRole.arn, * }, * channelName: "example", * clusterArn: exampleAwsMskCluster.arn, * }); * ``` * * ### Apache Iceberg Destination * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const example = new aws.msk.Channel("example", { * topicConfiguration: { * recordConverter: { * valueConverter: "JSON", * }, * recordSchema: { * gsrArn: exampleAwsGlueSchema.arn, * }, * topicArn: exampleAwsMskTopic.arn, * }, * icebergDestination: { * catalog: { * warehouseLocation: exampleAwsS3tablesTableBucket.arn, * }, * deadLetterQueueS3: { * bucketArn: dlq.arn, * }, * destinationTable: { * partitionSpec: { * sources: [{ * sourceName: "event_time", * }], * partitionStrategy: "TIME_HOUR", * }, * destinationDatabaseName: "example_namespace", * destinationTableName: "example_table", * }, * schemaEvolution: { * enableSchemaEvolution: false, * }, * tableCreation: { * enableTableCreation: true, * }, * appendOnly: true, * serviceExecutionRoleArn: exampleAwsIamRole.arn, * }, * channelName: "example", * clusterArn: exampleAwsMskCluster.arn, * }); * ``` * * ## Import * * ### Identity Schema * * #### Required * * * `arn` (String) ARN of the channel. * * `clusterArn` (String) ARN that uniquely identifies the cluster. * * #### Optional * * * `accountId` (String) AWS Account where this resource is managed. * * `region` (String) Region where this resource is managed. * * Using `pulumi import`, import Managed Streaming for Kafka Channel using the `arn` and `clusterArn`. For example: * * ```sh * $ pulumi import aws:msk/channel:Channel example arn:aws:kafka:us-west-2:123456789012:channel/example/279c0212-d057-4dba-9aa9-1c4e5a25bfc7-3/a1b2c3d4,arn:aws:kafka:us-west-2:123456789012:cluster/example/279c0212-d057-4dba-9aa9-1c4e5a25bfc7-3 * ``` */ export declare class Channel extends pulumi.CustomResource { /** * Get an existing Channel resource's state with the given name, ID, and optional extra * properties used to qualify the lookup. * * @param name The _unique_ name of the resulting resource. * @param id The _unique_ provider ID of the resource to lookup. * @param state Any extra arguments used during the lookup. * @param opts Optional settings to control the behavior of the CustomResource. */ static get(name: string, id: pulumi.Input, state?: ChannelState, opts?: pulumi.CustomResourceOptions): Channel; /** * Returns true if the given object is an instance of Channel. This is designed to work even * when multiple copies of the Pulumi SDK have been loaded into the same process. */ static isInstance(obj: any): obj is Channel; /** * ARN of the channel. */ readonly arn: pulumi.Output; /** * Name of the channel. Must be unique within the cluster. Changing this forces a new resource to be created. */ readonly channelName: pulumi.Output; /** * ARN that uniquely identifies the cluster. Changing this forces a new resource to be created. */ readonly clusterArn: pulumi.Output; /** * Type of destination configured for the channel. */ readonly destinationType: pulumi.Output; /** * AWS KMS encryption configuration applied to data at rest. Changing this forces a new resource to be created. See `encryptionConfiguration` Block below. */ readonly encryptionConfiguration: pulumi.Output; /** * Apache Iceberg destination for the channel. Exactly one of `icebergDestination` or `s3Destination` is required. With the exception of `dataFreshnessInSeconds`, changing an argument in this block forces a new resource to be created. See `icebergDestination` Block below. */ readonly icebergDestination: pulumi.Output; /** * Destinations to which the channel publishes operational logs. Changing this forces a new resource to be created. See `loggingInfo` Block below. */ readonly loggingInfo: pulumi.Output; /** * Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. */ readonly region: pulumi.Output; /** * Amazon S3 destination for the channel. Exactly one of `icebergDestination` or `s3Destination` is required. With the exception of `dataFreshnessInSeconds`, changing an argument in this block forces a new resource to be created. See `s3Destination` Block below. */ readonly s3Destination: pulumi.Output; /** * Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. */ readonly tags: pulumi.Output<{ [key: string]: string; } | undefined>; /** * Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. */ readonly tagsAll: pulumi.Output<{ [key: string]: string; }>; readonly timeouts: pulumi.Output; /** * Configuration of the Apache Kafka topic that feeds the channel. Changing this forces a new resource to be created. See `topicConfiguration` Block below. * * The following arguments are optional: */ readonly topicConfiguration: pulumi.Output; /** * Create a Channel resource with the given unique name, arguments, and options. * * @param name The _unique_ name of the resource. * @param args The arguments to use to populate this resource's properties. * @param opts A bag of options that control this resource's behavior. */ constructor(name: string, args: ChannelArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering Channel resources. */ export interface ChannelState { /** * ARN of the channel. */ arn?: pulumi.Input; /** * Name of the channel. Must be unique within the cluster. Changing this forces a new resource to be created. */ channelName?: pulumi.Input; /** * ARN that uniquely identifies the cluster. Changing this forces a new resource to be created. */ clusterArn?: pulumi.Input; /** * Type of destination configured for the channel. */ destinationType?: pulumi.Input; /** * AWS KMS encryption configuration applied to data at rest. Changing this forces a new resource to be created. See `encryptionConfiguration` Block below. */ encryptionConfiguration?: pulumi.Input; /** * Apache Iceberg destination for the channel. Exactly one of `icebergDestination` or `s3Destination` is required. With the exception of `dataFreshnessInSeconds`, changing an argument in this block forces a new resource to be created. See `icebergDestination` Block below. */ icebergDestination?: pulumi.Input; /** * Destinations to which the channel publishes operational logs. Changing this forces a new resource to be created. See `loggingInfo` Block below. */ loggingInfo?: pulumi.Input; /** * Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. */ region?: pulumi.Input; /** * Amazon S3 destination for the channel. Exactly one of `icebergDestination` or `s3Destination` is required. With the exception of `dataFreshnessInSeconds`, changing an argument in this block forces a new resource to be created. See `s3Destination` Block below. */ s3Destination?: pulumi.Input; /** * Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input; } | undefined>; /** * Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. */ tagsAll?: pulumi.Input<{ [key: string]: pulumi.Input; } | undefined>; timeouts?: pulumi.Input; /** * Configuration of the Apache Kafka topic that feeds the channel. Changing this forces a new resource to be created. See `topicConfiguration` Block below. * * The following arguments are optional: */ topicConfiguration?: pulumi.Input; } /** * The set of arguments for constructing a Channel resource. */ export interface ChannelArgs { /** * Name of the channel. Must be unique within the cluster. Changing this forces a new resource to be created. */ channelName: pulumi.Input; /** * ARN that uniquely identifies the cluster. Changing this forces a new resource to be created. */ clusterArn: pulumi.Input; /** * AWS KMS encryption configuration applied to data at rest. Changing this forces a new resource to be created. See `encryptionConfiguration` Block below. */ encryptionConfiguration?: pulumi.Input; /** * Apache Iceberg destination for the channel. Exactly one of `icebergDestination` or `s3Destination` is required. With the exception of `dataFreshnessInSeconds`, changing an argument in this block forces a new resource to be created. See `icebergDestination` Block below. */ icebergDestination?: pulumi.Input; /** * Destinations to which the channel publishes operational logs. Changing this forces a new resource to be created. See `loggingInfo` Block below. */ loggingInfo?: pulumi.Input; /** * Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration. */ region?: pulumi.Input; /** * Amazon S3 destination for the channel. Exactly one of `icebergDestination` or `s3Destination` is required. With the exception of `dataFreshnessInSeconds`, changing an argument in this block forces a new resource to be created. See `s3Destination` Block below. */ s3Destination?: pulumi.Input; /** * Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input; } | undefined>; timeouts?: pulumi.Input; /** * Configuration of the Apache Kafka topic that feeds the channel. Changing this forces a new resource to be created. See `topicConfiguration` Block below. * * The following arguments are optional: */ topicConfiguration: pulumi.Input; } //# sourceMappingURL=channel.d.ts.map