github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/kinesis/firehoseDeliveryStream.go (about)

     1  // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
     2  // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
     3  
     4  package kinesis
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"errors"
    11  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    12  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    13  )
    14  
    15  // 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 and Amazon Redshift.
    16  //
    17  // For more details, see the [Amazon Kinesis Firehose Documentation](https://aws.amazon.com/documentation/firehose/).
    18  //
    19  // ## Example Usage
    20  //
    21  // ### Extended S3 Destination
    22  //
    23  // <!--Start PulumiCodeChooser -->
    24  // ```go
    25  // package main
    26  //
    27  // import (
    28  //
    29  //	"fmt"
    30  //
    31  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
    32  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis"
    33  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lambda"
    34  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3"
    35  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    36  //
    37  // )
    38  //
    39  //	func main() {
    40  //		pulumi.Run(func(ctx *pulumi.Context) error {
    41  //			bucket, err := s3.NewBucketV2(ctx, "bucket", &s3.BucketV2Args{
    42  //				Bucket: pulumi.String("tf-test-bucket"),
    43  //			})
    44  //			if err != nil {
    45  //				return err
    46  //			}
    47  //			firehoseAssumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
    48  //				Statements: []iam.GetPolicyDocumentStatement{
    49  //					{
    50  //						Effect: pulumi.StringRef("Allow"),
    51  //						Principals: []iam.GetPolicyDocumentStatementPrincipal{
    52  //							{
    53  //								Type: "Service",
    54  //								Identifiers: []string{
    55  //									"firehose.amazonaws.com",
    56  //								},
    57  //							},
    58  //						},
    59  //						Actions: []string{
    60  //							"sts:AssumeRole",
    61  //						},
    62  //					},
    63  //				},
    64  //			}, nil)
    65  //			if err != nil {
    66  //				return err
    67  //			}
    68  //			firehoseRole, err := iam.NewRole(ctx, "firehose_role", &iam.RoleArgs{
    69  //				Name:             pulumi.String("firehose_test_role"),
    70  //				AssumeRolePolicy: pulumi.String(firehoseAssumeRole.Json),
    71  //			})
    72  //			if err != nil {
    73  //				return err
    74  //			}
    75  //			lambdaAssumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
    76  //				Statements: []iam.GetPolicyDocumentStatement{
    77  //					{
    78  //						Effect: pulumi.StringRef("Allow"),
    79  //						Principals: []iam.GetPolicyDocumentStatementPrincipal{
    80  //							{
    81  //								Type: "Service",
    82  //								Identifiers: []string{
    83  //									"lambda.amazonaws.com",
    84  //								},
    85  //							},
    86  //						},
    87  //						Actions: []string{
    88  //							"sts:AssumeRole",
    89  //						},
    90  //					},
    91  //				},
    92  //			}, nil)
    93  //			if err != nil {
    94  //				return err
    95  //			}
    96  //			lambdaIam, err := iam.NewRole(ctx, "lambda_iam", &iam.RoleArgs{
    97  //				Name:             pulumi.String("lambda_iam"),
    98  //				AssumeRolePolicy: pulumi.String(lambdaAssumeRole.Json),
    99  //			})
   100  //			if err != nil {
   101  //				return err
   102  //			}
   103  //			lambdaProcessor, err := lambda.NewFunction(ctx, "lambda_processor", &lambda.FunctionArgs{
   104  //				Code:    pulumi.NewFileArchive("lambda.zip"),
   105  //				Name:    pulumi.String("firehose_lambda_processor"),
   106  //				Role:    lambdaIam.Arn,
   107  //				Handler: pulumi.String("exports.handler"),
   108  //				Runtime: pulumi.String(lambda.RuntimeNodeJS16dX),
   109  //			})
   110  //			if err != nil {
   111  //				return err
   112  //			}
   113  //			_, err = kinesis.NewFirehoseDeliveryStream(ctx, "extended_s3_stream", &kinesis.FirehoseDeliveryStreamArgs{
   114  //				Name:        pulumi.String("kinesis-firehose-extended-s3-test-stream"),
   115  //				Destination: pulumi.String("extended_s3"),
   116  //				ExtendedS3Configuration: &kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{
   117  //					RoleArn:   firehoseRole.Arn,
   118  //					BucketArn: bucket.Arn,
   119  //					ProcessingConfiguration: &kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{
   120  //						Enabled: pulumi.Bool(true),
   121  //						Processors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{
   122  //							&kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{
   123  //								Type: pulumi.String("Lambda"),
   124  //								Parameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{
   125  //									&kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{
   126  //										ParameterName: pulumi.String("LambdaArn"),
   127  //										ParameterValue: lambdaProcessor.Arn.ApplyT(func(arn string) (string, error) {
   128  //											return fmt.Sprintf("%v:$LATEST", arn), nil
   129  //										}).(pulumi.StringOutput),
   130  //									},
   131  //								},
   132  //							},
   133  //						},
   134  //					},
   135  //				},
   136  //			})
   137  //			if err != nil {
   138  //				return err
   139  //			}
   140  //			_, err = s3.NewBucketAclV2(ctx, "bucket_acl", &s3.BucketAclV2Args{
   141  //				Bucket: bucket.ID(),
   142  //				Acl:    pulumi.String("private"),
   143  //			})
   144  //			if err != nil {
   145  //				return err
   146  //			}
   147  //			return nil
   148  //		})
   149  //	}
   150  //
   151  // ```
   152  // <!--End PulumiCodeChooser -->
   153  //
   154  // ### Extended S3 Destination with dynamic partitioning
   155  //
   156  // These examples use built-in Firehose functionality, rather than requiring a lambda.
   157  //
   158  // <!--Start PulumiCodeChooser -->
   159  // ```go
   160  // package main
   161  //
   162  // import (
   163  //
   164  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis"
   165  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   166  //
   167  // )
   168  //
   169  //	func main() {
   170  //		pulumi.Run(func(ctx *pulumi.Context) error {
   171  //			_, err := kinesis.NewFirehoseDeliveryStream(ctx, "extended_s3_stream", &kinesis.FirehoseDeliveryStreamArgs{
   172  //				Name:        pulumi.String("kinesis-firehose-extended-s3-test-stream"),
   173  //				Destination: pulumi.String("extended_s3"),
   174  //				ExtendedS3Configuration: &kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{
   175  //					RoleArn:       pulumi.Any(firehoseRole.Arn),
   176  //					BucketArn:     pulumi.Any(bucket.Arn),
   177  //					BufferingSize: pulumi.Int(64),
   178  //					DynamicPartitioningConfiguration: &kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs{
   179  //						Enabled: pulumi.Bool(true),
   180  //					},
   181  //					Prefix:            pulumi.String("data/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/"),
   182  //					ErrorOutputPrefix: pulumi.String("errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/"),
   183  //					ProcessingConfiguration: &kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{
   184  //						Enabled: pulumi.Bool(true),
   185  //						Processors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{
   186  //							&kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{
   187  //								Type: pulumi.String("RecordDeAggregation"),
   188  //								Parameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{
   189  //									&kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{
   190  //										ParameterName:  pulumi.String("SubRecordType"),
   191  //										ParameterValue: pulumi.String("JSON"),
   192  //									},
   193  //								},
   194  //							},
   195  //							&kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{
   196  //								Type: pulumi.String("AppendDelimiterToRecord"),
   197  //							},
   198  //							&kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{
   199  //								Type: pulumi.String("MetadataExtraction"),
   200  //								Parameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{
   201  //									&kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{
   202  //										ParameterName:  pulumi.String("JsonParsingEngine"),
   203  //										ParameterValue: pulumi.String("JQ-1.6"),
   204  //									},
   205  //									&kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{
   206  //										ParameterName:  pulumi.String("MetadataExtractionQuery"),
   207  //										ParameterValue: pulumi.String("{customer_id:.customer_id}"),
   208  //									},
   209  //								},
   210  //							},
   211  //						},
   212  //					},
   213  //				},
   214  //			})
   215  //			if err != nil {
   216  //				return err
   217  //			}
   218  //			return nil
   219  //		})
   220  //	}
   221  //
   222  // ```
   223  // <!--End PulumiCodeChooser -->
   224  //
   225  // Multiple Dynamic Partitioning Keys (maximum of 50) can be added by comma separating the `parameterValue`.
   226  //
   227  // The following example adds the Dynamic Partitioning Keys: `storeId` and `customerId` to the S3 prefix.
   228  //
   229  // <!--Start PulumiCodeChooser -->
   230  // ```go
   231  // package main
   232  //
   233  // import (
   234  //
   235  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis"
   236  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   237  //
   238  // )
   239  //
   240  //	func main() {
   241  //		pulumi.Run(func(ctx *pulumi.Context) error {
   242  //			_, err := kinesis.NewFirehoseDeliveryStream(ctx, "extended_s3_stream", &kinesis.FirehoseDeliveryStreamArgs{
   243  //				Name:        pulumi.String("kinesis-firehose-extended-s3-test-stream"),
   244  //				Destination: pulumi.String("extended_s3"),
   245  //				ExtendedS3Configuration: &kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{
   246  //					RoleArn:       pulumi.Any(firehoseRole.Arn),
   247  //					BucketArn:     pulumi.Any(bucket.Arn),
   248  //					BufferingSize: pulumi.Int(64),
   249  //					DynamicPartitioningConfiguration: &kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationDynamicPartitioningConfigurationArgs{
   250  //						Enabled: pulumi.Bool(true),
   251  //					},
   252  //					Prefix:            pulumi.String("data/store_id=!{partitionKeyFromQuery:store_id}/customer_id=!{partitionKeyFromQuery:customer_id}/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/"),
   253  //					ErrorOutputPrefix: pulumi.String("errors/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}/"),
   254  //					ProcessingConfiguration: &kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationArgs{
   255  //						Enabled: pulumi.Bool(true),
   256  //						Processors: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArray{
   257  //							&kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorArgs{
   258  //								Type: pulumi.String("MetadataExtraction"),
   259  //								Parameters: kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArray{
   260  //									&kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{
   261  //										ParameterName:  pulumi.String("JsonParsingEngine"),
   262  //										ParameterValue: pulumi.String("JQ-1.6"),
   263  //									},
   264  //									&kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationProcessingConfigurationProcessorParameterArgs{
   265  //										ParameterName:  pulumi.String("MetadataExtractionQuery"),
   266  //										ParameterValue: pulumi.String("{store_id:.store_id,customer_id:.customer_id}"),
   267  //									},
   268  //								},
   269  //							},
   270  //						},
   271  //					},
   272  //				},
   273  //			})
   274  //			if err != nil {
   275  //				return err
   276  //			}
   277  //			return nil
   278  //		})
   279  //	}
   280  //
   281  // ```
   282  // <!--End PulumiCodeChooser -->
   283  //
   284  // ### Redshift Destination
   285  //
   286  // <!--Start PulumiCodeChooser -->
   287  // ```go
   288  // package main
   289  //
   290  // import (
   291  //
   292  //	"fmt"
   293  //
   294  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis"
   295  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/redshift"
   296  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   297  //
   298  // )
   299  //
   300  //	func main() {
   301  //		pulumi.Run(func(ctx *pulumi.Context) error {
   302  //			testCluster, err := redshift.NewCluster(ctx, "test_cluster", &redshift.ClusterArgs{
   303  //				ClusterIdentifier: pulumi.String("tf-redshift-cluster"),
   304  //				DatabaseName:      pulumi.String("test"),
   305  //				MasterUsername:    pulumi.String("testuser"),
   306  //				MasterPassword:    pulumi.String("T3stPass"),
   307  //				NodeType:          pulumi.String("dc1.large"),
   308  //				ClusterType:       pulumi.String("single-node"),
   309  //			})
   310  //			if err != nil {
   311  //				return err
   312  //			}
   313  //			_, err = kinesis.NewFirehoseDeliveryStream(ctx, "test_stream", &kinesis.FirehoseDeliveryStreamArgs{
   314  //				Name:        pulumi.String("kinesis-firehose-test-stream"),
   315  //				Destination: pulumi.String("redshift"),
   316  //				RedshiftConfiguration: &kinesis.FirehoseDeliveryStreamRedshiftConfigurationArgs{
   317  //					RoleArn: pulumi.Any(firehoseRole.Arn),
   318  //					ClusterJdbcurl: pulumi.All(testCluster.Endpoint, testCluster.DatabaseName).ApplyT(func(_args []interface{}) (string, error) {
   319  //						endpoint := _args[0].(string)
   320  //						databaseName := _args[1].(string)
   321  //						return fmt.Sprintf("jdbc:redshift://%v/%v", endpoint, databaseName), nil
   322  //					}).(pulumi.StringOutput),
   323  //					Username:         pulumi.String("testuser"),
   324  //					Password:         pulumi.String("T3stPass"),
   325  //					DataTableName:    pulumi.String("test-table"),
   326  //					CopyOptions:      pulumi.String("delimiter '|'"),
   327  //					DataTableColumns: pulumi.String("test-col"),
   328  //					S3BackupMode:     pulumi.String("Enabled"),
   329  //					S3Configuration: &kinesis.FirehoseDeliveryStreamRedshiftConfigurationS3ConfigurationArgs{
   330  //						RoleArn:           pulumi.Any(firehoseRole.Arn),
   331  //						BucketArn:         pulumi.Any(bucket.Arn),
   332  //						BufferingSize:     pulumi.Int(10),
   333  //						BufferingInterval: pulumi.Int(400),
   334  //						CompressionFormat: pulumi.String("GZIP"),
   335  //					},
   336  //					S3BackupConfiguration: &kinesis.FirehoseDeliveryStreamRedshiftConfigurationS3BackupConfigurationArgs{
   337  //						RoleArn:           pulumi.Any(firehoseRole.Arn),
   338  //						BucketArn:         pulumi.Any(bucket.Arn),
   339  //						BufferingSize:     pulumi.Int(15),
   340  //						BufferingInterval: pulumi.Int(300),
   341  //						CompressionFormat: pulumi.String("GZIP"),
   342  //					},
   343  //				},
   344  //			})
   345  //			if err != nil {
   346  //				return err
   347  //			}
   348  //			return nil
   349  //		})
   350  //	}
   351  //
   352  // ```
   353  // <!--End PulumiCodeChooser -->
   354  //
   355  // ### Elasticsearch Destination
   356  //
   357  // <!--Start PulumiCodeChooser -->
   358  // ```go
   359  // package main
   360  //
   361  // import (
   362  //
   363  //	"fmt"
   364  //
   365  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticsearch"
   366  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis"
   367  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   368  //
   369  // )
   370  //
   371  //	func main() {
   372  //		pulumi.Run(func(ctx *pulumi.Context) error {
   373  //			testCluster, err := elasticsearch.NewDomain(ctx, "test_cluster", &elasticsearch.DomainArgs{
   374  //				DomainName: pulumi.String("firehose-es-test"),
   375  //			})
   376  //			if err != nil {
   377  //				return err
   378  //			}
   379  //			_, err = kinesis.NewFirehoseDeliveryStream(ctx, "test_stream", &kinesis.FirehoseDeliveryStreamArgs{
   380  //				Name:        pulumi.String("kinesis-firehose-test-stream"),
   381  //				Destination: pulumi.String("elasticsearch"),
   382  //				ElasticsearchConfiguration: &kinesis.FirehoseDeliveryStreamElasticsearchConfigurationArgs{
   383  //					DomainArn: testCluster.Arn,
   384  //					RoleArn:   pulumi.Any(firehoseRole.Arn),
   385  //					IndexName: pulumi.String("test"),
   386  //					TypeName:  pulumi.String("test"),
   387  //					S3Configuration: &kinesis.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs{
   388  //						RoleArn:           pulumi.Any(firehoseRole.Arn),
   389  //						BucketArn:         pulumi.Any(bucket.Arn),
   390  //						BufferingSize:     pulumi.Int(10),
   391  //						BufferingInterval: pulumi.Int(400),
   392  //						CompressionFormat: pulumi.String("GZIP"),
   393  //					},
   394  //					ProcessingConfiguration: &kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationArgs{
   395  //						Enabled: pulumi.Bool(true),
   396  //						Processors: kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArray{
   397  //							&kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorArgs{
   398  //								Type: pulumi.String("Lambda"),
   399  //								Parameters: kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArray{
   400  //									&kinesis.FirehoseDeliveryStreamElasticsearchConfigurationProcessingConfigurationProcessorParameterArgs{
   401  //										ParameterName:  pulumi.String("LambdaArn"),
   402  //										ParameterValue: pulumi.String(fmt.Sprintf("%v:$LATEST", lambdaProcessor.Arn)),
   403  //									},
   404  //								},
   405  //							},
   406  //						},
   407  //					},
   408  //				},
   409  //			})
   410  //			if err != nil {
   411  //				return err
   412  //			}
   413  //			return nil
   414  //		})
   415  //	}
   416  //
   417  // ```
   418  // <!--End PulumiCodeChooser -->
   419  //
   420  // ### Elasticsearch Destination With VPC
   421  //
   422  // <!--Start PulumiCodeChooser -->
   423  // ```go
   424  // package main
   425  //
   426  // import (
   427  //
   428  //	"fmt"
   429  //
   430  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elasticsearch"
   431  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
   432  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis"
   433  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   434  //
   435  // )
   436  //
   437  //	func main() {
   438  //		pulumi.Run(func(ctx *pulumi.Context) error {
   439  //			testCluster, err := elasticsearch.NewDomain(ctx, "test_cluster", &elasticsearch.DomainArgs{
   440  //				DomainName: pulumi.String("es-test"),
   441  //				ClusterConfig: &elasticsearch.DomainClusterConfigArgs{
   442  //					InstanceCount:        pulumi.Int(2),
   443  //					ZoneAwarenessEnabled: pulumi.Bool(true),
   444  //					InstanceType:         pulumi.String("t2.small.elasticsearch"),
   445  //				},
   446  //				EbsOptions: &elasticsearch.DomainEbsOptionsArgs{
   447  //					EbsEnabled: pulumi.Bool(true),
   448  //					VolumeSize: pulumi.Int(10),
   449  //				},
   450  //				VpcOptions: &elasticsearch.DomainVpcOptionsArgs{
   451  //					SecurityGroupIds: pulumi.StringArray{
   452  //						first.Id,
   453  //					},
   454  //					SubnetIds: pulumi.StringArray{
   455  //						firstAwsSubnet.Id,
   456  //						second.Id,
   457  //					},
   458  //				},
   459  //			})
   460  //			if err != nil {
   461  //				return err
   462  //			}
   463  //			firehose_elasticsearch := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{
   464  //				Statements: iam.GetPolicyDocumentStatementArray{
   465  //					&iam.GetPolicyDocumentStatementArgs{
   466  //						Effect: pulumi.String("Allow"),
   467  //						Actions: pulumi.StringArray{
   468  //							pulumi.String("es:*"),
   469  //						},
   470  //						Resources: pulumi.StringArray{
   471  //							testCluster.Arn,
   472  //							testCluster.Arn.ApplyT(func(arn string) (string, error) {
   473  //								return fmt.Sprintf("%v/*", arn), nil
   474  //							}).(pulumi.StringOutput),
   475  //						},
   476  //					},
   477  //					&iam.GetPolicyDocumentStatementArgs{
   478  //						Effect: pulumi.String("Allow"),
   479  //						Actions: pulumi.StringArray{
   480  //							pulumi.String("ec2:DescribeVpcs"),
   481  //							pulumi.String("ec2:DescribeVpcAttribute"),
   482  //							pulumi.String("ec2:DescribeSubnets"),
   483  //							pulumi.String("ec2:DescribeSecurityGroups"),
   484  //							pulumi.String("ec2:DescribeNetworkInterfaces"),
   485  //							pulumi.String("ec2:CreateNetworkInterface"),
   486  //							pulumi.String("ec2:CreateNetworkInterfacePermission"),
   487  //							pulumi.String("ec2:DeleteNetworkInterface"),
   488  //						},
   489  //						Resources: pulumi.StringArray{
   490  //							pulumi.String("*"),
   491  //						},
   492  //					},
   493  //				},
   494  //			}, nil)
   495  //			_, err = iam.NewRolePolicy(ctx, "firehose-elasticsearch", &iam.RolePolicyArgs{
   496  //				Name: pulumi.String("elasticsearch"),
   497  //				Role: pulumi.Any(firehose.Id),
   498  //				Policy: firehose_elasticsearch.ApplyT(func(firehose_elasticsearch iam.GetPolicyDocumentResult) (*string, error) {
   499  //					return &firehose_elasticsearch.Json, nil
   500  //				}).(pulumi.StringPtrOutput),
   501  //			})
   502  //			if err != nil {
   503  //				return err
   504  //			}
   505  //			_, err = kinesis.NewFirehoseDeliveryStream(ctx, "test", &kinesis.FirehoseDeliveryStreamArgs{
   506  //				Name:        pulumi.String("kinesis-firehose-es"),
   507  //				Destination: pulumi.String("elasticsearch"),
   508  //				ElasticsearchConfiguration: &kinesis.FirehoseDeliveryStreamElasticsearchConfigurationArgs{
   509  //					DomainArn: testCluster.Arn,
   510  //					RoleArn:   pulumi.Any(firehose.Arn),
   511  //					IndexName: pulumi.String("test"),
   512  //					TypeName:  pulumi.String("test"),
   513  //					S3Configuration: &kinesis.FirehoseDeliveryStreamElasticsearchConfigurationS3ConfigurationArgs{
   514  //						RoleArn:   pulumi.Any(firehose.Arn),
   515  //						BucketArn: pulumi.Any(bucket.Arn),
   516  //					},
   517  //					VpcConfig: &kinesis.FirehoseDeliveryStreamElasticsearchConfigurationVpcConfigArgs{
   518  //						SubnetIds: pulumi.StringArray{
   519  //							firstAwsSubnet.Id,
   520  //							second.Id,
   521  //						},
   522  //						SecurityGroupIds: pulumi.StringArray{
   523  //							first.Id,
   524  //						},
   525  //						RoleArn: pulumi.Any(firehose.Arn),
   526  //					},
   527  //				},
   528  //			}, pulumi.DependsOn([]pulumi.Resource{
   529  //				firehose_elasticsearchRolePolicy,
   530  //			}))
   531  //			if err != nil {
   532  //				return err
   533  //			}
   534  //			return nil
   535  //		})
   536  //	}
   537  //
   538  // ```
   539  // <!--End PulumiCodeChooser -->
   540  //
   541  // ### OpenSearch Destination
   542  //
   543  // <!--Start PulumiCodeChooser -->
   544  // ```go
   545  // package main
   546  //
   547  // import (
   548  //
   549  //	"fmt"
   550  //
   551  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis"
   552  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opensearch"
   553  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   554  //
   555  // )
   556  //
   557  //	func main() {
   558  //		pulumi.Run(func(ctx *pulumi.Context) error {
   559  //			testCluster, err := opensearch.NewDomain(ctx, "test_cluster", &opensearch.DomainArgs{
   560  //				DomainName: pulumi.String("firehose-os-test"),
   561  //			})
   562  //			if err != nil {
   563  //				return err
   564  //			}
   565  //			_, err = kinesis.NewFirehoseDeliveryStream(ctx, "test_stream", &kinesis.FirehoseDeliveryStreamArgs{
   566  //				Name:        pulumi.String("kinesis-firehose-test-stream"),
   567  //				Destination: pulumi.String("opensearch"),
   568  //				OpensearchConfiguration: &kinesis.FirehoseDeliveryStreamOpensearchConfigurationArgs{
   569  //					DomainArn: testCluster.Arn,
   570  //					RoleArn:   pulumi.Any(firehoseRole.Arn),
   571  //					IndexName: pulumi.String("test"),
   572  //					S3Configuration: &kinesis.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs{
   573  //						RoleArn:           pulumi.Any(firehoseRole.Arn),
   574  //						BucketArn:         pulumi.Any(bucket.Arn),
   575  //						BufferingSize:     pulumi.Int(10),
   576  //						BufferingInterval: pulumi.Int(400),
   577  //						CompressionFormat: pulumi.String("GZIP"),
   578  //					},
   579  //					ProcessingConfiguration: &kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationArgs{
   580  //						Enabled: pulumi.Bool(true),
   581  //						Processors: kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArray{
   582  //							&kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorArgs{
   583  //								Type: pulumi.String("Lambda"),
   584  //								Parameters: kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArray{
   585  //									&kinesis.FirehoseDeliveryStreamOpensearchConfigurationProcessingConfigurationProcessorParameterArgs{
   586  //										ParameterName:  pulumi.String("LambdaArn"),
   587  //										ParameterValue: pulumi.String(fmt.Sprintf("%v:$LATEST", lambdaProcessor.Arn)),
   588  //									},
   589  //								},
   590  //							},
   591  //						},
   592  //					},
   593  //				},
   594  //			})
   595  //			if err != nil {
   596  //				return err
   597  //			}
   598  //			return nil
   599  //		})
   600  //	}
   601  //
   602  // ```
   603  // <!--End PulumiCodeChooser -->
   604  //
   605  // ### OpenSearch Destination With VPC
   606  //
   607  // <!--Start PulumiCodeChooser -->
   608  // ```go
   609  // package main
   610  //
   611  // import (
   612  //
   613  //	"fmt"
   614  //
   615  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
   616  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis"
   617  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opensearch"
   618  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   619  //
   620  // )
   621  //
   622  //	func main() {
   623  //		pulumi.Run(func(ctx *pulumi.Context) error {
   624  //			testCluster, err := opensearch.NewDomain(ctx, "test_cluster", &opensearch.DomainArgs{
   625  //				DomainName: pulumi.String("es-test"),
   626  //				ClusterConfig: &opensearch.DomainClusterConfigArgs{
   627  //					InstanceCount:        pulumi.Int(2),
   628  //					ZoneAwarenessEnabled: pulumi.Bool(true),
   629  //					InstanceType:         pulumi.String("m4.large.search"),
   630  //				},
   631  //				EbsOptions: &opensearch.DomainEbsOptionsArgs{
   632  //					EbsEnabled: pulumi.Bool(true),
   633  //					VolumeSize: pulumi.Int(10),
   634  //				},
   635  //				VpcOptions: &opensearch.DomainVpcOptionsArgs{
   636  //					SecurityGroupIds: pulumi.StringArray{
   637  //						first.Id,
   638  //					},
   639  //					SubnetIds: pulumi.StringArray{
   640  //						firstAwsSubnet.Id,
   641  //						second.Id,
   642  //					},
   643  //				},
   644  //			})
   645  //			if err != nil {
   646  //				return err
   647  //			}
   648  //			_, err = iam.NewRolePolicy(ctx, "firehose-opensearch", &iam.RolePolicyArgs{
   649  //				Name: pulumi.String("opensearch"),
   650  //				Role: pulumi.Any(firehose.Id),
   651  //				Policy: pulumi.All(testCluster.Arn, testCluster.Arn).ApplyT(func(_args []interface{}) (string, error) {
   652  //					testClusterArn := _args[0].(string)
   653  //					testClusterArn1 := _args[1].(string)
   654  //					return fmt.Sprintf(`{
   655  //	  "Version": "2012-10-17",
   656  //	  "Statement": [
   657  //	    {
   658  //	      "Effect": "Allow",
   659  //	      "Action": [
   660  //	        "es:*"
   661  //	      ],
   662  //	      "Resource": [
   663  //	        "%v",
   664  //	        "%v/*"
   665  //	      ]
   666  //	        },
   667  //	        {
   668  //	          "Effect": "Allow",
   669  //	          "Action": [
   670  //	            "ec2:DescribeVpcs",
   671  //	            "ec2:DescribeVpcAttribute",
   672  //	            "ec2:DescribeSubnets",
   673  //	            "ec2:DescribeSecurityGroups",
   674  //	            "ec2:DescribeNetworkInterfaces",
   675  //	            "ec2:CreateNetworkInterface",
   676  //	            "ec2:CreateNetworkInterfacePermission",
   677  //	            "ec2:DeleteNetworkInterface"
   678  //	          ],
   679  //	          "Resource": [
   680  //	            "*"
   681  //	          ]
   682  //	        }
   683  //	  ]
   684  //	}
   685  //
   686  // `, testClusterArn, testClusterArn1), nil
   687  //
   688  //				}).(pulumi.StringOutput),
   689  //			})
   690  //			if err != nil {
   691  //				return err
   692  //			}
   693  //			_, err = kinesis.NewFirehoseDeliveryStream(ctx, "test", &kinesis.FirehoseDeliveryStreamArgs{
   694  //				Name:        pulumi.String("pulumi-kinesis-firehose-os"),
   695  //				Destination: pulumi.String("opensearch"),
   696  //				OpensearchConfiguration: &kinesis.FirehoseDeliveryStreamOpensearchConfigurationArgs{
   697  //					DomainArn: testCluster.Arn,
   698  //					RoleArn:   pulumi.Any(firehose.Arn),
   699  //					IndexName: pulumi.String("test"),
   700  //					S3Configuration: &kinesis.FirehoseDeliveryStreamOpensearchConfigurationS3ConfigurationArgs{
   701  //						RoleArn:   pulumi.Any(firehose.Arn),
   702  //						BucketArn: pulumi.Any(bucket.Arn),
   703  //					},
   704  //					VpcConfig: &kinesis.FirehoseDeliveryStreamOpensearchConfigurationVpcConfigArgs{
   705  //						SubnetIds: pulumi.StringArray{
   706  //							firstAwsSubnet.Id,
   707  //							second.Id,
   708  //						},
   709  //						SecurityGroupIds: pulumi.StringArray{
   710  //							first.Id,
   711  //						},
   712  //						RoleArn: pulumi.Any(firehose.Arn),
   713  //					},
   714  //				},
   715  //			}, pulumi.DependsOn([]pulumi.Resource{
   716  //				firehose_opensearch,
   717  //			}))
   718  //			if err != nil {
   719  //				return err
   720  //			}
   721  //			return nil
   722  //		})
   723  //	}
   724  //
   725  // ```
   726  // <!--End PulumiCodeChooser -->
   727  //
   728  // ### OpenSearch Serverless Destination
   729  //
   730  // <!--Start PulumiCodeChooser -->
   731  // ```go
   732  // package main
   733  //
   734  // import (
   735  //
   736  //	"fmt"
   737  //
   738  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis"
   739  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/opensearch"
   740  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   741  //
   742  // )
   743  //
   744  //	func main() {
   745  //		pulumi.Run(func(ctx *pulumi.Context) error {
   746  //			testCollection, err := opensearch.NewServerlessCollection(ctx, "test_collection", &opensearch.ServerlessCollectionArgs{
   747  //				Name: pulumi.String("firehose-osserverless-test"),
   748  //			})
   749  //			if err != nil {
   750  //				return err
   751  //			}
   752  //			_, err = kinesis.NewFirehoseDeliveryStream(ctx, "test_stream", &kinesis.FirehoseDeliveryStreamArgs{
   753  //				Name:        pulumi.String("kinesis-firehose-test-stream"),
   754  //				Destination: pulumi.String("opensearchserverless"),
   755  //				OpensearchserverlessConfiguration: &kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationArgs{
   756  //					CollectionEndpoint: testCollection.CollectionEndpoint,
   757  //					RoleArn:            pulumi.Any(firehoseRole.Arn),
   758  //					IndexName:          pulumi.String("test"),
   759  //					S3Configuration: &kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationS3ConfigurationArgs{
   760  //						RoleArn:           pulumi.Any(firehoseRole.Arn),
   761  //						BucketArn:         pulumi.Any(bucket.Arn),
   762  //						BufferingSize:     pulumi.Int(10),
   763  //						BufferingInterval: pulumi.Int(400),
   764  //						CompressionFormat: pulumi.String("GZIP"),
   765  //					},
   766  //					ProcessingConfiguration: &kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationArgs{
   767  //						Enabled: pulumi.Bool(true),
   768  //						Processors: kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArray{
   769  //							&kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorArgs{
   770  //								Type: pulumi.String("Lambda"),
   771  //								Parameters: kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArray{
   772  //									&kinesis.FirehoseDeliveryStreamOpensearchserverlessConfigurationProcessingConfigurationProcessorParameterArgs{
   773  //										ParameterName:  pulumi.String("LambdaArn"),
   774  //										ParameterValue: pulumi.String(fmt.Sprintf("%v:$LATEST", lambdaProcessor.Arn)),
   775  //									},
   776  //								},
   777  //							},
   778  //						},
   779  //					},
   780  //				},
   781  //			})
   782  //			if err != nil {
   783  //				return err
   784  //			}
   785  //			return nil
   786  //		})
   787  //	}
   788  //
   789  // ```
   790  // <!--End PulumiCodeChooser -->
   791  //
   792  // ### Splunk Destination
   793  //
   794  // <!--Start PulumiCodeChooser -->
   795  // ```go
   796  // package main
   797  //
   798  // import (
   799  //
   800  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis"
   801  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   802  //
   803  // )
   804  //
   805  //	func main() {
   806  //		pulumi.Run(func(ctx *pulumi.Context) error {
   807  //			_, err := kinesis.NewFirehoseDeliveryStream(ctx, "test_stream", &kinesis.FirehoseDeliveryStreamArgs{
   808  //				Name:        pulumi.String("kinesis-firehose-test-stream"),
   809  //				Destination: pulumi.String("splunk"),
   810  //				SplunkConfiguration: &kinesis.FirehoseDeliveryStreamSplunkConfigurationArgs{
   811  //					HecEndpoint:              pulumi.String("https://http-inputs-mydomain.splunkcloud.com:443"),
   812  //					HecToken:                 pulumi.String("51D4DA16-C61B-4F5F-8EC7-ED4301342A4A"),
   813  //					HecAcknowledgmentTimeout: pulumi.Int(600),
   814  //					HecEndpointType:          pulumi.String("Event"),
   815  //					S3BackupMode:             pulumi.String("FailedEventsOnly"),
   816  //					S3Configuration: &kinesis.FirehoseDeliveryStreamSplunkConfigurationS3ConfigurationArgs{
   817  //						RoleArn:           pulumi.Any(firehose.Arn),
   818  //						BucketArn:         pulumi.Any(bucket.Arn),
   819  //						BufferingSize:     pulumi.Int(10),
   820  //						BufferingInterval: pulumi.Int(400),
   821  //						CompressionFormat: pulumi.String("GZIP"),
   822  //					},
   823  //				},
   824  //			})
   825  //			if err != nil {
   826  //				return err
   827  //			}
   828  //			return nil
   829  //		})
   830  //	}
   831  //
   832  // ```
   833  // <!--End PulumiCodeChooser -->
   834  //
   835  // ### HTTP Endpoint (e.g., New Relic) Destination
   836  //
   837  // <!--Start PulumiCodeChooser -->
   838  // ```go
   839  // package main
   840  //
   841  // import (
   842  //
   843  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis"
   844  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   845  //
   846  // )
   847  //
   848  //	func main() {
   849  //		pulumi.Run(func(ctx *pulumi.Context) error {
   850  //			_, err := kinesis.NewFirehoseDeliveryStream(ctx, "test_stream", &kinesis.FirehoseDeliveryStreamArgs{
   851  //				Name:        pulumi.String("kinesis-firehose-test-stream"),
   852  //				Destination: pulumi.String("http_endpoint"),
   853  //				HttpEndpointConfiguration: &kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationArgs{
   854  //					Url:               pulumi.String("https://aws-api.newrelic.com/firehose/v1"),
   855  //					Name:              pulumi.String("New Relic"),
   856  //					AccessKey:         pulumi.String("my-key"),
   857  //					BufferingSize:     pulumi.Int(15),
   858  //					BufferingInterval: pulumi.Int(600),
   859  //					RoleArn:           pulumi.Any(firehose.Arn),
   860  //					S3BackupMode:      pulumi.String("FailedDataOnly"),
   861  //					S3Configuration: &kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationS3ConfigurationArgs{
   862  //						RoleArn:           pulumi.Any(firehose.Arn),
   863  //						BucketArn:         pulumi.Any(bucket.Arn),
   864  //						BufferingSize:     pulumi.Int(10),
   865  //						BufferingInterval: pulumi.Int(400),
   866  //						CompressionFormat: pulumi.String("GZIP"),
   867  //					},
   868  //					RequestConfiguration: &kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationArgs{
   869  //						ContentEncoding: pulumi.String("GZIP"),
   870  //						CommonAttributes: kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArray{
   871  //							&kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs{
   872  //								Name:  pulumi.String("testname"),
   873  //								Value: pulumi.String("testvalue"),
   874  //							},
   875  //							&kinesis.FirehoseDeliveryStreamHttpEndpointConfigurationRequestConfigurationCommonAttributeArgs{
   876  //								Name:  pulumi.String("testname2"),
   877  //								Value: pulumi.String("testvalue2"),
   878  //							},
   879  //						},
   880  //					},
   881  //				},
   882  //			})
   883  //			if err != nil {
   884  //				return err
   885  //			}
   886  //			return nil
   887  //		})
   888  //	}
   889  //
   890  // ```
   891  // <!--End PulumiCodeChooser -->
   892  //
   893  // ## Import
   894  //
   895  // Using `pulumi import`, import Kinesis Firehose Delivery streams using the stream ARN. For example:
   896  //
   897  // ```sh
   898  // $ pulumi import aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream foo arn:aws:firehose:us-east-1:XXX:deliverystream/example
   899  // ```
   900  // Note: Import does not work for stream destination `s3`. Consider using `extended_s3` since `s3` destination is deprecated.
   901  type FirehoseDeliveryStream struct {
   902  	pulumi.CustomResourceState
   903  
   904  	// The Amazon Resource Name (ARN) specifying the Stream
   905  	Arn pulumi.StringOutput `pulumi:"arn"`
   906  	// 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` and `opensearchserverless`.
   907  	Destination   pulumi.StringOutput `pulumi:"destination"`
   908  	DestinationId pulumi.StringOutput `pulumi:"destinationId"`
   909  	// Configuration options when `destination` is `elasticsearch`. See `elasticsearchConfiguration` block below for details.
   910  	ElasticsearchConfiguration FirehoseDeliveryStreamElasticsearchConfigurationPtrOutput `pulumi:"elasticsearchConfiguration"`
   911  	// Enhanced configuration options for the s3 destination. See `extendedS3Configuration` block below for details.
   912  	ExtendedS3Configuration FirehoseDeliveryStreamExtendedS3ConfigurationPtrOutput `pulumi:"extendedS3Configuration"`
   913  	// Configuration options when `destination` is `httpEndpoint`. Requires the user to also specify an `s3Configuration` block.  See `httpEndpointConfiguration` block below for details.
   914  	HttpEndpointConfiguration FirehoseDeliveryStreamHttpEndpointConfigurationPtrOutput `pulumi:"httpEndpointConfiguration"`
   915  	// 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.
   916  	KinesisSourceConfiguration FirehoseDeliveryStreamKinesisSourceConfigurationPtrOutput `pulumi:"kinesisSourceConfiguration"`
   917  	// The configuration for the Amazon MSK cluster to be used as the source for a delivery stream. See `mskSourceConfiguration` block below for details.
   918  	MskSourceConfiguration FirehoseDeliveryStreamMskSourceConfigurationPtrOutput `pulumi:"mskSourceConfiguration"`
   919  	// 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.
   920  	Name pulumi.StringOutput `pulumi:"name"`
   921  	// Configuration options when `destination` is `opensearch`. See `opensearchConfiguration` block below for details.
   922  	OpensearchConfiguration FirehoseDeliveryStreamOpensearchConfigurationPtrOutput `pulumi:"opensearchConfiguration"`
   923  	// Configuration options when `destination` is `opensearchserverless`. See `opensearchserverlessConfiguration` block below for details.
   924  	OpensearchserverlessConfiguration FirehoseDeliveryStreamOpensearchserverlessConfigurationPtrOutput `pulumi:"opensearchserverlessConfiguration"`
   925  	// Configuration options when `destination` is `redshift`. Requires the user to also specify an `s3Configuration` block. See `redshiftConfiguration` block below for details.
   926  	RedshiftConfiguration FirehoseDeliveryStreamRedshiftConfigurationPtrOutput `pulumi:"redshiftConfiguration"`
   927  	// Encrypt at rest options. See `serverSideEncryption` block below for details.
   928  	//
   929  	// **NOTE:** Server-side encryption should not be enabled when a kinesis stream is configured as the source of the firehose delivery stream.
   930  	ServerSideEncryption FirehoseDeliveryStreamServerSideEncryptionPtrOutput `pulumi:"serverSideEncryption"`
   931  	// Configuration options when `destination` is `splunk`. See `splunkConfiguration` block below for details.
   932  	SplunkConfiguration FirehoseDeliveryStreamSplunkConfigurationPtrOutput `pulumi:"splunkConfiguration"`
   933  	// 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.
   934  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   935  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   936  	//
   937  	// Deprecated: Please use `tags` instead.
   938  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   939  	// Specifies the table version for the output data schema. Defaults to `LATEST`.
   940  	VersionId pulumi.StringOutput `pulumi:"versionId"`
   941  }
   942  
   943  // NewFirehoseDeliveryStream registers a new resource with the given unique name, arguments, and options.
   944  func NewFirehoseDeliveryStream(ctx *pulumi.Context,
   945  	name string, args *FirehoseDeliveryStreamArgs, opts ...pulumi.ResourceOption) (*FirehoseDeliveryStream, error) {
   946  	if args == nil {
   947  		return nil, errors.New("missing one or more required arguments")
   948  	}
   949  
   950  	if args.Destination == nil {
   951  		return nil, errors.New("invalid value for required argument 'Destination'")
   952  	}
   953  	opts = internal.PkgResourceDefaultOpts(opts)
   954  	var resource FirehoseDeliveryStream
   955  	err := ctx.RegisterResource("aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream", name, args, &resource, opts...)
   956  	if err != nil {
   957  		return nil, err
   958  	}
   959  	return &resource, nil
   960  }
   961  
   962  // GetFirehoseDeliveryStream gets an existing FirehoseDeliveryStream resource's state with the given name, ID, and optional
   963  // state properties that are used to uniquely qualify the lookup (nil if not required).
   964  func GetFirehoseDeliveryStream(ctx *pulumi.Context,
   965  	name string, id pulumi.IDInput, state *FirehoseDeliveryStreamState, opts ...pulumi.ResourceOption) (*FirehoseDeliveryStream, error) {
   966  	var resource FirehoseDeliveryStream
   967  	err := ctx.ReadResource("aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream", name, id, state, &resource, opts...)
   968  	if err != nil {
   969  		return nil, err
   970  	}
   971  	return &resource, nil
   972  }
   973  
   974  // Input properties used for looking up and filtering FirehoseDeliveryStream resources.
   975  type firehoseDeliveryStreamState struct {
   976  	// The Amazon Resource Name (ARN) specifying the Stream
   977  	Arn *string `pulumi:"arn"`
   978  	// 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` and `opensearchserverless`.
   979  	Destination   *string `pulumi:"destination"`
   980  	DestinationId *string `pulumi:"destinationId"`
   981  	// Configuration options when `destination` is `elasticsearch`. See `elasticsearchConfiguration` block below for details.
   982  	ElasticsearchConfiguration *FirehoseDeliveryStreamElasticsearchConfiguration `pulumi:"elasticsearchConfiguration"`
   983  	// Enhanced configuration options for the s3 destination. See `extendedS3Configuration` block below for details.
   984  	ExtendedS3Configuration *FirehoseDeliveryStreamExtendedS3Configuration `pulumi:"extendedS3Configuration"`
   985  	// Configuration options when `destination` is `httpEndpoint`. Requires the user to also specify an `s3Configuration` block.  See `httpEndpointConfiguration` block below for details.
   986  	HttpEndpointConfiguration *FirehoseDeliveryStreamHttpEndpointConfiguration `pulumi:"httpEndpointConfiguration"`
   987  	// 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.
   988  	KinesisSourceConfiguration *FirehoseDeliveryStreamKinesisSourceConfiguration `pulumi:"kinesisSourceConfiguration"`
   989  	// The configuration for the Amazon MSK cluster to be used as the source for a delivery stream. See `mskSourceConfiguration` block below for details.
   990  	MskSourceConfiguration *FirehoseDeliveryStreamMskSourceConfiguration `pulumi:"mskSourceConfiguration"`
   991  	// 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.
   992  	Name *string `pulumi:"name"`
   993  	// Configuration options when `destination` is `opensearch`. See `opensearchConfiguration` block below for details.
   994  	OpensearchConfiguration *FirehoseDeliveryStreamOpensearchConfiguration `pulumi:"opensearchConfiguration"`
   995  	// Configuration options when `destination` is `opensearchserverless`. See `opensearchserverlessConfiguration` block below for details.
   996  	OpensearchserverlessConfiguration *FirehoseDeliveryStreamOpensearchserverlessConfiguration `pulumi:"opensearchserverlessConfiguration"`
   997  	// Configuration options when `destination` is `redshift`. Requires the user to also specify an `s3Configuration` block. See `redshiftConfiguration` block below for details.
   998  	RedshiftConfiguration *FirehoseDeliveryStreamRedshiftConfiguration `pulumi:"redshiftConfiguration"`
   999  	// Encrypt at rest options. See `serverSideEncryption` block below for details.
  1000  	//
  1001  	// **NOTE:** Server-side encryption should not be enabled when a kinesis stream is configured as the source of the firehose delivery stream.
  1002  	ServerSideEncryption *FirehoseDeliveryStreamServerSideEncryption `pulumi:"serverSideEncryption"`
  1003  	// Configuration options when `destination` is `splunk`. See `splunkConfiguration` block below for details.
  1004  	SplunkConfiguration *FirehoseDeliveryStreamSplunkConfiguration `pulumi:"splunkConfiguration"`
  1005  	// 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.
  1006  	Tags map[string]string `pulumi:"tags"`
  1007  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
  1008  	//
  1009  	// Deprecated: Please use `tags` instead.
  1010  	TagsAll map[string]string `pulumi:"tagsAll"`
  1011  	// Specifies the table version for the output data schema. Defaults to `LATEST`.
  1012  	VersionId *string `pulumi:"versionId"`
  1013  }
  1014  
  1015  type FirehoseDeliveryStreamState struct {
  1016  	// The Amazon Resource Name (ARN) specifying the Stream
  1017  	Arn pulumi.StringPtrInput
  1018  	// 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` and `opensearchserverless`.
  1019  	Destination   pulumi.StringPtrInput
  1020  	DestinationId pulumi.StringPtrInput
  1021  	// Configuration options when `destination` is `elasticsearch`. See `elasticsearchConfiguration` block below for details.
  1022  	ElasticsearchConfiguration FirehoseDeliveryStreamElasticsearchConfigurationPtrInput
  1023  	// Enhanced configuration options for the s3 destination. See `extendedS3Configuration` block below for details.
  1024  	ExtendedS3Configuration FirehoseDeliveryStreamExtendedS3ConfigurationPtrInput
  1025  	// Configuration options when `destination` is `httpEndpoint`. Requires the user to also specify an `s3Configuration` block.  See `httpEndpointConfiguration` block below for details.
  1026  	HttpEndpointConfiguration FirehoseDeliveryStreamHttpEndpointConfigurationPtrInput
  1027  	// 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.
  1028  	KinesisSourceConfiguration FirehoseDeliveryStreamKinesisSourceConfigurationPtrInput
  1029  	// The configuration for the Amazon MSK cluster to be used as the source for a delivery stream. See `mskSourceConfiguration` block below for details.
  1030  	MskSourceConfiguration FirehoseDeliveryStreamMskSourceConfigurationPtrInput
  1031  	// 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.
  1032  	Name pulumi.StringPtrInput
  1033  	// Configuration options when `destination` is `opensearch`. See `opensearchConfiguration` block below for details.
  1034  	OpensearchConfiguration FirehoseDeliveryStreamOpensearchConfigurationPtrInput
  1035  	// Configuration options when `destination` is `opensearchserverless`. See `opensearchserverlessConfiguration` block below for details.
  1036  	OpensearchserverlessConfiguration FirehoseDeliveryStreamOpensearchserverlessConfigurationPtrInput
  1037  	// Configuration options when `destination` is `redshift`. Requires the user to also specify an `s3Configuration` block. See `redshiftConfiguration` block below for details.
  1038  	RedshiftConfiguration FirehoseDeliveryStreamRedshiftConfigurationPtrInput
  1039  	// Encrypt at rest options. See `serverSideEncryption` block below for details.
  1040  	//
  1041  	// **NOTE:** Server-side encryption should not be enabled when a kinesis stream is configured as the source of the firehose delivery stream.
  1042  	ServerSideEncryption FirehoseDeliveryStreamServerSideEncryptionPtrInput
  1043  	// Configuration options when `destination` is `splunk`. See `splunkConfiguration` block below for details.
  1044  	SplunkConfiguration FirehoseDeliveryStreamSplunkConfigurationPtrInput
  1045  	// 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.
  1046  	Tags pulumi.StringMapInput
  1047  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
  1048  	//
  1049  	// Deprecated: Please use `tags` instead.
  1050  	TagsAll pulumi.StringMapInput
  1051  	// Specifies the table version for the output data schema. Defaults to `LATEST`.
  1052  	VersionId pulumi.StringPtrInput
  1053  }
  1054  
  1055  func (FirehoseDeliveryStreamState) ElementType() reflect.Type {
  1056  	return reflect.TypeOf((*firehoseDeliveryStreamState)(nil)).Elem()
  1057  }
  1058  
  1059  type firehoseDeliveryStreamArgs struct {
  1060  	// The Amazon Resource Name (ARN) specifying the Stream
  1061  	Arn *string `pulumi:"arn"`
  1062  	// 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` and `opensearchserverless`.
  1063  	Destination   string  `pulumi:"destination"`
  1064  	DestinationId *string `pulumi:"destinationId"`
  1065  	// Configuration options when `destination` is `elasticsearch`. See `elasticsearchConfiguration` block below for details.
  1066  	ElasticsearchConfiguration *FirehoseDeliveryStreamElasticsearchConfiguration `pulumi:"elasticsearchConfiguration"`
  1067  	// Enhanced configuration options for the s3 destination. See `extendedS3Configuration` block below for details.
  1068  	ExtendedS3Configuration *FirehoseDeliveryStreamExtendedS3Configuration `pulumi:"extendedS3Configuration"`
  1069  	// Configuration options when `destination` is `httpEndpoint`. Requires the user to also specify an `s3Configuration` block.  See `httpEndpointConfiguration` block below for details.
  1070  	HttpEndpointConfiguration *FirehoseDeliveryStreamHttpEndpointConfiguration `pulumi:"httpEndpointConfiguration"`
  1071  	// 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.
  1072  	KinesisSourceConfiguration *FirehoseDeliveryStreamKinesisSourceConfiguration `pulumi:"kinesisSourceConfiguration"`
  1073  	// The configuration for the Amazon MSK cluster to be used as the source for a delivery stream. See `mskSourceConfiguration` block below for details.
  1074  	MskSourceConfiguration *FirehoseDeliveryStreamMskSourceConfiguration `pulumi:"mskSourceConfiguration"`
  1075  	// 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.
  1076  	Name *string `pulumi:"name"`
  1077  	// Configuration options when `destination` is `opensearch`. See `opensearchConfiguration` block below for details.
  1078  	OpensearchConfiguration *FirehoseDeliveryStreamOpensearchConfiguration `pulumi:"opensearchConfiguration"`
  1079  	// Configuration options when `destination` is `opensearchserverless`. See `opensearchserverlessConfiguration` block below for details.
  1080  	OpensearchserverlessConfiguration *FirehoseDeliveryStreamOpensearchserverlessConfiguration `pulumi:"opensearchserverlessConfiguration"`
  1081  	// Configuration options when `destination` is `redshift`. Requires the user to also specify an `s3Configuration` block. See `redshiftConfiguration` block below for details.
  1082  	RedshiftConfiguration *FirehoseDeliveryStreamRedshiftConfiguration `pulumi:"redshiftConfiguration"`
  1083  	// Encrypt at rest options. See `serverSideEncryption` block below for details.
  1084  	//
  1085  	// **NOTE:** Server-side encryption should not be enabled when a kinesis stream is configured as the source of the firehose delivery stream.
  1086  	ServerSideEncryption *FirehoseDeliveryStreamServerSideEncryption `pulumi:"serverSideEncryption"`
  1087  	// Configuration options when `destination` is `splunk`. See `splunkConfiguration` block below for details.
  1088  	SplunkConfiguration *FirehoseDeliveryStreamSplunkConfiguration `pulumi:"splunkConfiguration"`
  1089  	// 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.
  1090  	Tags map[string]string `pulumi:"tags"`
  1091  	// Specifies the table version for the output data schema. Defaults to `LATEST`.
  1092  	VersionId *string `pulumi:"versionId"`
  1093  }
  1094  
  1095  // The set of arguments for constructing a FirehoseDeliveryStream resource.
  1096  type FirehoseDeliveryStreamArgs struct {
  1097  	// The Amazon Resource Name (ARN) specifying the Stream
  1098  	Arn pulumi.StringPtrInput
  1099  	// 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` and `opensearchserverless`.
  1100  	Destination   pulumi.StringInput
  1101  	DestinationId pulumi.StringPtrInput
  1102  	// Configuration options when `destination` is `elasticsearch`. See `elasticsearchConfiguration` block below for details.
  1103  	ElasticsearchConfiguration FirehoseDeliveryStreamElasticsearchConfigurationPtrInput
  1104  	// Enhanced configuration options for the s3 destination. See `extendedS3Configuration` block below for details.
  1105  	ExtendedS3Configuration FirehoseDeliveryStreamExtendedS3ConfigurationPtrInput
  1106  	// Configuration options when `destination` is `httpEndpoint`. Requires the user to also specify an `s3Configuration` block.  See `httpEndpointConfiguration` block below for details.
  1107  	HttpEndpointConfiguration FirehoseDeliveryStreamHttpEndpointConfigurationPtrInput
  1108  	// 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.
  1109  	KinesisSourceConfiguration FirehoseDeliveryStreamKinesisSourceConfigurationPtrInput
  1110  	// The configuration for the Amazon MSK cluster to be used as the source for a delivery stream. See `mskSourceConfiguration` block below for details.
  1111  	MskSourceConfiguration FirehoseDeliveryStreamMskSourceConfigurationPtrInput
  1112  	// 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.
  1113  	Name pulumi.StringPtrInput
  1114  	// Configuration options when `destination` is `opensearch`. See `opensearchConfiguration` block below for details.
  1115  	OpensearchConfiguration FirehoseDeliveryStreamOpensearchConfigurationPtrInput
  1116  	// Configuration options when `destination` is `opensearchserverless`. See `opensearchserverlessConfiguration` block below for details.
  1117  	OpensearchserverlessConfiguration FirehoseDeliveryStreamOpensearchserverlessConfigurationPtrInput
  1118  	// Configuration options when `destination` is `redshift`. Requires the user to also specify an `s3Configuration` block. See `redshiftConfiguration` block below for details.
  1119  	RedshiftConfiguration FirehoseDeliveryStreamRedshiftConfigurationPtrInput
  1120  	// Encrypt at rest options. See `serverSideEncryption` block below for details.
  1121  	//
  1122  	// **NOTE:** Server-side encryption should not be enabled when a kinesis stream is configured as the source of the firehose delivery stream.
  1123  	ServerSideEncryption FirehoseDeliveryStreamServerSideEncryptionPtrInput
  1124  	// Configuration options when `destination` is `splunk`. See `splunkConfiguration` block below for details.
  1125  	SplunkConfiguration FirehoseDeliveryStreamSplunkConfigurationPtrInput
  1126  	// 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.
  1127  	Tags pulumi.StringMapInput
  1128  	// Specifies the table version for the output data schema. Defaults to `LATEST`.
  1129  	VersionId pulumi.StringPtrInput
  1130  }
  1131  
  1132  func (FirehoseDeliveryStreamArgs) ElementType() reflect.Type {
  1133  	return reflect.TypeOf((*firehoseDeliveryStreamArgs)(nil)).Elem()
  1134  }
  1135  
  1136  type FirehoseDeliveryStreamInput interface {
  1137  	pulumi.Input
  1138  
  1139  	ToFirehoseDeliveryStreamOutput() FirehoseDeliveryStreamOutput
  1140  	ToFirehoseDeliveryStreamOutputWithContext(ctx context.Context) FirehoseDeliveryStreamOutput
  1141  }
  1142  
  1143  func (*FirehoseDeliveryStream) ElementType() reflect.Type {
  1144  	return reflect.TypeOf((**FirehoseDeliveryStream)(nil)).Elem()
  1145  }
  1146  
  1147  func (i *FirehoseDeliveryStream) ToFirehoseDeliveryStreamOutput() FirehoseDeliveryStreamOutput {
  1148  	return i.ToFirehoseDeliveryStreamOutputWithContext(context.Background())
  1149  }
  1150  
  1151  func (i *FirehoseDeliveryStream) ToFirehoseDeliveryStreamOutputWithContext(ctx context.Context) FirehoseDeliveryStreamOutput {
  1152  	return pulumi.ToOutputWithContext(ctx, i).(FirehoseDeliveryStreamOutput)
  1153  }
  1154  
  1155  // FirehoseDeliveryStreamArrayInput is an input type that accepts FirehoseDeliveryStreamArray and FirehoseDeliveryStreamArrayOutput values.
  1156  // You can construct a concrete instance of `FirehoseDeliveryStreamArrayInput` via:
  1157  //
  1158  //	FirehoseDeliveryStreamArray{ FirehoseDeliveryStreamArgs{...} }
  1159  type FirehoseDeliveryStreamArrayInput interface {
  1160  	pulumi.Input
  1161  
  1162  	ToFirehoseDeliveryStreamArrayOutput() FirehoseDeliveryStreamArrayOutput
  1163  	ToFirehoseDeliveryStreamArrayOutputWithContext(context.Context) FirehoseDeliveryStreamArrayOutput
  1164  }
  1165  
  1166  type FirehoseDeliveryStreamArray []FirehoseDeliveryStreamInput
  1167  
  1168  func (FirehoseDeliveryStreamArray) ElementType() reflect.Type {
  1169  	return reflect.TypeOf((*[]*FirehoseDeliveryStream)(nil)).Elem()
  1170  }
  1171  
  1172  func (i FirehoseDeliveryStreamArray) ToFirehoseDeliveryStreamArrayOutput() FirehoseDeliveryStreamArrayOutput {
  1173  	return i.ToFirehoseDeliveryStreamArrayOutputWithContext(context.Background())
  1174  }
  1175  
  1176  func (i FirehoseDeliveryStreamArray) ToFirehoseDeliveryStreamArrayOutputWithContext(ctx context.Context) FirehoseDeliveryStreamArrayOutput {
  1177  	return pulumi.ToOutputWithContext(ctx, i).(FirehoseDeliveryStreamArrayOutput)
  1178  }
  1179  
  1180  // FirehoseDeliveryStreamMapInput is an input type that accepts FirehoseDeliveryStreamMap and FirehoseDeliveryStreamMapOutput values.
  1181  // You can construct a concrete instance of `FirehoseDeliveryStreamMapInput` via:
  1182  //
  1183  //	FirehoseDeliveryStreamMap{ "key": FirehoseDeliveryStreamArgs{...} }
  1184  type FirehoseDeliveryStreamMapInput interface {
  1185  	pulumi.Input
  1186  
  1187  	ToFirehoseDeliveryStreamMapOutput() FirehoseDeliveryStreamMapOutput
  1188  	ToFirehoseDeliveryStreamMapOutputWithContext(context.Context) FirehoseDeliveryStreamMapOutput
  1189  }
  1190  
  1191  type FirehoseDeliveryStreamMap map[string]FirehoseDeliveryStreamInput
  1192  
  1193  func (FirehoseDeliveryStreamMap) ElementType() reflect.Type {
  1194  	return reflect.TypeOf((*map[string]*FirehoseDeliveryStream)(nil)).Elem()
  1195  }
  1196  
  1197  func (i FirehoseDeliveryStreamMap) ToFirehoseDeliveryStreamMapOutput() FirehoseDeliveryStreamMapOutput {
  1198  	return i.ToFirehoseDeliveryStreamMapOutputWithContext(context.Background())
  1199  }
  1200  
  1201  func (i FirehoseDeliveryStreamMap) ToFirehoseDeliveryStreamMapOutputWithContext(ctx context.Context) FirehoseDeliveryStreamMapOutput {
  1202  	return pulumi.ToOutputWithContext(ctx, i).(FirehoseDeliveryStreamMapOutput)
  1203  }
  1204  
  1205  type FirehoseDeliveryStreamOutput struct{ *pulumi.OutputState }
  1206  
  1207  func (FirehoseDeliveryStreamOutput) ElementType() reflect.Type {
  1208  	return reflect.TypeOf((**FirehoseDeliveryStream)(nil)).Elem()
  1209  }
  1210  
  1211  func (o FirehoseDeliveryStreamOutput) ToFirehoseDeliveryStreamOutput() FirehoseDeliveryStreamOutput {
  1212  	return o
  1213  }
  1214  
  1215  func (o FirehoseDeliveryStreamOutput) ToFirehoseDeliveryStreamOutputWithContext(ctx context.Context) FirehoseDeliveryStreamOutput {
  1216  	return o
  1217  }
  1218  
  1219  // The Amazon Resource Name (ARN) specifying the Stream
  1220  func (o FirehoseDeliveryStreamOutput) Arn() pulumi.StringOutput {
  1221  	return o.ApplyT(func(v *FirehoseDeliveryStream) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
  1222  }
  1223  
  1224  // 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` and `opensearchserverless`.
  1225  func (o FirehoseDeliveryStreamOutput) Destination() pulumi.StringOutput {
  1226  	return o.ApplyT(func(v *FirehoseDeliveryStream) pulumi.StringOutput { return v.Destination }).(pulumi.StringOutput)
  1227  }
  1228  
  1229  func (o FirehoseDeliveryStreamOutput) DestinationId() pulumi.StringOutput {
  1230  	return o.ApplyT(func(v *FirehoseDeliveryStream) pulumi.StringOutput { return v.DestinationId }).(pulumi.StringOutput)
  1231  }
  1232  
  1233  // Configuration options when `destination` is `elasticsearch`. See `elasticsearchConfiguration` block below for details.
  1234  func (o FirehoseDeliveryStreamOutput) ElasticsearchConfiguration() FirehoseDeliveryStreamElasticsearchConfigurationPtrOutput {
  1235  	return o.ApplyT(func(v *FirehoseDeliveryStream) FirehoseDeliveryStreamElasticsearchConfigurationPtrOutput {
  1236  		return v.ElasticsearchConfiguration
  1237  	}).(FirehoseDeliveryStreamElasticsearchConfigurationPtrOutput)
  1238  }
  1239  
  1240  // Enhanced configuration options for the s3 destination. See `extendedS3Configuration` block below for details.
  1241  func (o FirehoseDeliveryStreamOutput) ExtendedS3Configuration() FirehoseDeliveryStreamExtendedS3ConfigurationPtrOutput {
  1242  	return o.ApplyT(func(v *FirehoseDeliveryStream) FirehoseDeliveryStreamExtendedS3ConfigurationPtrOutput {
  1243  		return v.ExtendedS3Configuration
  1244  	}).(FirehoseDeliveryStreamExtendedS3ConfigurationPtrOutput)
  1245  }
  1246  
  1247  // Configuration options when `destination` is `httpEndpoint`. Requires the user to also specify an `s3Configuration` block.  See `httpEndpointConfiguration` block below for details.
  1248  func (o FirehoseDeliveryStreamOutput) HttpEndpointConfiguration() FirehoseDeliveryStreamHttpEndpointConfigurationPtrOutput {
  1249  	return o.ApplyT(func(v *FirehoseDeliveryStream) FirehoseDeliveryStreamHttpEndpointConfigurationPtrOutput {
  1250  		return v.HttpEndpointConfiguration
  1251  	}).(FirehoseDeliveryStreamHttpEndpointConfigurationPtrOutput)
  1252  }
  1253  
  1254  // 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.
  1255  func (o FirehoseDeliveryStreamOutput) KinesisSourceConfiguration() FirehoseDeliveryStreamKinesisSourceConfigurationPtrOutput {
  1256  	return o.ApplyT(func(v *FirehoseDeliveryStream) FirehoseDeliveryStreamKinesisSourceConfigurationPtrOutput {
  1257  		return v.KinesisSourceConfiguration
  1258  	}).(FirehoseDeliveryStreamKinesisSourceConfigurationPtrOutput)
  1259  }
  1260  
  1261  // The configuration for the Amazon MSK cluster to be used as the source for a delivery stream. See `mskSourceConfiguration` block below for details.
  1262  func (o FirehoseDeliveryStreamOutput) MskSourceConfiguration() FirehoseDeliveryStreamMskSourceConfigurationPtrOutput {
  1263  	return o.ApplyT(func(v *FirehoseDeliveryStream) FirehoseDeliveryStreamMskSourceConfigurationPtrOutput {
  1264  		return v.MskSourceConfiguration
  1265  	}).(FirehoseDeliveryStreamMskSourceConfigurationPtrOutput)
  1266  }
  1267  
  1268  // 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.
  1269  func (o FirehoseDeliveryStreamOutput) Name() pulumi.StringOutput {
  1270  	return o.ApplyT(func(v *FirehoseDeliveryStream) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
  1271  }
  1272  
  1273  // Configuration options when `destination` is `opensearch`. See `opensearchConfiguration` block below for details.
  1274  func (o FirehoseDeliveryStreamOutput) OpensearchConfiguration() FirehoseDeliveryStreamOpensearchConfigurationPtrOutput {
  1275  	return o.ApplyT(func(v *FirehoseDeliveryStream) FirehoseDeliveryStreamOpensearchConfigurationPtrOutput {
  1276  		return v.OpensearchConfiguration
  1277  	}).(FirehoseDeliveryStreamOpensearchConfigurationPtrOutput)
  1278  }
  1279  
  1280  // Configuration options when `destination` is `opensearchserverless`. See `opensearchserverlessConfiguration` block below for details.
  1281  func (o FirehoseDeliveryStreamOutput) OpensearchserverlessConfiguration() FirehoseDeliveryStreamOpensearchserverlessConfigurationPtrOutput {
  1282  	return o.ApplyT(func(v *FirehoseDeliveryStream) FirehoseDeliveryStreamOpensearchserverlessConfigurationPtrOutput {
  1283  		return v.OpensearchserverlessConfiguration
  1284  	}).(FirehoseDeliveryStreamOpensearchserverlessConfigurationPtrOutput)
  1285  }
  1286  
  1287  // Configuration options when `destination` is `redshift`. Requires the user to also specify an `s3Configuration` block. See `redshiftConfiguration` block below for details.
  1288  func (o FirehoseDeliveryStreamOutput) RedshiftConfiguration() FirehoseDeliveryStreamRedshiftConfigurationPtrOutput {
  1289  	return o.ApplyT(func(v *FirehoseDeliveryStream) FirehoseDeliveryStreamRedshiftConfigurationPtrOutput {
  1290  		return v.RedshiftConfiguration
  1291  	}).(FirehoseDeliveryStreamRedshiftConfigurationPtrOutput)
  1292  }
  1293  
  1294  // Encrypt at rest options. See `serverSideEncryption` block below for details.
  1295  //
  1296  // **NOTE:** Server-side encryption should not be enabled when a kinesis stream is configured as the source of the firehose delivery stream.
  1297  func (o FirehoseDeliveryStreamOutput) ServerSideEncryption() FirehoseDeliveryStreamServerSideEncryptionPtrOutput {
  1298  	return o.ApplyT(func(v *FirehoseDeliveryStream) FirehoseDeliveryStreamServerSideEncryptionPtrOutput {
  1299  		return v.ServerSideEncryption
  1300  	}).(FirehoseDeliveryStreamServerSideEncryptionPtrOutput)
  1301  }
  1302  
  1303  // Configuration options when `destination` is `splunk`. See `splunkConfiguration` block below for details.
  1304  func (o FirehoseDeliveryStreamOutput) SplunkConfiguration() FirehoseDeliveryStreamSplunkConfigurationPtrOutput {
  1305  	return o.ApplyT(func(v *FirehoseDeliveryStream) FirehoseDeliveryStreamSplunkConfigurationPtrOutput {
  1306  		return v.SplunkConfiguration
  1307  	}).(FirehoseDeliveryStreamSplunkConfigurationPtrOutput)
  1308  }
  1309  
  1310  // 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.
  1311  func (o FirehoseDeliveryStreamOutput) Tags() pulumi.StringMapOutput {
  1312  	return o.ApplyT(func(v *FirehoseDeliveryStream) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
  1313  }
  1314  
  1315  // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
  1316  //
  1317  // Deprecated: Please use `tags` instead.
  1318  func (o FirehoseDeliveryStreamOutput) TagsAll() pulumi.StringMapOutput {
  1319  	return o.ApplyT(func(v *FirehoseDeliveryStream) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
  1320  }
  1321  
  1322  // Specifies the table version for the output data schema. Defaults to `LATEST`.
  1323  func (o FirehoseDeliveryStreamOutput) VersionId() pulumi.StringOutput {
  1324  	return o.ApplyT(func(v *FirehoseDeliveryStream) pulumi.StringOutput { return v.VersionId }).(pulumi.StringOutput)
  1325  }
  1326  
  1327  type FirehoseDeliveryStreamArrayOutput struct{ *pulumi.OutputState }
  1328  
  1329  func (FirehoseDeliveryStreamArrayOutput) ElementType() reflect.Type {
  1330  	return reflect.TypeOf((*[]*FirehoseDeliveryStream)(nil)).Elem()
  1331  }
  1332  
  1333  func (o FirehoseDeliveryStreamArrayOutput) ToFirehoseDeliveryStreamArrayOutput() FirehoseDeliveryStreamArrayOutput {
  1334  	return o
  1335  }
  1336  
  1337  func (o FirehoseDeliveryStreamArrayOutput) ToFirehoseDeliveryStreamArrayOutputWithContext(ctx context.Context) FirehoseDeliveryStreamArrayOutput {
  1338  	return o
  1339  }
  1340  
  1341  func (o FirehoseDeliveryStreamArrayOutput) Index(i pulumi.IntInput) FirehoseDeliveryStreamOutput {
  1342  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *FirehoseDeliveryStream {
  1343  		return vs[0].([]*FirehoseDeliveryStream)[vs[1].(int)]
  1344  	}).(FirehoseDeliveryStreamOutput)
  1345  }
  1346  
  1347  type FirehoseDeliveryStreamMapOutput struct{ *pulumi.OutputState }
  1348  
  1349  func (FirehoseDeliveryStreamMapOutput) ElementType() reflect.Type {
  1350  	return reflect.TypeOf((*map[string]*FirehoseDeliveryStream)(nil)).Elem()
  1351  }
  1352  
  1353  func (o FirehoseDeliveryStreamMapOutput) ToFirehoseDeliveryStreamMapOutput() FirehoseDeliveryStreamMapOutput {
  1354  	return o
  1355  }
  1356  
  1357  func (o FirehoseDeliveryStreamMapOutput) ToFirehoseDeliveryStreamMapOutputWithContext(ctx context.Context) FirehoseDeliveryStreamMapOutput {
  1358  	return o
  1359  }
  1360  
  1361  func (o FirehoseDeliveryStreamMapOutput) MapIndex(k pulumi.StringInput) FirehoseDeliveryStreamOutput {
  1362  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *FirehoseDeliveryStream {
  1363  		return vs[0].(map[string]*FirehoseDeliveryStream)[vs[1].(string)]
  1364  	}).(FirehoseDeliveryStreamOutput)
  1365  }
  1366  
  1367  func init() {
  1368  	pulumi.RegisterInputType(reflect.TypeOf((*FirehoseDeliveryStreamInput)(nil)).Elem(), &FirehoseDeliveryStream{})
  1369  	pulumi.RegisterInputType(reflect.TypeOf((*FirehoseDeliveryStreamArrayInput)(nil)).Elem(), FirehoseDeliveryStreamArray{})
  1370  	pulumi.RegisterInputType(reflect.TypeOf((*FirehoseDeliveryStreamMapInput)(nil)).Elem(), FirehoseDeliveryStreamMap{})
  1371  	pulumi.RegisterOutputType(FirehoseDeliveryStreamOutput{})
  1372  	pulumi.RegisterOutputType(FirehoseDeliveryStreamArrayOutput{})
  1373  	pulumi.RegisterOutputType(FirehoseDeliveryStreamMapOutput{})
  1374  }