UNPKG

@pulumi/aws

Version:

A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources.

927 lines (926 loc) • 38.6 kB
import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * Provides a Kinesis Firehose Delivery Stream resource. Amazon Kinesis Firehose is a fully managed, elastic service to easily deliver real-time data streams to destinations such as Amazon S3 , Amazon Redshift and Snowflake. * * For more details, see the [Amazon Kinesis Firehose Documentation](https://aws.amazon.com/documentation/firehose/). * * ## Example Usage * * ### Extended S3 Destination * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const bucket = new aws.s3.Bucket("bucket", {bucket: "tf-test-bucket"}); * const firehoseAssumeRole = aws.iam.getPolicyDocument({ * statements: [{ * effect: "Allow", * principals: [{ * type: "Service", * identifiers: ["firehose.amazonaws.com"], * }], * actions: ["sts:AssumeRole"], * }], * }); * const firehoseRole = new aws.iam.Role("firehose_role", { * name: "firehose_test_role", * assumeRolePolicy: firehoseAssumeRole.then(firehoseAssumeRole => firehoseAssumeRole.json), * }); * const lambdaAssumeRole = aws.iam.getPolicyDocument({ * statements: [{ * effect: "Allow", * principals: [{ * type: "Service", * identifiers: ["lambda.amazonaws.com"], * }], * actions: ["sts:AssumeRole"], * }], * }); * const lambdaIam = new aws.iam.Role("lambda_iam", { * name: "lambda_iam", * assumeRolePolicy: lambdaAssumeRole.then(lambdaAssumeRole => lambdaAssumeRole.json), * }); * const lambdaProcessor = new aws.lambda.Function("lambda_processor", { * code: new pulumi.asset.FileArchive("lambda.zip"), * name: "firehose_lambda_processor", * role: lambdaIam.arn, * handler: "exports.handler", * runtime: aws.lambda.Runtime.NodeJS20dX, * }); * const extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream("extended_s3_stream", { * name: "kinesis-firehose-extended-s3-test-stream", * destination: "extended_s3", * extendedS3Configuration: { * roleArn: firehoseRole.arn, * bucketArn: bucket.arn, * processingConfiguration: { * enabled: true, * processors: [{ * type: "Lambda", * parameters: [{ * parameterName: "LambdaArn", * parameterValue: pulumi.interpolate`${lambdaProcessor.arn}:$LATEST`, * }], * }], * }, * }, * }); * const bucketAcl = new aws.s3.BucketAcl("bucket_acl", { * bucket: bucket.id, * acl: "private", * }); * ``` * * ### Extended S3 Destination with dynamic partitioning * * These examples use built-in Firehose functionality, rather than requiring a lambda. * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream("extended_s3_stream", { * name: "kinesis-firehose-extended-s3-test-stream", * destination: "extended_s3", * extendedS3Configuration: { * roleArn: firehoseRole.arn, * bucketArn: bucket.arn, * bufferingSize: 64, * dynamicPartitioningConfiguration: { * enabled: true, * }, * prefix: "data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/", * errorOutputPrefix: "errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/", * processingConfiguration: { * enabled: true, * processors: [ * { * type: "RecordDeAggregation", * parameters: [{ * parameterName: "SubRecordType", * parameterValue: "JSON", * }], * }, * { * type: "AppendDelimiterToRecord", * }, * { * type: "MetadataExtraction", * parameters: [ * { * parameterName: "JsonParsingEngine", * parameterValue: "JQ-1.6", * }, * { * parameterName: "MetadataExtractionQuery", * parameterValue: "{customer_id:.customer_id}", * }, * ], * }, * ], * }, * }, * }); * ``` * * Multiple Dynamic Partitioning Keys (maximum of 50) can be added by comma separating the `parameterValue`. * * The following example adds the Dynamic Partitioning Keys: `storeId` and `customerId` to the S3 prefix. * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const extendedS3Stream = new aws.kinesis.FirehoseDeliveryStream("extended_s3_stream", { * name: "kinesis-firehose-extended-s3-test-stream", * destination: "extended_s3", * extendedS3Configuration: { * roleArn: firehoseRole.arn, * bucketArn: bucket.arn, * bufferingSize: 64, * dynamicPartitioningConfiguration: { * enabled: true, * }, * prefix: "data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/", * errorOutputPrefix: "errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/", * processingConfiguration: { * enabled: true, * processors: [{ * type: "MetadataExtraction", * parameters: [ * { * parameterName: "JsonParsingEngine", * parameterValue: "JQ-1.6", * }, * { * parameterName: "MetadataExtractionQuery", * parameterValue: "{store_id:.store_id,customer_id:.customer_id}", * }, * ], * }], * }, * }, * }); * ``` * * ### Redshift Destination * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const testCluster = new aws.redshift.Cluster("test_cluster", { * clusterIdentifier: "tf-redshift-cluster", * databaseName: "test", * masterUsername: "testuser", * masterPassword: "T3stPass", * nodeType: "dc1.large", * clusterType: "single-node", * }); * const testStream = new aws.kinesis.FirehoseDeliveryStream("test_stream", { * name: "kinesis-firehose-test-stream", * destination: "redshift", * redshiftConfiguration: { * roleArn: firehoseRole.arn, * clusterJdbcurl: pulumi.interpolate`jdbc:redshift://${testCluster.endpoint}/${testCluster.databaseName}`, * username: "testuser", * password: "T3stPass", * dataTableName: "test-table", * copyOptions: "delimiter '|'", * dataTableColumns: "test-col", * s3BackupMode: "Enabled", * s3Configuration: { * roleArn: firehoseRole.arn, * bucketArn: bucket.arn, * bufferingSize: 10, * bufferingInterval: 400, * compressionFormat: "GZIP", * }, * s3BackupConfiguration: { * roleArn: firehoseRole.arn, * bucketArn: bucket.arn, * bufferingSize: 15, * bufferingInterval: 300, * compressionFormat: "GZIP", * }, * }, * }); * ``` * * ### Elasticsearch Destination * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const testCluster = new aws.elasticsearch.Domain("test_cluster", {domainName: "firehose-es-test"}); * const testStream = new aws.kinesis.FirehoseDeliveryStream("test_stream", { * name: "kinesis-firehose-test-stream", * destination: "elasticsearch", * elasticsearchConfiguration: { * domainArn: testCluster.arn, * roleArn: firehoseRole.arn, * indexName: "test", * typeName: "test", * s3Configuration: { * roleArn: firehoseRole.arn, * bucketArn: bucket.arn, * bufferingSize: 10, * bufferingInterval: 400, * compressionFormat: "GZIP", * }, * processingConfiguration: { * enabled: true, * processors: [{ * type: "Lambda", * parameters: [{ * parameterName: "LambdaArn", * parameterValue: `${lambdaProcessor.arn}:$LATEST`, * }], * }], * }, * }, * }); * ``` * * ### Elasticsearch Destination With VPC * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const testCluster = new aws.elasticsearch.Domain("test_cluster", { * domainName: "es-test", * clusterConfig: { * instanceCount: 2, * zoneAwarenessEnabled: true, * instanceType: "t2.small.elasticsearch", * }, * ebsOptions: { * ebsEnabled: true, * volumeSize: 10, * }, * vpcOptions: { * securityGroupIds: [first.id], * subnetIds: [ * firstAwsSubnet.id, * second.id, * ], * }, * }); * const firehose_elasticsearch = aws.iam.getPolicyDocumentOutput({ * statements: [ * { * effect: "Allow", * actions: ["es:*"], * resources: [ * testCluster.arn, * pulumi.interpolate`${testCluster.arn}/*`, * ], * }, * { * effect: "Allow", * actions: [ * "ec2:DescribeVpcs", * "ec2:DescribeVpcAttribute", * "ec2:DescribeSubnets", * "ec2:DescribeSecurityGroups", * "ec2:DescribeNetworkInterfaces", * "ec2:CreateNetworkInterface", * "ec2:CreateNetworkInterfacePermission", * "ec2:DeleteNetworkInterface", * ], * resources: ["*"], * }, * ], * }); * const firehose_elasticsearchRolePolicy = new aws.iam.RolePolicy("firehose-elasticsearch", { * name: "elasticsearch", * role: firehose.id, * policy: firehose_elasticsearch.apply(firehose_elasticsearch => firehose_elasticsearch.json), * }); * const test = new aws.kinesis.FirehoseDeliveryStream("test", { * name: "kinesis-firehose-es", * destination: "elasticsearch", * elasticsearchConfiguration: { * domainArn: testCluster.arn, * roleArn: firehose.arn, * indexName: "test", * typeName: "test", * s3Configuration: { * roleArn: firehose.arn, * bucketArn: bucket.arn, * }, * vpcConfig: { * subnetIds: [ * firstAwsSubnet.id, * second.id, * ], * securityGroupIds: [first.id], * roleArn: firehose.arn, * }, * }, * }, { * dependsOn: [firehose_elasticsearchRolePolicy], * }); * ``` * * ### OpenSearch Destination * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const testCluster = new aws.opensearch.Domain("test_cluster", {domainName: "firehose-os-test"}); * const testStream = new aws.kinesis.FirehoseDeliveryStream("test_stream", { * name: "kinesis-firehose-test-stream", * destination: "opensearch", * opensearchConfiguration: { * domainArn: testCluster.arn, * roleArn: firehoseRole.arn, * indexName: "test", * s3Configuration: { * roleArn: firehoseRole.arn, * bucketArn: bucket.arn, * bufferingSize: 10, * bufferingInterval: 400, * compressionFormat: "GZIP", * }, * processingConfiguration: { * enabled: true, * processors: [{ * type: "Lambda", * parameters: [{ * parameterName: "LambdaArn", * parameterValue: `${lambdaProcessor.arn}:$LATEST`, * }], * }], * }, * }, * }); * ``` * * ### OpenSearch Destination With VPC * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const testCluster = new aws.opensearch.Domain("test_cluster", { * domainName: "es-test", * clusterConfig: { * instanceCount: 2, * zoneAwarenessEnabled: true, * instanceType: "m4.large.search", * }, * ebsOptions: { * ebsEnabled: true, * volumeSize: 10, * }, * vpcOptions: { * securityGroupIds: [first.id], * subnetIds: [ * firstAwsSubnet.id, * second.id, * ], * }, * }); * const firehose_opensearch = new aws.iam.RolePolicy("firehose-opensearch", { * name: "opensearch", * role: firehose.id, * policy: pulumi.interpolate`{ * \"Version\": \"2012-10-17\", * \"Statement\": [ * { * \"Effect\": \"Allow\", * \"Action\": [ * \"es:*\" * ], * \"Resource\": [ * \"${testCluster.arn}\", * \"${testCluster.arn}/*\" * ] * }, * { * \"Effect\": \"Allow\", * \"Action\": [ * \"ec2:DescribeVpcs\", * \"ec2:DescribeVpcAttribute\", * \"ec2:DescribeSubnets\", * \"ec2:DescribeSecurityGroups\", * \"ec2:DescribeNetworkInterfaces\", * \"ec2:CreateNetworkInterface\", * \"ec2:CreateNetworkInterfacePermission\", * \"ec2:DeleteNetworkInterface\" * ], * \"Resource\": [ * \"*\" * ] * } * ] * } * `, * }); * const test = new aws.kinesis.FirehoseDeliveryStream("test", { * name: "pulumi-kinesis-firehose-os", * destination: "opensearch", * opensearchConfiguration: { * domainArn: testCluster.arn, * roleArn: firehose.arn, * indexName: "test", * s3Configuration: { * roleArn: firehose.arn, * bucketArn: bucket.arn, * }, * vpcConfig: { * subnetIds: [ * firstAwsSubnet.id, * second.id, * ], * securityGroupIds: [first.id], * roleArn: firehose.arn, * }, * }, * }, { * dependsOn: [firehose_opensearch], * }); * ``` * * ### OpenSearch Serverless Destination * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const testCollection = new aws.opensearch.ServerlessCollection("test_collection", {name: "firehose-osserverless-test"}); * const testStream = new aws.kinesis.FirehoseDeliveryStream("test_stream", { * name: "kinesis-firehose-test-stream", * destination: "opensearchserverless", * opensearchserverlessConfiguration: { * collectionEndpoint: testCollection.collectionEndpoint, * roleArn: firehoseRole.arn, * indexName: "test", * s3Configuration: { * roleArn: firehoseRole.arn, * bucketArn: bucket.arn, * bufferingSize: 10, * bufferingInterval: 400, * compressionFormat: "GZIP", * }, * processingConfiguration: { * enabled: true, * processors: [{ * type: "Lambda", * parameters: [{ * parameterName: "LambdaArn", * parameterValue: `${lambdaProcessor.arn}:$LATEST`, * }], * }], * }, * }, * }); * ``` * * ### Iceberg Destination * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const current = aws.getCallerIdentity({}); * const currentGetPartition = aws.getPartition({}); * const currentGetRegion = aws.getRegion({}); * const bucket = new aws.s3.Bucket("bucket", { * bucket: "test-bucket", * forceDestroy: true, * }); * const test = new aws.glue.CatalogDatabase("test", {name: "test"}); * const testCatalogTable = new aws.glue.CatalogTable("test", { * name: "test", * databaseName: test.name, * parameters: { * format: "parquet", * }, * tableType: "EXTERNAL_TABLE", * openTableFormatInput: { * icebergInput: { * metadataOperation: "CREATE", * version: "2", * }, * }, * storageDescriptor: { * location: pulumi.interpolate`s3://${bucket.id}`, * columns: [{ * name: "my_column_1", * type: "int", * }], * }, * }); * const testStream = new aws.kinesis.FirehoseDeliveryStream("test_stream", { * name: "kinesis-firehose-test-stream", * destination: "iceberg", * icebergConfiguration: { * roleArn: firehoseRole.arn, * catalogArn: Promise.all([currentGetPartition, currentGetRegion, current]).then(([currentGetPartition, currentGetRegion, current]) => `arn:${currentGetPartition.partition}:glue:${currentGetRegion.region}:${current.accountId}:catalog`), * bufferingSize: 10, * bufferingInterval: 400, * s3Configuration: { * roleArn: firehoseRole.arn, * bucketArn: bucket.arn, * }, * destinationTableConfigurations: [{ * databaseName: test.name, * tableName: testCatalogTable.name, * }], * processingConfiguration: { * enabled: true, * processors: [{ * type: "Lambda", * parameters: [{ * parameterName: "LambdaArn", * parameterValue: `${lambdaProcessor.arn}:$LATEST`, * }], * }], * }, * }, * }); * ``` * * ### Splunk Destination * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const testStream = new aws.kinesis.FirehoseDeliveryStream("test_stream", { * name: "kinesis-firehose-test-stream", * destination: "splunk", * splunkConfiguration: { * hecEndpoint: "https://http-inputs-mydomain.splunkcloud.com:443", * hecToken: "51D4DA16-C61B-4F5F-8EC7-ED4301342A4A", * hecAcknowledgmentTimeout: 600, * hecEndpointType: "Event", * s3BackupMode: "FailedEventsOnly", * s3Configuration: { * roleArn: firehose.arn, * bucketArn: bucket.arn, * bufferingSize: 10, * bufferingInterval: 400, * compressionFormat: "GZIP", * }, * }, * }); * ``` * * ### HTTP Endpoint (e.g., New Relic) Destination * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const testStream = new aws.kinesis.FirehoseDeliveryStream("test_stream", { * name: "kinesis-firehose-test-stream", * destination: "http_endpoint", * httpEndpointConfiguration: { * url: "https://aws-api.newrelic.com/firehose/v1", * name: "New Relic", * accessKey: "my-key", * bufferingSize: 15, * bufferingInterval: 600, * roleArn: firehose.arn, * s3BackupMode: "FailedDataOnly", * s3Configuration: { * roleArn: firehose.arn, * bucketArn: bucket.arn, * bufferingSize: 10, * bufferingInterval: 400, * compressionFormat: "GZIP", * }, * requestConfiguration: { * contentEncoding: "GZIP", * commonAttributes: [ * { * name: "testname", * value: "testvalue", * }, * { * name: "testname2", * value: "testvalue2", * }, * ], * }, * }, * }); * ``` * * ### Snowflake Destination * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const exampleSnowflakeDestination = new aws.kinesis.FirehoseDeliveryStream("example_snowflake_destination", { * name: "example-snowflake-destination", * destination: "snowflake", * snowflakeConfiguration: { * accountUrl: "https://example.snowflakecomputing.com", * bufferingSize: 15, * bufferingInterval: 600, * database: "example-db", * privateKey: "...", * roleArn: firehose.arn, * schema: "example-schema", * table: "example-table", * user: "example-usr", * s3Configuration: { * roleArn: firehose.arn, * bucketArn: bucket.arn, * bufferingSize: 10, * bufferingInterval: 400, * compressionFormat: "GZIP", * }, * }, * }); * ``` * * ## Import * * Using `pulumi import`, import Kinesis Firehose Delivery streams using the stream ARN. For example: * * ```sh * $ pulumi import aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream foo arn:aws:firehose:us-east-1:XXX:deliverystream/example * ``` * Note: Import does not work for stream destination `s3`. Consider using `extended_s3` since `s3` destination is deprecated. */ export declare class FirehoseDeliveryStream extends pulumi.CustomResource { /** * Get an existing FirehoseDeliveryStream 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<pulumi.ID>, state?: FirehoseDeliveryStreamState, opts?: pulumi.CustomResourceOptions): FirehoseDeliveryStream; /** * Returns true if the given object is an instance of FirehoseDeliveryStream. 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 FirehoseDeliveryStream; /** * The Amazon Resource Name (ARN) specifying the Stream */ readonly arn: pulumi.Output<string>; /** * This is the destination to where the data is delivered. The only options are `s3` (Deprecated, use `extendedS3` instead), `extendedS3`, `redshift`, `elasticsearch`, `splunk`, `httpEndpoint`, `opensearch`, `opensearchserverless` and `snowflake`. */ readonly destination: pulumi.Output<string>; readonly destinationId: pulumi.Output<string>; /** * Configuration options when `destination` is `elasticsearch`. See `elasticsearchConfiguration` block below for details. */ readonly elasticsearchConfiguration: pulumi.Output<outputs.kinesis.FirehoseDeliveryStreamElasticsearchConfiguration | undefined>; /** * Enhanced configuration options for the s3 destination. See `extendedS3Configuration` block below for details. */ readonly extendedS3Configuration: pulumi.Output<outputs.kinesis.FirehoseDeliveryStreamExtendedS3Configuration | undefined>; /** * Configuration options when `destination` is `httpEndpoint`. Requires the user to also specify an `s3Configuration` block. See `httpEndpointConfiguration` block below for details. */ readonly httpEndpointConfiguration: pulumi.Output<outputs.kinesis.FirehoseDeliveryStreamHttpEndpointConfiguration | undefined>; /** * Configuration options when `destination` is `iceberg`. See `icebergConfiguration` block below for details. */ readonly icebergConfiguration: pulumi.Output<outputs.kinesis.FirehoseDeliveryStreamIcebergConfiguration | undefined>; /** * The stream and role Amazon Resource Names (ARNs) for a Kinesis data stream used as the source for a delivery stream. See `kinesisSourceConfiguration` block below for details. */ readonly kinesisSourceConfiguration: pulumi.Output<outputs.kinesis.FirehoseDeliveryStreamKinesisSourceConfiguration | undefined>; /** * The configuration for the Amazon MSK cluster to be used as the source for a delivery stream. See `mskSourceConfiguration` block below for details. */ readonly mskSourceConfiguration: pulumi.Output<outputs.kinesis.FirehoseDeliveryStreamMskSourceConfiguration | undefined>; /** * A name to identify the stream. This is unique to the AWS account and region the Stream is created in. When using for WAF logging, name must be prefixed with `aws-waf-logs-`. See [AWS Documentation](https://docs.aws.amazon.com/waf/latest/developerguide/waf-policies.html#waf-policies-logging-config) for more details. */ readonly name: pulumi.Output<string>; /** * Configuration options when `destination` is `opensearch`. See `opensearchConfiguration` block below for details. */ readonly opensearchConfiguration: pulumi.Output<outputs.kinesis.FirehoseDeliveryStreamOpensearchConfiguration | undefined>; /** * Configuration options when `destination` is `opensearchserverless`. See `opensearchserverlessConfiguration` block below for details. */ readonly opensearchserverlessConfiguration: pulumi.Output<outputs.kinesis.FirehoseDeliveryStreamOpensearchserverlessConfiguration | undefined>; /** * Configuration options when `destination` is `redshift`. Requires the user to also specify an `s3Configuration` block. See `redshiftConfiguration` block below for details. */ readonly redshiftConfiguration: pulumi.Output<outputs.kinesis.FirehoseDeliveryStreamRedshiftConfiguration | undefined>; /** * 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<string>; /** * Encrypt at rest options. See `serverSideEncryption` block below for details. */ readonly serverSideEncryption: pulumi.Output<outputs.kinesis.FirehoseDeliveryStreamServerSideEncryption | undefined>; /** * Configuration options when `destination` is `snowflake`. See `snowflakeConfiguration` block below for details. */ readonly snowflakeConfiguration: pulumi.Output<outputs.kinesis.FirehoseDeliveryStreamSnowflakeConfiguration | undefined>; /** * Configuration options when `destination` is `splunk`. See `splunkConfiguration` block below for details. * * **NOTE:** Server-side encryption should not be enabled when a kinesis stream is configured as the source of the firehose delivery stream. */ readonly splunkConfiguration: pulumi.Output<outputs.kinesis.FirehoseDeliveryStreamSplunkConfiguration | undefined>; /** * A map of tags to assign 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>; /** * A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. */ readonly tagsAll: pulumi.Output<{ [key: string]: string; }>; readonly versionId: pulumi.Output<string>; /** * Create a FirehoseDeliveryStream 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: FirehoseDeliveryStreamArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering FirehoseDeliveryStream resources. */ export interface FirehoseDeliveryStreamState { /** * The Amazon Resource Name (ARN) specifying the Stream */ arn?: pulumi.Input<string>; /** * This is the destination to where the data is delivered. The only options are `s3` (Deprecated, use `extendedS3` instead), `extendedS3`, `redshift`, `elasticsearch`, `splunk`, `httpEndpoint`, `opensearch`, `opensearchserverless` and `snowflake`. */ destination?: pulumi.Input<string>; destinationId?: pulumi.Input<string>; /** * Configuration options when `destination` is `elasticsearch`. See `elasticsearchConfiguration` block below for details. */ elasticsearchConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamElasticsearchConfiguration>; /** * Enhanced configuration options for the s3 destination. See `extendedS3Configuration` block below for details. */ extendedS3Configuration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamExtendedS3Configuration>; /** * Configuration options when `destination` is `httpEndpoint`. Requires the user to also specify an `s3Configuration` block. See `httpEndpointConfiguration` block below for details. */ httpEndpointConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamHttpEndpointConfiguration>; /** * Configuration options when `destination` is `iceberg`. See `icebergConfiguration` block below for details. */ icebergConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamIcebergConfiguration>; /** * The stream and role Amazon Resource Names (ARNs) for a Kinesis data stream used as the source for a delivery stream. See `kinesisSourceConfiguration` block below for details. */ kinesisSourceConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamKinesisSourceConfiguration>; /** * The configuration for the Amazon MSK cluster to be used as the source for a delivery stream. See `mskSourceConfiguration` block below for details. */ mskSourceConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamMskSourceConfiguration>; /** * A name to identify the stream. This is unique to the AWS account and region the Stream is created in. When using for WAF logging, name must be prefixed with `aws-waf-logs-`. See [AWS Documentation](https://docs.aws.amazon.com/waf/latest/developerguide/waf-policies.html#waf-policies-logging-config) for more details. */ name?: pulumi.Input<string>; /** * Configuration options when `destination` is `opensearch`. See `opensearchConfiguration` block below for details. */ opensearchConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamOpensearchConfiguration>; /** * Configuration options when `destination` is `opensearchserverless`. See `opensearchserverlessConfiguration` block below for details. */ opensearchserverlessConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamOpensearchserverlessConfiguration>; /** * Configuration options when `destination` is `redshift`. Requires the user to also specify an `s3Configuration` block. See `redshiftConfiguration` block below for details. */ redshiftConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamRedshiftConfiguration>; /** * 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<string>; /** * Encrypt at rest options. See `serverSideEncryption` block below for details. */ serverSideEncryption?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamServerSideEncryption>; /** * Configuration options when `destination` is `snowflake`. See `snowflakeConfiguration` block below for details. */ snowflakeConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamSnowflakeConfiguration>; /** * Configuration options when `destination` is `splunk`. See `splunkConfiguration` block below for details. * * **NOTE:** Server-side encryption should not be enabled when a kinesis stream is configured as the source of the firehose delivery stream. */ splunkConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamSplunkConfiguration>; /** * A map of tags to assign 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<string>; }>; /** * A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. */ tagsAll?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; versionId?: pulumi.Input<string>; } /** * The set of arguments for constructing a FirehoseDeliveryStream resource. */ export interface FirehoseDeliveryStreamArgs { /** * The Amazon Resource Name (ARN) specifying the Stream */ arn?: pulumi.Input<string>; /** * This is the destination to where the data is delivered. The only options are `s3` (Deprecated, use `extendedS3` instead), `extendedS3`, `redshift`, `elasticsearch`, `splunk`, `httpEndpoint`, `opensearch`, `opensearchserverless` and `snowflake`. */ destination: pulumi.Input<string>; destinationId?: pulumi.Input<string>; /** * Configuration options when `destination` is `elasticsearch`. See `elasticsearchConfiguration` block below for details. */ elasticsearchConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamElasticsearchConfiguration>; /** * Enhanced configuration options for the s3 destination. See `extendedS3Configuration` block below for details. */ extendedS3Configuration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamExtendedS3Configuration>; /** * Configuration options when `destination` is `httpEndpoint`. Requires the user to also specify an `s3Configuration` block. See `httpEndpointConfiguration` block below for details. */ httpEndpointConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamHttpEndpointConfiguration>; /** * Configuration options when `destination` is `iceberg`. See `icebergConfiguration` block below for details. */ icebergConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamIcebergConfiguration>; /** * The stream and role Amazon Resource Names (ARNs) for a Kinesis data stream used as the source for a delivery stream. See `kinesisSourceConfiguration` block below for details. */ kinesisSourceConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamKinesisSourceConfiguration>; /** * The configuration for the Amazon MSK cluster to be used as the source for a delivery stream. See `mskSourceConfiguration` block below for details. */ mskSourceConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamMskSourceConfiguration>; /** * A name to identify the stream. This is unique to the AWS account and region the Stream is created in. When using for WAF logging, name must be prefixed with `aws-waf-logs-`. See [AWS Documentation](https://docs.aws.amazon.com/waf/latest/developerguide/waf-policies.html#waf-policies-logging-config) for more details. */ name?: pulumi.Input<string>; /** * Configuration options when `destination` is `opensearch`. See `opensearchConfiguration` block below for details. */ opensearchConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamOpensearchConfiguration>; /** * Configuration options when `destination` is `opensearchserverless`. See `opensearchserverlessConfiguration` block below for details. */ opensearchserverlessConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamOpensearchserverlessConfiguration>; /** * Configuration options when `destination` is `redshift`. Requires the user to also specify an `s3Configuration` block. See `redshiftConfiguration` block below for details. */ redshiftConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamRedshiftConfiguration>; /** * 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<string>; /** * Encrypt at rest options. See `serverSideEncryption` block below for details. */ serverSideEncryption?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamServerSideEncryption>; /** * Configuration options when `destination` is `snowflake`. See `snowflakeConfiguration` block below for details. */ snowflakeConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamSnowflakeConfiguration>; /** * Configuration options when `destination` is `splunk`. See `splunkConfiguration` block below for details. * * **NOTE:** Server-side encryption should not be enabled when a kinesis stream is configured as the source of the firehose delivery stream. */ splunkConfiguration?: pulumi.Input<inputs.kinesis.FirehoseDeliveryStreamSplunkConfiguration>; /** * A map of tags to assign 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<string>; }>; versionId?: pulumi.Input<string>; }