github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/ec2/trafficMirrorSession.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 ec2
     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 an Traffic mirror session.\
    16  // Read [limits and considerations](https://docs.aws.amazon.com/vpc/latest/mirroring/traffic-mirroring-considerations.html) for traffic mirroring
    17  //
    18  // ## Example Usage
    19  //
    20  // # To create a basic traffic mirror session
    21  //
    22  // <!--Start PulumiCodeChooser -->
    23  // ```go
    24  // package main
    25  //
    26  // import (
    27  //
    28  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
    29  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    30  //
    31  // )
    32  //
    33  //	func main() {
    34  //		pulumi.Run(func(ctx *pulumi.Context) error {
    35  //			filter, err := ec2.NewTrafficMirrorFilter(ctx, "filter", &ec2.TrafficMirrorFilterArgs{
    36  //				Description: pulumi.String("traffic mirror filter - example"),
    37  //				NetworkServices: pulumi.StringArray{
    38  //					pulumi.String("amazon-dns"),
    39  //				},
    40  //			})
    41  //			if err != nil {
    42  //				return err
    43  //			}
    44  //			target, err := ec2.NewTrafficMirrorTarget(ctx, "target", &ec2.TrafficMirrorTargetArgs{
    45  //				NetworkLoadBalancerArn: pulumi.Any(lb.Arn),
    46  //			})
    47  //			if err != nil {
    48  //				return err
    49  //			}
    50  //			_, err = ec2.NewTrafficMirrorSession(ctx, "session", &ec2.TrafficMirrorSessionArgs{
    51  //				Description:           pulumi.String("traffic mirror session - example"),
    52  //				NetworkInterfaceId:    pulumi.Any(test.PrimaryNetworkInterfaceId),
    53  //				SessionNumber:         pulumi.Int(1),
    54  //				TrafficMirrorFilterId: filter.ID(),
    55  //				TrafficMirrorTargetId: target.ID(),
    56  //			})
    57  //			if err != nil {
    58  //				return err
    59  //			}
    60  //			return nil
    61  //		})
    62  //	}
    63  //
    64  // ```
    65  // <!--End PulumiCodeChooser -->
    66  //
    67  // ## Import
    68  //
    69  // Using `pulumi import`, import traffic mirror sessions using the `id`. For example:
    70  //
    71  // ```sh
    72  // $ pulumi import aws:ec2/trafficMirrorSession:TrafficMirrorSession session tms-0d8aa3ca35897b82e
    73  // ```
    74  type TrafficMirrorSession struct {
    75  	pulumi.CustomResourceState
    76  
    77  	// The ARN of the traffic mirror session.
    78  	Arn pulumi.StringOutput `pulumi:"arn"`
    79  	// A description of the traffic mirror session.
    80  	Description pulumi.StringPtrOutput `pulumi:"description"`
    81  	// ID of the source network interface. Not all network interfaces are eligible as mirror sources. On EC2 instances only nitro based instances support mirroring.
    82  	NetworkInterfaceId pulumi.StringOutput `pulumi:"networkInterfaceId"`
    83  	// The AWS account ID of the session owner.
    84  	OwnerId pulumi.StringOutput `pulumi:"ownerId"`
    85  	// The number of bytes in each packet to mirror. These are bytes after the VXLAN header. Do not specify this parameter when you want to mirror the entire packet. To mirror a subset of the packet, set this to the length (in bytes) that you want to mirror.
    86  	PacketLength pulumi.IntPtrOutput `pulumi:"packetLength"`
    87  	// The session number determines the order in which sessions are evaluated when an interface is used by multiple sessions. The first session with a matching filter is the one that mirrors the packets.
    88  	SessionNumber pulumi.IntOutput `pulumi:"sessionNumber"`
    89  	// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    90  	Tags pulumi.StringMapOutput `pulumi:"tags"`
    91  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
    92  	//
    93  	// Deprecated: Please use `tags` instead.
    94  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
    95  	// ID of the traffic mirror filter to be used
    96  	TrafficMirrorFilterId pulumi.StringOutput `pulumi:"trafficMirrorFilterId"`
    97  	// ID of the traffic mirror target to be used
    98  	TrafficMirrorTargetId pulumi.StringOutput `pulumi:"trafficMirrorTargetId"`
    99  	// The VXLAN ID for the Traffic Mirror session. For more information about the VXLAN protocol, see RFC 7348. If you do not specify a VirtualNetworkId, an account-wide unique id is chosen at random.
   100  	VirtualNetworkId pulumi.IntOutput `pulumi:"virtualNetworkId"`
   101  }
   102  
   103  // NewTrafficMirrorSession registers a new resource with the given unique name, arguments, and options.
   104  func NewTrafficMirrorSession(ctx *pulumi.Context,
   105  	name string, args *TrafficMirrorSessionArgs, opts ...pulumi.ResourceOption) (*TrafficMirrorSession, error) {
   106  	if args == nil {
   107  		return nil, errors.New("missing one or more required arguments")
   108  	}
   109  
   110  	if args.NetworkInterfaceId == nil {
   111  		return nil, errors.New("invalid value for required argument 'NetworkInterfaceId'")
   112  	}
   113  	if args.SessionNumber == nil {
   114  		return nil, errors.New("invalid value for required argument 'SessionNumber'")
   115  	}
   116  	if args.TrafficMirrorFilterId == nil {
   117  		return nil, errors.New("invalid value for required argument 'TrafficMirrorFilterId'")
   118  	}
   119  	if args.TrafficMirrorTargetId == nil {
   120  		return nil, errors.New("invalid value for required argument 'TrafficMirrorTargetId'")
   121  	}
   122  	opts = internal.PkgResourceDefaultOpts(opts)
   123  	var resource TrafficMirrorSession
   124  	err := ctx.RegisterResource("aws:ec2/trafficMirrorSession:TrafficMirrorSession", name, args, &resource, opts...)
   125  	if err != nil {
   126  		return nil, err
   127  	}
   128  	return &resource, nil
   129  }
   130  
   131  // GetTrafficMirrorSession gets an existing TrafficMirrorSession resource's state with the given name, ID, and optional
   132  // state properties that are used to uniquely qualify the lookup (nil if not required).
   133  func GetTrafficMirrorSession(ctx *pulumi.Context,
   134  	name string, id pulumi.IDInput, state *TrafficMirrorSessionState, opts ...pulumi.ResourceOption) (*TrafficMirrorSession, error) {
   135  	var resource TrafficMirrorSession
   136  	err := ctx.ReadResource("aws:ec2/trafficMirrorSession:TrafficMirrorSession", name, id, state, &resource, opts...)
   137  	if err != nil {
   138  		return nil, err
   139  	}
   140  	return &resource, nil
   141  }
   142  
   143  // Input properties used for looking up and filtering TrafficMirrorSession resources.
   144  type trafficMirrorSessionState struct {
   145  	// The ARN of the traffic mirror session.
   146  	Arn *string `pulumi:"arn"`
   147  	// A description of the traffic mirror session.
   148  	Description *string `pulumi:"description"`
   149  	// ID of the source network interface. Not all network interfaces are eligible as mirror sources. On EC2 instances only nitro based instances support mirroring.
   150  	NetworkInterfaceId *string `pulumi:"networkInterfaceId"`
   151  	// The AWS account ID of the session owner.
   152  	OwnerId *string `pulumi:"ownerId"`
   153  	// The number of bytes in each packet to mirror. These are bytes after the VXLAN header. Do not specify this parameter when you want to mirror the entire packet. To mirror a subset of the packet, set this to the length (in bytes) that you want to mirror.
   154  	PacketLength *int `pulumi:"packetLength"`
   155  	// The session number determines the order in which sessions are evaluated when an interface is used by multiple sessions. The first session with a matching filter is the one that mirrors the packets.
   156  	SessionNumber *int `pulumi:"sessionNumber"`
   157  	// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   158  	Tags map[string]string `pulumi:"tags"`
   159  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   160  	//
   161  	// Deprecated: Please use `tags` instead.
   162  	TagsAll map[string]string `pulumi:"tagsAll"`
   163  	// ID of the traffic mirror filter to be used
   164  	TrafficMirrorFilterId *string `pulumi:"trafficMirrorFilterId"`
   165  	// ID of the traffic mirror target to be used
   166  	TrafficMirrorTargetId *string `pulumi:"trafficMirrorTargetId"`
   167  	// The VXLAN ID for the Traffic Mirror session. For more information about the VXLAN protocol, see RFC 7348. If you do not specify a VirtualNetworkId, an account-wide unique id is chosen at random.
   168  	VirtualNetworkId *int `pulumi:"virtualNetworkId"`
   169  }
   170  
   171  type TrafficMirrorSessionState struct {
   172  	// The ARN of the traffic mirror session.
   173  	Arn pulumi.StringPtrInput
   174  	// A description of the traffic mirror session.
   175  	Description pulumi.StringPtrInput
   176  	// ID of the source network interface. Not all network interfaces are eligible as mirror sources. On EC2 instances only nitro based instances support mirroring.
   177  	NetworkInterfaceId pulumi.StringPtrInput
   178  	// The AWS account ID of the session owner.
   179  	OwnerId pulumi.StringPtrInput
   180  	// The number of bytes in each packet to mirror. These are bytes after the VXLAN header. Do not specify this parameter when you want to mirror the entire packet. To mirror a subset of the packet, set this to the length (in bytes) that you want to mirror.
   181  	PacketLength pulumi.IntPtrInput
   182  	// The session number determines the order in which sessions are evaluated when an interface is used by multiple sessions. The first session with a matching filter is the one that mirrors the packets.
   183  	SessionNumber pulumi.IntPtrInput
   184  	// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   185  	Tags pulumi.StringMapInput
   186  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   187  	//
   188  	// Deprecated: Please use `tags` instead.
   189  	TagsAll pulumi.StringMapInput
   190  	// ID of the traffic mirror filter to be used
   191  	TrafficMirrorFilterId pulumi.StringPtrInput
   192  	// ID of the traffic mirror target to be used
   193  	TrafficMirrorTargetId pulumi.StringPtrInput
   194  	// The VXLAN ID for the Traffic Mirror session. For more information about the VXLAN protocol, see RFC 7348. If you do not specify a VirtualNetworkId, an account-wide unique id is chosen at random.
   195  	VirtualNetworkId pulumi.IntPtrInput
   196  }
   197  
   198  func (TrafficMirrorSessionState) ElementType() reflect.Type {
   199  	return reflect.TypeOf((*trafficMirrorSessionState)(nil)).Elem()
   200  }
   201  
   202  type trafficMirrorSessionArgs struct {
   203  	// A description of the traffic mirror session.
   204  	Description *string `pulumi:"description"`
   205  	// ID of the source network interface. Not all network interfaces are eligible as mirror sources. On EC2 instances only nitro based instances support mirroring.
   206  	NetworkInterfaceId string `pulumi:"networkInterfaceId"`
   207  	// The number of bytes in each packet to mirror. These are bytes after the VXLAN header. Do not specify this parameter when you want to mirror the entire packet. To mirror a subset of the packet, set this to the length (in bytes) that you want to mirror.
   208  	PacketLength *int `pulumi:"packetLength"`
   209  	// The session number determines the order in which sessions are evaluated when an interface is used by multiple sessions. The first session with a matching filter is the one that mirrors the packets.
   210  	SessionNumber int `pulumi:"sessionNumber"`
   211  	// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   212  	Tags map[string]string `pulumi:"tags"`
   213  	// ID of the traffic mirror filter to be used
   214  	TrafficMirrorFilterId string `pulumi:"trafficMirrorFilterId"`
   215  	// ID of the traffic mirror target to be used
   216  	TrafficMirrorTargetId string `pulumi:"trafficMirrorTargetId"`
   217  	// The VXLAN ID for the Traffic Mirror session. For more information about the VXLAN protocol, see RFC 7348. If you do not specify a VirtualNetworkId, an account-wide unique id is chosen at random.
   218  	VirtualNetworkId *int `pulumi:"virtualNetworkId"`
   219  }
   220  
   221  // The set of arguments for constructing a TrafficMirrorSession resource.
   222  type TrafficMirrorSessionArgs struct {
   223  	// A description of the traffic mirror session.
   224  	Description pulumi.StringPtrInput
   225  	// ID of the source network interface. Not all network interfaces are eligible as mirror sources. On EC2 instances only nitro based instances support mirroring.
   226  	NetworkInterfaceId pulumi.StringInput
   227  	// The number of bytes in each packet to mirror. These are bytes after the VXLAN header. Do not specify this parameter when you want to mirror the entire packet. To mirror a subset of the packet, set this to the length (in bytes) that you want to mirror.
   228  	PacketLength pulumi.IntPtrInput
   229  	// The session number determines the order in which sessions are evaluated when an interface is used by multiple sessions. The first session with a matching filter is the one that mirrors the packets.
   230  	SessionNumber pulumi.IntInput
   231  	// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   232  	Tags pulumi.StringMapInput
   233  	// ID of the traffic mirror filter to be used
   234  	TrafficMirrorFilterId pulumi.StringInput
   235  	// ID of the traffic mirror target to be used
   236  	TrafficMirrorTargetId pulumi.StringInput
   237  	// The VXLAN ID for the Traffic Mirror session. For more information about the VXLAN protocol, see RFC 7348. If you do not specify a VirtualNetworkId, an account-wide unique id is chosen at random.
   238  	VirtualNetworkId pulumi.IntPtrInput
   239  }
   240  
   241  func (TrafficMirrorSessionArgs) ElementType() reflect.Type {
   242  	return reflect.TypeOf((*trafficMirrorSessionArgs)(nil)).Elem()
   243  }
   244  
   245  type TrafficMirrorSessionInput interface {
   246  	pulumi.Input
   247  
   248  	ToTrafficMirrorSessionOutput() TrafficMirrorSessionOutput
   249  	ToTrafficMirrorSessionOutputWithContext(ctx context.Context) TrafficMirrorSessionOutput
   250  }
   251  
   252  func (*TrafficMirrorSession) ElementType() reflect.Type {
   253  	return reflect.TypeOf((**TrafficMirrorSession)(nil)).Elem()
   254  }
   255  
   256  func (i *TrafficMirrorSession) ToTrafficMirrorSessionOutput() TrafficMirrorSessionOutput {
   257  	return i.ToTrafficMirrorSessionOutputWithContext(context.Background())
   258  }
   259  
   260  func (i *TrafficMirrorSession) ToTrafficMirrorSessionOutputWithContext(ctx context.Context) TrafficMirrorSessionOutput {
   261  	return pulumi.ToOutputWithContext(ctx, i).(TrafficMirrorSessionOutput)
   262  }
   263  
   264  // TrafficMirrorSessionArrayInput is an input type that accepts TrafficMirrorSessionArray and TrafficMirrorSessionArrayOutput values.
   265  // You can construct a concrete instance of `TrafficMirrorSessionArrayInput` via:
   266  //
   267  //	TrafficMirrorSessionArray{ TrafficMirrorSessionArgs{...} }
   268  type TrafficMirrorSessionArrayInput interface {
   269  	pulumi.Input
   270  
   271  	ToTrafficMirrorSessionArrayOutput() TrafficMirrorSessionArrayOutput
   272  	ToTrafficMirrorSessionArrayOutputWithContext(context.Context) TrafficMirrorSessionArrayOutput
   273  }
   274  
   275  type TrafficMirrorSessionArray []TrafficMirrorSessionInput
   276  
   277  func (TrafficMirrorSessionArray) ElementType() reflect.Type {
   278  	return reflect.TypeOf((*[]*TrafficMirrorSession)(nil)).Elem()
   279  }
   280  
   281  func (i TrafficMirrorSessionArray) ToTrafficMirrorSessionArrayOutput() TrafficMirrorSessionArrayOutput {
   282  	return i.ToTrafficMirrorSessionArrayOutputWithContext(context.Background())
   283  }
   284  
   285  func (i TrafficMirrorSessionArray) ToTrafficMirrorSessionArrayOutputWithContext(ctx context.Context) TrafficMirrorSessionArrayOutput {
   286  	return pulumi.ToOutputWithContext(ctx, i).(TrafficMirrorSessionArrayOutput)
   287  }
   288  
   289  // TrafficMirrorSessionMapInput is an input type that accepts TrafficMirrorSessionMap and TrafficMirrorSessionMapOutput values.
   290  // You can construct a concrete instance of `TrafficMirrorSessionMapInput` via:
   291  //
   292  //	TrafficMirrorSessionMap{ "key": TrafficMirrorSessionArgs{...} }
   293  type TrafficMirrorSessionMapInput interface {
   294  	pulumi.Input
   295  
   296  	ToTrafficMirrorSessionMapOutput() TrafficMirrorSessionMapOutput
   297  	ToTrafficMirrorSessionMapOutputWithContext(context.Context) TrafficMirrorSessionMapOutput
   298  }
   299  
   300  type TrafficMirrorSessionMap map[string]TrafficMirrorSessionInput
   301  
   302  func (TrafficMirrorSessionMap) ElementType() reflect.Type {
   303  	return reflect.TypeOf((*map[string]*TrafficMirrorSession)(nil)).Elem()
   304  }
   305  
   306  func (i TrafficMirrorSessionMap) ToTrafficMirrorSessionMapOutput() TrafficMirrorSessionMapOutput {
   307  	return i.ToTrafficMirrorSessionMapOutputWithContext(context.Background())
   308  }
   309  
   310  func (i TrafficMirrorSessionMap) ToTrafficMirrorSessionMapOutputWithContext(ctx context.Context) TrafficMirrorSessionMapOutput {
   311  	return pulumi.ToOutputWithContext(ctx, i).(TrafficMirrorSessionMapOutput)
   312  }
   313  
   314  type TrafficMirrorSessionOutput struct{ *pulumi.OutputState }
   315  
   316  func (TrafficMirrorSessionOutput) ElementType() reflect.Type {
   317  	return reflect.TypeOf((**TrafficMirrorSession)(nil)).Elem()
   318  }
   319  
   320  func (o TrafficMirrorSessionOutput) ToTrafficMirrorSessionOutput() TrafficMirrorSessionOutput {
   321  	return o
   322  }
   323  
   324  func (o TrafficMirrorSessionOutput) ToTrafficMirrorSessionOutputWithContext(ctx context.Context) TrafficMirrorSessionOutput {
   325  	return o
   326  }
   327  
   328  // The ARN of the traffic mirror session.
   329  func (o TrafficMirrorSessionOutput) Arn() pulumi.StringOutput {
   330  	return o.ApplyT(func(v *TrafficMirrorSession) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   331  }
   332  
   333  // A description of the traffic mirror session.
   334  func (o TrafficMirrorSessionOutput) Description() pulumi.StringPtrOutput {
   335  	return o.ApplyT(func(v *TrafficMirrorSession) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
   336  }
   337  
   338  // ID of the source network interface. Not all network interfaces are eligible as mirror sources. On EC2 instances only nitro based instances support mirroring.
   339  func (o TrafficMirrorSessionOutput) NetworkInterfaceId() pulumi.StringOutput {
   340  	return o.ApplyT(func(v *TrafficMirrorSession) pulumi.StringOutput { return v.NetworkInterfaceId }).(pulumi.StringOutput)
   341  }
   342  
   343  // The AWS account ID of the session owner.
   344  func (o TrafficMirrorSessionOutput) OwnerId() pulumi.StringOutput {
   345  	return o.ApplyT(func(v *TrafficMirrorSession) pulumi.StringOutput { return v.OwnerId }).(pulumi.StringOutput)
   346  }
   347  
   348  // The number of bytes in each packet to mirror. These are bytes after the VXLAN header. Do not specify this parameter when you want to mirror the entire packet. To mirror a subset of the packet, set this to the length (in bytes) that you want to mirror.
   349  func (o TrafficMirrorSessionOutput) PacketLength() pulumi.IntPtrOutput {
   350  	return o.ApplyT(func(v *TrafficMirrorSession) pulumi.IntPtrOutput { return v.PacketLength }).(pulumi.IntPtrOutput)
   351  }
   352  
   353  // The session number determines the order in which sessions are evaluated when an interface is used by multiple sessions. The first session with a matching filter is the one that mirrors the packets.
   354  func (o TrafficMirrorSessionOutput) SessionNumber() pulumi.IntOutput {
   355  	return o.ApplyT(func(v *TrafficMirrorSession) pulumi.IntOutput { return v.SessionNumber }).(pulumi.IntOutput)
   356  }
   357  
   358  // Key-value map 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  func (o TrafficMirrorSessionOutput) Tags() pulumi.StringMapOutput {
   360  	return o.ApplyT(func(v *TrafficMirrorSession) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   361  }
   362  
   363  // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   364  //
   365  // Deprecated: Please use `tags` instead.
   366  func (o TrafficMirrorSessionOutput) TagsAll() pulumi.StringMapOutput {
   367  	return o.ApplyT(func(v *TrafficMirrorSession) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   368  }
   369  
   370  // ID of the traffic mirror filter to be used
   371  func (o TrafficMirrorSessionOutput) TrafficMirrorFilterId() pulumi.StringOutput {
   372  	return o.ApplyT(func(v *TrafficMirrorSession) pulumi.StringOutput { return v.TrafficMirrorFilterId }).(pulumi.StringOutput)
   373  }
   374  
   375  // ID of the traffic mirror target to be used
   376  func (o TrafficMirrorSessionOutput) TrafficMirrorTargetId() pulumi.StringOutput {
   377  	return o.ApplyT(func(v *TrafficMirrorSession) pulumi.StringOutput { return v.TrafficMirrorTargetId }).(pulumi.StringOutput)
   378  }
   379  
   380  // The VXLAN ID for the Traffic Mirror session. For more information about the VXLAN protocol, see RFC 7348. If you do not specify a VirtualNetworkId, an account-wide unique id is chosen at random.
   381  func (o TrafficMirrorSessionOutput) VirtualNetworkId() pulumi.IntOutput {
   382  	return o.ApplyT(func(v *TrafficMirrorSession) pulumi.IntOutput { return v.VirtualNetworkId }).(pulumi.IntOutput)
   383  }
   384  
   385  type TrafficMirrorSessionArrayOutput struct{ *pulumi.OutputState }
   386  
   387  func (TrafficMirrorSessionArrayOutput) ElementType() reflect.Type {
   388  	return reflect.TypeOf((*[]*TrafficMirrorSession)(nil)).Elem()
   389  }
   390  
   391  func (o TrafficMirrorSessionArrayOutput) ToTrafficMirrorSessionArrayOutput() TrafficMirrorSessionArrayOutput {
   392  	return o
   393  }
   394  
   395  func (o TrafficMirrorSessionArrayOutput) ToTrafficMirrorSessionArrayOutputWithContext(ctx context.Context) TrafficMirrorSessionArrayOutput {
   396  	return o
   397  }
   398  
   399  func (o TrafficMirrorSessionArrayOutput) Index(i pulumi.IntInput) TrafficMirrorSessionOutput {
   400  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *TrafficMirrorSession {
   401  		return vs[0].([]*TrafficMirrorSession)[vs[1].(int)]
   402  	}).(TrafficMirrorSessionOutput)
   403  }
   404  
   405  type TrafficMirrorSessionMapOutput struct{ *pulumi.OutputState }
   406  
   407  func (TrafficMirrorSessionMapOutput) ElementType() reflect.Type {
   408  	return reflect.TypeOf((*map[string]*TrafficMirrorSession)(nil)).Elem()
   409  }
   410  
   411  func (o TrafficMirrorSessionMapOutput) ToTrafficMirrorSessionMapOutput() TrafficMirrorSessionMapOutput {
   412  	return o
   413  }
   414  
   415  func (o TrafficMirrorSessionMapOutput) ToTrafficMirrorSessionMapOutputWithContext(ctx context.Context) TrafficMirrorSessionMapOutput {
   416  	return o
   417  }
   418  
   419  func (o TrafficMirrorSessionMapOutput) MapIndex(k pulumi.StringInput) TrafficMirrorSessionOutput {
   420  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *TrafficMirrorSession {
   421  		return vs[0].(map[string]*TrafficMirrorSession)[vs[1].(string)]
   422  	}).(TrafficMirrorSessionOutput)
   423  }
   424  
   425  func init() {
   426  	pulumi.RegisterInputType(reflect.TypeOf((*TrafficMirrorSessionInput)(nil)).Elem(), &TrafficMirrorSession{})
   427  	pulumi.RegisterInputType(reflect.TypeOf((*TrafficMirrorSessionArrayInput)(nil)).Elem(), TrafficMirrorSessionArray{})
   428  	pulumi.RegisterInputType(reflect.TypeOf((*TrafficMirrorSessionMapInput)(nil)).Elem(), TrafficMirrorSessionMap{})
   429  	pulumi.RegisterOutputType(TrafficMirrorSessionOutput{})
   430  	pulumi.RegisterOutputType(TrafficMirrorSessionArrayOutput{})
   431  	pulumi.RegisterOutputType(TrafficMirrorSessionMapOutput{})
   432  }