github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/pipes/pipe.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 pipes
     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  // Resource for managing an AWS EventBridge Pipes Pipe.
    16  //
    17  // You can find out more about EventBridge Pipes in the [User Guide](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html).
    18  //
    19  // EventBridge Pipes are very configurable, and may require IAM permissions to work correctly. More information on the configuration options and IAM permissions can be found in the [User Guide](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html).
    20  //
    21  // > **Note:** EventBridge was formerly known as CloudWatch Events. The functionality is identical.
    22  //
    23  // ## Example Usage
    24  //
    25  // ### Basic Usage
    26  //
    27  // <!--Start PulumiCodeChooser -->
    28  // ```go
    29  // package main
    30  //
    31  // import (
    32  //
    33  //	"encoding/json"
    34  //
    35  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws"
    36  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
    37  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/pipes"
    38  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sqs"
    39  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    40  //
    41  // )
    42  //
    43  //	func main() {
    44  //		pulumi.Run(func(ctx *pulumi.Context) error {
    45  //			main, err := aws.GetCallerIdentity(ctx, nil, nil)
    46  //			if err != nil {
    47  //				return err
    48  //			}
    49  //			tmpJSON0, err := json.Marshal(map[string]interface{}{
    50  //				"Version": "2012-10-17",
    51  //				"Statement": map[string]interface{}{
    52  //					"Effect": "Allow",
    53  //					"Action": "sts:AssumeRole",
    54  //					"Principal": map[string]interface{}{
    55  //						"Service": "pipes.amazonaws.com",
    56  //					},
    57  //					"Condition": map[string]interface{}{
    58  //						"StringEquals": map[string]interface{}{
    59  //							"aws:SourceAccount": main.AccountId,
    60  //						},
    61  //					},
    62  //				},
    63  //			})
    64  //			if err != nil {
    65  //				return err
    66  //			}
    67  //			json0 := string(tmpJSON0)
    68  //			example, err := iam.NewRole(ctx, "example", &iam.RoleArgs{
    69  //				AssumeRolePolicy: pulumi.String(json0),
    70  //			})
    71  //			if err != nil {
    72  //				return err
    73  //			}
    74  //			sourceQueue, err := sqs.NewQueue(ctx, "source", nil)
    75  //			if err != nil {
    76  //				return err
    77  //			}
    78  //			source, err := iam.NewRolePolicy(ctx, "source", &iam.RolePolicyArgs{
    79  //				Role: example.ID(),
    80  //				Policy: sourceQueue.Arn.ApplyT(func(arn string) (pulumi.String, error) {
    81  //					var _zero pulumi.String
    82  //					tmpJSON1, err := json.Marshal(map[string]interface{}{
    83  //						"Version": "2012-10-17",
    84  //						"Statement": []map[string]interface{}{
    85  //							map[string]interface{}{
    86  //								"Effect": "Allow",
    87  //								"Action": []string{
    88  //									"sqs:DeleteMessage",
    89  //									"sqs:GetQueueAttributes",
    90  //									"sqs:ReceiveMessage",
    91  //								},
    92  //								"Resource": []string{
    93  //									arn,
    94  //								},
    95  //							},
    96  //						},
    97  //					})
    98  //					if err != nil {
    99  //						return _zero, err
   100  //					}
   101  //					json1 := string(tmpJSON1)
   102  //					return pulumi.String(json1), nil
   103  //				}).(pulumi.StringOutput),
   104  //			})
   105  //			if err != nil {
   106  //				return err
   107  //			}
   108  //			targetQueue, err := sqs.NewQueue(ctx, "target", nil)
   109  //			if err != nil {
   110  //				return err
   111  //			}
   112  //			target, err := iam.NewRolePolicy(ctx, "target", &iam.RolePolicyArgs{
   113  //				Role: example.ID(),
   114  //				Policy: targetQueue.Arn.ApplyT(func(arn string) (pulumi.String, error) {
   115  //					var _zero pulumi.String
   116  //					tmpJSON2, err := json.Marshal(map[string]interface{}{
   117  //						"Version": "2012-10-17",
   118  //						"Statement": []map[string]interface{}{
   119  //							map[string]interface{}{
   120  //								"Effect": "Allow",
   121  //								"Action": []string{
   122  //									"sqs:SendMessage",
   123  //								},
   124  //								"Resource": []string{
   125  //									arn,
   126  //								},
   127  //							},
   128  //						},
   129  //					})
   130  //					if err != nil {
   131  //						return _zero, err
   132  //					}
   133  //					json2 := string(tmpJSON2)
   134  //					return pulumi.String(json2), nil
   135  //				}).(pulumi.StringOutput),
   136  //			})
   137  //			if err != nil {
   138  //				return err
   139  //			}
   140  //			_, err = pipes.NewPipe(ctx, "example", &pipes.PipeArgs{
   141  //				Name:    pulumi.String("example-pipe"),
   142  //				RoleArn: example.Arn,
   143  //				Source:  sourceQueue.Arn,
   144  //				Target:  targetQueue.Arn,
   145  //			}, pulumi.DependsOn([]pulumi.Resource{
   146  //				source,
   147  //				target,
   148  //			}))
   149  //			if err != nil {
   150  //				return err
   151  //			}
   152  //			return nil
   153  //		})
   154  //	}
   155  //
   156  // ```
   157  // <!--End PulumiCodeChooser -->
   158  //
   159  // ### Enrichment Usage
   160  //
   161  // <!--Start PulumiCodeChooser -->
   162  // ```go
   163  // package main
   164  //
   165  // import (
   166  //
   167  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/pipes"
   168  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   169  //
   170  // )
   171  //
   172  //	func main() {
   173  //		pulumi.Run(func(ctx *pulumi.Context) error {
   174  //			_, err := pipes.NewPipe(ctx, "example", &pipes.PipeArgs{
   175  //				Name:       pulumi.String("example-pipe"),
   176  //				RoleArn:    pulumi.Any(exampleAwsIamRole.Arn),
   177  //				Source:     pulumi.Any(source.Arn),
   178  //				Target:     pulumi.Any(target.Arn),
   179  //				Enrichment: pulumi.Any(exampleAwsCloudwatchEventApiDestination.Arn),
   180  //				EnrichmentParameters: &pipes.PipeEnrichmentParametersArgs{
   181  //					HttpParameters: &pipes.PipeEnrichmentParametersHttpParametersArgs{
   182  //						PathParameterValues: pulumi.String("example-path-param"),
   183  //						HeaderParameters: pulumi.StringMap{
   184  //							"example-header":        pulumi.String("example-value"),
   185  //							"second-example-header": pulumi.String("second-example-value"),
   186  //						},
   187  //						QueryStringParameters: pulumi.StringMap{
   188  //							"example-query-string":        pulumi.String("example-value"),
   189  //							"second-example-query-string": pulumi.String("second-example-value"),
   190  //						},
   191  //					},
   192  //				},
   193  //			})
   194  //			if err != nil {
   195  //				return err
   196  //			}
   197  //			return nil
   198  //		})
   199  //	}
   200  //
   201  // ```
   202  // <!--End PulumiCodeChooser -->
   203  //
   204  // ### Filter Usage
   205  //
   206  // <!--Start PulumiCodeChooser -->
   207  // ```go
   208  // package main
   209  //
   210  // import (
   211  //
   212  //	"encoding/json"
   213  //
   214  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/pipes"
   215  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   216  //
   217  // )
   218  //
   219  //	func main() {
   220  //		pulumi.Run(func(ctx *pulumi.Context) error {
   221  //			tmpJSON0, err := json.Marshal(map[string]interface{}{
   222  //				"source": []string{
   223  //					"event-source",
   224  //				},
   225  //			})
   226  //			if err != nil {
   227  //				return err
   228  //			}
   229  //			json0 := string(tmpJSON0)
   230  //			_, err = pipes.NewPipe(ctx, "example", &pipes.PipeArgs{
   231  //				Name:    pulumi.String("example-pipe"),
   232  //				RoleArn: pulumi.Any(exampleAwsIamRole.Arn),
   233  //				Source:  pulumi.Any(source.Arn),
   234  //				Target:  pulumi.Any(target.Arn),
   235  //				SourceParameters: &pipes.PipeSourceParametersArgs{
   236  //					FilterCriteria: &pipes.PipeSourceParametersFilterCriteriaArgs{
   237  //						Filters: pipes.PipeSourceParametersFilterCriteriaFilterArray{
   238  //							&pipes.PipeSourceParametersFilterCriteriaFilterArgs{
   239  //								Pattern: pulumi.String(json0),
   240  //							},
   241  //						},
   242  //					},
   243  //				},
   244  //			})
   245  //			if err != nil {
   246  //				return err
   247  //			}
   248  //			return nil
   249  //		})
   250  //	}
   251  //
   252  // ```
   253  // <!--End PulumiCodeChooser -->
   254  //
   255  // ## Import
   256  //
   257  // Using `pulumi import`, import pipes using the `name`. For example:
   258  //
   259  // ```sh
   260  // $ pulumi import aws:pipes/pipe:Pipe example my-pipe
   261  // ```
   262  type Pipe struct {
   263  	pulumi.CustomResourceState
   264  
   265  	// The ARN of the Amazon SQS queue specified as the target for the dead-letter queue.
   266  	Arn pulumi.StringOutput `pulumi:"arn"`
   267  	// A description of the pipe. At most 512 characters.
   268  	Description pulumi.StringPtrOutput `pulumi:"description"`
   269  	// The state the pipe should be in. One of: `RUNNING`, `STOPPED`.
   270  	DesiredState pulumi.StringPtrOutput `pulumi:"desiredState"`
   271  	// Enrichment resource of the pipe (typically an ARN). Read more about enrichment in the [User Guide](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html#pipes-enrichment).
   272  	Enrichment pulumi.StringPtrOutput `pulumi:"enrichment"`
   273  	// Parameters to configure enrichment for your pipe. Detailed below.
   274  	EnrichmentParameters PipeEnrichmentParametersPtrOutput `pulumi:"enrichmentParameters"`
   275  	// Name of the pipe. If omitted, the provider will assign a random, unique name. Conflicts with `namePrefix`.
   276  	Name pulumi.StringOutput `pulumi:"name"`
   277  	// Creates a unique name beginning with the specified prefix. Conflicts with `name`.
   278  	NamePrefix pulumi.StringOutput `pulumi:"namePrefix"`
   279  	// ARN of the role that allows the pipe to send data to the target.
   280  	RoleArn pulumi.StringOutput `pulumi:"roleArn"`
   281  	// Source resource of the pipe (typically an ARN).
   282  	Source pulumi.StringOutput `pulumi:"source"`
   283  	// Parameters to configure a source for the pipe. Detailed below.
   284  	SourceParameters PipeSourceParametersOutput `pulumi:"sourceParameters"`
   285  	// Key-value mapping of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   286  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   287  	// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   288  	//
   289  	// Deprecated: Please use `tags` instead.
   290  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   291  	// Target resource of the pipe (typically an ARN).
   292  	//
   293  	// The following arguments are optional:
   294  	Target pulumi.StringOutput `pulumi:"target"`
   295  	// Parameters to configure a target for your pipe. Detailed below.
   296  	TargetParameters PipeTargetParametersPtrOutput `pulumi:"targetParameters"`
   297  }
   298  
   299  // NewPipe registers a new resource with the given unique name, arguments, and options.
   300  func NewPipe(ctx *pulumi.Context,
   301  	name string, args *PipeArgs, opts ...pulumi.ResourceOption) (*Pipe, error) {
   302  	if args == nil {
   303  		return nil, errors.New("missing one or more required arguments")
   304  	}
   305  
   306  	if args.RoleArn == nil {
   307  		return nil, errors.New("invalid value for required argument 'RoleArn'")
   308  	}
   309  	if args.Source == nil {
   310  		return nil, errors.New("invalid value for required argument 'Source'")
   311  	}
   312  	if args.Target == nil {
   313  		return nil, errors.New("invalid value for required argument 'Target'")
   314  	}
   315  	opts = internal.PkgResourceDefaultOpts(opts)
   316  	var resource Pipe
   317  	err := ctx.RegisterResource("aws:pipes/pipe:Pipe", name, args, &resource, opts...)
   318  	if err != nil {
   319  		return nil, err
   320  	}
   321  	return &resource, nil
   322  }
   323  
   324  // GetPipe gets an existing Pipe resource's state with the given name, ID, and optional
   325  // state properties that are used to uniquely qualify the lookup (nil if not required).
   326  func GetPipe(ctx *pulumi.Context,
   327  	name string, id pulumi.IDInput, state *PipeState, opts ...pulumi.ResourceOption) (*Pipe, error) {
   328  	var resource Pipe
   329  	err := ctx.ReadResource("aws:pipes/pipe:Pipe", name, id, state, &resource, opts...)
   330  	if err != nil {
   331  		return nil, err
   332  	}
   333  	return &resource, nil
   334  }
   335  
   336  // Input properties used for looking up and filtering Pipe resources.
   337  type pipeState struct {
   338  	// The ARN of the Amazon SQS queue specified as the target for the dead-letter queue.
   339  	Arn *string `pulumi:"arn"`
   340  	// A description of the pipe. At most 512 characters.
   341  	Description *string `pulumi:"description"`
   342  	// The state the pipe should be in. One of: `RUNNING`, `STOPPED`.
   343  	DesiredState *string `pulumi:"desiredState"`
   344  	// Enrichment resource of the pipe (typically an ARN). Read more about enrichment in the [User Guide](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html#pipes-enrichment).
   345  	Enrichment *string `pulumi:"enrichment"`
   346  	// Parameters to configure enrichment for your pipe. Detailed below.
   347  	EnrichmentParameters *PipeEnrichmentParameters `pulumi:"enrichmentParameters"`
   348  	// Name of the pipe. If omitted, the provider will assign a random, unique name. Conflicts with `namePrefix`.
   349  	Name *string `pulumi:"name"`
   350  	// Creates a unique name beginning with the specified prefix. Conflicts with `name`.
   351  	NamePrefix *string `pulumi:"namePrefix"`
   352  	// ARN of the role that allows the pipe to send data to the target.
   353  	RoleArn *string `pulumi:"roleArn"`
   354  	// Source resource of the pipe (typically an ARN).
   355  	Source *string `pulumi:"source"`
   356  	// Parameters to configure a source for the pipe. Detailed below.
   357  	SourceParameters *PipeSourceParameters `pulumi:"sourceParameters"`
   358  	// Key-value mapping of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   359  	Tags map[string]string `pulumi:"tags"`
   360  	// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   361  	//
   362  	// Deprecated: Please use `tags` instead.
   363  	TagsAll map[string]string `pulumi:"tagsAll"`
   364  	// Target resource of the pipe (typically an ARN).
   365  	//
   366  	// The following arguments are optional:
   367  	Target *string `pulumi:"target"`
   368  	// Parameters to configure a target for your pipe. Detailed below.
   369  	TargetParameters *PipeTargetParameters `pulumi:"targetParameters"`
   370  }
   371  
   372  type PipeState struct {
   373  	// The ARN of the Amazon SQS queue specified as the target for the dead-letter queue.
   374  	Arn pulumi.StringPtrInput
   375  	// A description of the pipe. At most 512 characters.
   376  	Description pulumi.StringPtrInput
   377  	// The state the pipe should be in. One of: `RUNNING`, `STOPPED`.
   378  	DesiredState pulumi.StringPtrInput
   379  	// Enrichment resource of the pipe (typically an ARN). Read more about enrichment in the [User Guide](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html#pipes-enrichment).
   380  	Enrichment pulumi.StringPtrInput
   381  	// Parameters to configure enrichment for your pipe. Detailed below.
   382  	EnrichmentParameters PipeEnrichmentParametersPtrInput
   383  	// Name of the pipe. If omitted, the provider will assign a random, unique name. Conflicts with `namePrefix`.
   384  	Name pulumi.StringPtrInput
   385  	// Creates a unique name beginning with the specified prefix. Conflicts with `name`.
   386  	NamePrefix pulumi.StringPtrInput
   387  	// ARN of the role that allows the pipe to send data to the target.
   388  	RoleArn pulumi.StringPtrInput
   389  	// Source resource of the pipe (typically an ARN).
   390  	Source pulumi.StringPtrInput
   391  	// Parameters to configure a source for the pipe. Detailed below.
   392  	SourceParameters PipeSourceParametersPtrInput
   393  	// Key-value mapping of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   394  	Tags pulumi.StringMapInput
   395  	// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   396  	//
   397  	// Deprecated: Please use `tags` instead.
   398  	TagsAll pulumi.StringMapInput
   399  	// Target resource of the pipe (typically an ARN).
   400  	//
   401  	// The following arguments are optional:
   402  	Target pulumi.StringPtrInput
   403  	// Parameters to configure a target for your pipe. Detailed below.
   404  	TargetParameters PipeTargetParametersPtrInput
   405  }
   406  
   407  func (PipeState) ElementType() reflect.Type {
   408  	return reflect.TypeOf((*pipeState)(nil)).Elem()
   409  }
   410  
   411  type pipeArgs struct {
   412  	// A description of the pipe. At most 512 characters.
   413  	Description *string `pulumi:"description"`
   414  	// The state the pipe should be in. One of: `RUNNING`, `STOPPED`.
   415  	DesiredState *string `pulumi:"desiredState"`
   416  	// Enrichment resource of the pipe (typically an ARN). Read more about enrichment in the [User Guide](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html#pipes-enrichment).
   417  	Enrichment *string `pulumi:"enrichment"`
   418  	// Parameters to configure enrichment for your pipe. Detailed below.
   419  	EnrichmentParameters *PipeEnrichmentParameters `pulumi:"enrichmentParameters"`
   420  	// Name of the pipe. If omitted, the provider will assign a random, unique name. Conflicts with `namePrefix`.
   421  	Name *string `pulumi:"name"`
   422  	// Creates a unique name beginning with the specified prefix. Conflicts with `name`.
   423  	NamePrefix *string `pulumi:"namePrefix"`
   424  	// ARN of the role that allows the pipe to send data to the target.
   425  	RoleArn string `pulumi:"roleArn"`
   426  	// Source resource of the pipe (typically an ARN).
   427  	Source string `pulumi:"source"`
   428  	// Parameters to configure a source for the pipe. Detailed below.
   429  	SourceParameters *PipeSourceParameters `pulumi:"sourceParameters"`
   430  	// Key-value mapping of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   431  	Tags map[string]string `pulumi:"tags"`
   432  	// Target resource of the pipe (typically an ARN).
   433  	//
   434  	// The following arguments are optional:
   435  	Target string `pulumi:"target"`
   436  	// Parameters to configure a target for your pipe. Detailed below.
   437  	TargetParameters *PipeTargetParameters `pulumi:"targetParameters"`
   438  }
   439  
   440  // The set of arguments for constructing a Pipe resource.
   441  type PipeArgs struct {
   442  	// A description of the pipe. At most 512 characters.
   443  	Description pulumi.StringPtrInput
   444  	// The state the pipe should be in. One of: `RUNNING`, `STOPPED`.
   445  	DesiredState pulumi.StringPtrInput
   446  	// Enrichment resource of the pipe (typically an ARN). Read more about enrichment in the [User Guide](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html#pipes-enrichment).
   447  	Enrichment pulumi.StringPtrInput
   448  	// Parameters to configure enrichment for your pipe. Detailed below.
   449  	EnrichmentParameters PipeEnrichmentParametersPtrInput
   450  	// Name of the pipe. If omitted, the provider will assign a random, unique name. Conflicts with `namePrefix`.
   451  	Name pulumi.StringPtrInput
   452  	// Creates a unique name beginning with the specified prefix. Conflicts with `name`.
   453  	NamePrefix pulumi.StringPtrInput
   454  	// ARN of the role that allows the pipe to send data to the target.
   455  	RoleArn pulumi.StringInput
   456  	// Source resource of the pipe (typically an ARN).
   457  	Source pulumi.StringInput
   458  	// Parameters to configure a source for the pipe. Detailed below.
   459  	SourceParameters PipeSourceParametersPtrInput
   460  	// Key-value mapping of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   461  	Tags pulumi.StringMapInput
   462  	// Target resource of the pipe (typically an ARN).
   463  	//
   464  	// The following arguments are optional:
   465  	Target pulumi.StringInput
   466  	// Parameters to configure a target for your pipe. Detailed below.
   467  	TargetParameters PipeTargetParametersPtrInput
   468  }
   469  
   470  func (PipeArgs) ElementType() reflect.Type {
   471  	return reflect.TypeOf((*pipeArgs)(nil)).Elem()
   472  }
   473  
   474  type PipeInput interface {
   475  	pulumi.Input
   476  
   477  	ToPipeOutput() PipeOutput
   478  	ToPipeOutputWithContext(ctx context.Context) PipeOutput
   479  }
   480  
   481  func (*Pipe) ElementType() reflect.Type {
   482  	return reflect.TypeOf((**Pipe)(nil)).Elem()
   483  }
   484  
   485  func (i *Pipe) ToPipeOutput() PipeOutput {
   486  	return i.ToPipeOutputWithContext(context.Background())
   487  }
   488  
   489  func (i *Pipe) ToPipeOutputWithContext(ctx context.Context) PipeOutput {
   490  	return pulumi.ToOutputWithContext(ctx, i).(PipeOutput)
   491  }
   492  
   493  // PipeArrayInput is an input type that accepts PipeArray and PipeArrayOutput values.
   494  // You can construct a concrete instance of `PipeArrayInput` via:
   495  //
   496  //	PipeArray{ PipeArgs{...} }
   497  type PipeArrayInput interface {
   498  	pulumi.Input
   499  
   500  	ToPipeArrayOutput() PipeArrayOutput
   501  	ToPipeArrayOutputWithContext(context.Context) PipeArrayOutput
   502  }
   503  
   504  type PipeArray []PipeInput
   505  
   506  func (PipeArray) ElementType() reflect.Type {
   507  	return reflect.TypeOf((*[]*Pipe)(nil)).Elem()
   508  }
   509  
   510  func (i PipeArray) ToPipeArrayOutput() PipeArrayOutput {
   511  	return i.ToPipeArrayOutputWithContext(context.Background())
   512  }
   513  
   514  func (i PipeArray) ToPipeArrayOutputWithContext(ctx context.Context) PipeArrayOutput {
   515  	return pulumi.ToOutputWithContext(ctx, i).(PipeArrayOutput)
   516  }
   517  
   518  // PipeMapInput is an input type that accepts PipeMap and PipeMapOutput values.
   519  // You can construct a concrete instance of `PipeMapInput` via:
   520  //
   521  //	PipeMap{ "key": PipeArgs{...} }
   522  type PipeMapInput interface {
   523  	pulumi.Input
   524  
   525  	ToPipeMapOutput() PipeMapOutput
   526  	ToPipeMapOutputWithContext(context.Context) PipeMapOutput
   527  }
   528  
   529  type PipeMap map[string]PipeInput
   530  
   531  func (PipeMap) ElementType() reflect.Type {
   532  	return reflect.TypeOf((*map[string]*Pipe)(nil)).Elem()
   533  }
   534  
   535  func (i PipeMap) ToPipeMapOutput() PipeMapOutput {
   536  	return i.ToPipeMapOutputWithContext(context.Background())
   537  }
   538  
   539  func (i PipeMap) ToPipeMapOutputWithContext(ctx context.Context) PipeMapOutput {
   540  	return pulumi.ToOutputWithContext(ctx, i).(PipeMapOutput)
   541  }
   542  
   543  type PipeOutput struct{ *pulumi.OutputState }
   544  
   545  func (PipeOutput) ElementType() reflect.Type {
   546  	return reflect.TypeOf((**Pipe)(nil)).Elem()
   547  }
   548  
   549  func (o PipeOutput) ToPipeOutput() PipeOutput {
   550  	return o
   551  }
   552  
   553  func (o PipeOutput) ToPipeOutputWithContext(ctx context.Context) PipeOutput {
   554  	return o
   555  }
   556  
   557  // The ARN of the Amazon SQS queue specified as the target for the dead-letter queue.
   558  func (o PipeOutput) Arn() pulumi.StringOutput {
   559  	return o.ApplyT(func(v *Pipe) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   560  }
   561  
   562  // A description of the pipe. At most 512 characters.
   563  func (o PipeOutput) Description() pulumi.StringPtrOutput {
   564  	return o.ApplyT(func(v *Pipe) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
   565  }
   566  
   567  // The state the pipe should be in. One of: `RUNNING`, `STOPPED`.
   568  func (o PipeOutput) DesiredState() pulumi.StringPtrOutput {
   569  	return o.ApplyT(func(v *Pipe) pulumi.StringPtrOutput { return v.DesiredState }).(pulumi.StringPtrOutput)
   570  }
   571  
   572  // Enrichment resource of the pipe (typically an ARN). Read more about enrichment in the [User Guide](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html#pipes-enrichment).
   573  func (o PipeOutput) Enrichment() pulumi.StringPtrOutput {
   574  	return o.ApplyT(func(v *Pipe) pulumi.StringPtrOutput { return v.Enrichment }).(pulumi.StringPtrOutput)
   575  }
   576  
   577  // Parameters to configure enrichment for your pipe. Detailed below.
   578  func (o PipeOutput) EnrichmentParameters() PipeEnrichmentParametersPtrOutput {
   579  	return o.ApplyT(func(v *Pipe) PipeEnrichmentParametersPtrOutput { return v.EnrichmentParameters }).(PipeEnrichmentParametersPtrOutput)
   580  }
   581  
   582  // Name of the pipe. If omitted, the provider will assign a random, unique name. Conflicts with `namePrefix`.
   583  func (o PipeOutput) Name() pulumi.StringOutput {
   584  	return o.ApplyT(func(v *Pipe) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
   585  }
   586  
   587  // Creates a unique name beginning with the specified prefix. Conflicts with `name`.
   588  func (o PipeOutput) NamePrefix() pulumi.StringOutput {
   589  	return o.ApplyT(func(v *Pipe) pulumi.StringOutput { return v.NamePrefix }).(pulumi.StringOutput)
   590  }
   591  
   592  // ARN of the role that allows the pipe to send data to the target.
   593  func (o PipeOutput) RoleArn() pulumi.StringOutput {
   594  	return o.ApplyT(func(v *Pipe) pulumi.StringOutput { return v.RoleArn }).(pulumi.StringOutput)
   595  }
   596  
   597  // Source resource of the pipe (typically an ARN).
   598  func (o PipeOutput) Source() pulumi.StringOutput {
   599  	return o.ApplyT(func(v *Pipe) pulumi.StringOutput { return v.Source }).(pulumi.StringOutput)
   600  }
   601  
   602  // Parameters to configure a source for the pipe. Detailed below.
   603  func (o PipeOutput) SourceParameters() PipeSourceParametersOutput {
   604  	return o.ApplyT(func(v *Pipe) PipeSourceParametersOutput { return v.SourceParameters }).(PipeSourceParametersOutput)
   605  }
   606  
   607  // Key-value mapping of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   608  func (o PipeOutput) Tags() pulumi.StringMapOutput {
   609  	return o.ApplyT(func(v *Pipe) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   610  }
   611  
   612  // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   613  //
   614  // Deprecated: Please use `tags` instead.
   615  func (o PipeOutput) TagsAll() pulumi.StringMapOutput {
   616  	return o.ApplyT(func(v *Pipe) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   617  }
   618  
   619  // Target resource of the pipe (typically an ARN).
   620  //
   621  // The following arguments are optional:
   622  func (o PipeOutput) Target() pulumi.StringOutput {
   623  	return o.ApplyT(func(v *Pipe) pulumi.StringOutput { return v.Target }).(pulumi.StringOutput)
   624  }
   625  
   626  // Parameters to configure a target for your pipe. Detailed below.
   627  func (o PipeOutput) TargetParameters() PipeTargetParametersPtrOutput {
   628  	return o.ApplyT(func(v *Pipe) PipeTargetParametersPtrOutput { return v.TargetParameters }).(PipeTargetParametersPtrOutput)
   629  }
   630  
   631  type PipeArrayOutput struct{ *pulumi.OutputState }
   632  
   633  func (PipeArrayOutput) ElementType() reflect.Type {
   634  	return reflect.TypeOf((*[]*Pipe)(nil)).Elem()
   635  }
   636  
   637  func (o PipeArrayOutput) ToPipeArrayOutput() PipeArrayOutput {
   638  	return o
   639  }
   640  
   641  func (o PipeArrayOutput) ToPipeArrayOutputWithContext(ctx context.Context) PipeArrayOutput {
   642  	return o
   643  }
   644  
   645  func (o PipeArrayOutput) Index(i pulumi.IntInput) PipeOutput {
   646  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Pipe {
   647  		return vs[0].([]*Pipe)[vs[1].(int)]
   648  	}).(PipeOutput)
   649  }
   650  
   651  type PipeMapOutput struct{ *pulumi.OutputState }
   652  
   653  func (PipeMapOutput) ElementType() reflect.Type {
   654  	return reflect.TypeOf((*map[string]*Pipe)(nil)).Elem()
   655  }
   656  
   657  func (o PipeMapOutput) ToPipeMapOutput() PipeMapOutput {
   658  	return o
   659  }
   660  
   661  func (o PipeMapOutput) ToPipeMapOutputWithContext(ctx context.Context) PipeMapOutput {
   662  	return o
   663  }
   664  
   665  func (o PipeMapOutput) MapIndex(k pulumi.StringInput) PipeOutput {
   666  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Pipe {
   667  		return vs[0].(map[string]*Pipe)[vs[1].(string)]
   668  	}).(PipeOutput)
   669  }
   670  
   671  func init() {
   672  	pulumi.RegisterInputType(reflect.TypeOf((*PipeInput)(nil)).Elem(), &Pipe{})
   673  	pulumi.RegisterInputType(reflect.TypeOf((*PipeArrayInput)(nil)).Elem(), PipeArray{})
   674  	pulumi.RegisterInputType(reflect.TypeOf((*PipeMapInput)(nil)).Elem(), PipeMap{})
   675  	pulumi.RegisterOutputType(PipeOutput{})
   676  	pulumi.RegisterOutputType(PipeArrayOutput{})
   677  	pulumi.RegisterOutputType(PipeMapOutput{})
   678  }