github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/ec2/defaultNetworkAcl.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 a resource to manage a VPC's default network ACL. This resource can manage the default network ACL of the default or a non-default VPC.
    16  //
    17  // > **NOTE:** This is an advanced resource with special caveats. Please read this document in its entirety before using this resource. The `ec2.DefaultNetworkAcl` behaves differently from normal resources. This provider does not _create_ this resource but instead attempts to "adopt" it into management.
    18  //
    19  // Every VPC has a default network ACL that can be managed but not destroyed. When the provider first adopts the Default Network ACL, it **immediately removes all rules in the ACL**. It then proceeds to create any rules specified in the configuration. This step is required so that only the rules specified in the configuration are created.
    20  //
    21  // This resource treats its inline rules as absolute; only the rules defined inline are created, and any additions/removals external to this resource will result in diffs being shown. For these reasons, this resource is incompatible with the `ec2.NetworkAclRule` resource.
    22  //
    23  // For more information about Network ACLs, see the AWS Documentation on [Network ACLs][aws-network-acls].
    24  //
    25  // ## Example Usage
    26  //
    27  // ### Basic Example
    28  //
    29  // The following config gives the Default Network ACL the same rules that AWS includes but pulls the resource under management by this provider. This means that any ACL rules added or changed will be detected as drift.
    30  //
    31  // <!--Start PulumiCodeChooser -->
    32  // ```go
    33  // package main
    34  //
    35  // import (
    36  //
    37  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
    38  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    39  //
    40  // )
    41  //
    42  //	func main() {
    43  //		pulumi.Run(func(ctx *pulumi.Context) error {
    44  //			mainvpc, err := ec2.NewVpc(ctx, "mainvpc", &ec2.VpcArgs{
    45  //				CidrBlock: pulumi.String("10.1.0.0/16"),
    46  //			})
    47  //			if err != nil {
    48  //				return err
    49  //			}
    50  //			_, err = ec2.NewDefaultNetworkAcl(ctx, "default", &ec2.DefaultNetworkAclArgs{
    51  //				DefaultNetworkAclId: mainvpc.DefaultNetworkAclId,
    52  //				Ingress: ec2.DefaultNetworkAclIngressArray{
    53  //					&ec2.DefaultNetworkAclIngressArgs{
    54  //						Protocol:  pulumi.String("-1"),
    55  //						RuleNo:    pulumi.Int(100),
    56  //						Action:    pulumi.String("allow"),
    57  //						CidrBlock: pulumi.String("0.0.0.0/0"),
    58  //						FromPort:  pulumi.Int(0),
    59  //						ToPort:    pulumi.Int(0),
    60  //					},
    61  //				},
    62  //				Egress: ec2.DefaultNetworkAclEgressArray{
    63  //					&ec2.DefaultNetworkAclEgressArgs{
    64  //						Protocol:  pulumi.String("-1"),
    65  //						RuleNo:    pulumi.Int(100),
    66  //						Action:    pulumi.String("allow"),
    67  //						CidrBlock: pulumi.String("0.0.0.0/0"),
    68  //						FromPort:  pulumi.Int(0),
    69  //						ToPort:    pulumi.Int(0),
    70  //					},
    71  //				},
    72  //			})
    73  //			if err != nil {
    74  //				return err
    75  //			}
    76  //			return nil
    77  //		})
    78  //	}
    79  //
    80  // ```
    81  // <!--End PulumiCodeChooser -->
    82  //
    83  // ### Example: Deny All Egress Traffic, Allow Ingress
    84  //
    85  // The following denies all Egress traffic by omitting any `egress` rules, while including the default `ingress` rule to allow all traffic.
    86  //
    87  // <!--Start PulumiCodeChooser -->
    88  // ```go
    89  // package main
    90  //
    91  // import (
    92  //
    93  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
    94  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    95  //
    96  // )
    97  //
    98  //	func main() {
    99  //		pulumi.Run(func(ctx *pulumi.Context) error {
   100  //			mainvpc, err := ec2.NewVpc(ctx, "mainvpc", &ec2.VpcArgs{
   101  //				CidrBlock: pulumi.String("10.1.0.0/16"),
   102  //			})
   103  //			if err != nil {
   104  //				return err
   105  //			}
   106  //			_, err = ec2.NewDefaultNetworkAcl(ctx, "default", &ec2.DefaultNetworkAclArgs{
   107  //				DefaultNetworkAclId: mainvpc.DefaultNetworkAclId,
   108  //				Ingress: ec2.DefaultNetworkAclIngressArray{
   109  //					&ec2.DefaultNetworkAclIngressArgs{
   110  //						Protocol:  pulumi.String("-1"),
   111  //						RuleNo:    pulumi.Int(100),
   112  //						Action:    pulumi.String("allow"),
   113  //						CidrBlock: pulumi.Any(mainvpcAwsDefaultVpc.CidrBlock),
   114  //						FromPort:  pulumi.Int(0),
   115  //						ToPort:    pulumi.Int(0),
   116  //					},
   117  //				},
   118  //			})
   119  //			if err != nil {
   120  //				return err
   121  //			}
   122  //			return nil
   123  //		})
   124  //	}
   125  //
   126  // ```
   127  // <!--End PulumiCodeChooser -->
   128  //
   129  // ### Example: Deny All Traffic To Any Subnet In The Default Network ACL
   130  //
   131  // This config denies all traffic in the Default ACL. This can be useful if you want to lock down the VPC to force all resources to assign a non-default ACL.
   132  //
   133  // <!--Start PulumiCodeChooser -->
   134  // ```go
   135  // package main
   136  //
   137  // import (
   138  //
   139  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
   140  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   141  //
   142  // )
   143  //
   144  //	func main() {
   145  //		pulumi.Run(func(ctx *pulumi.Context) error {
   146  //			mainvpc, err := ec2.NewVpc(ctx, "mainvpc", &ec2.VpcArgs{
   147  //				CidrBlock: pulumi.String("10.1.0.0/16"),
   148  //			})
   149  //			if err != nil {
   150  //				return err
   151  //			}
   152  //			_, err = ec2.NewDefaultNetworkAcl(ctx, "default", &ec2.DefaultNetworkAclArgs{
   153  //				DefaultNetworkAclId: mainvpc.DefaultNetworkAclId,
   154  //			})
   155  //			if err != nil {
   156  //				return err
   157  //			}
   158  //			return nil
   159  //		})
   160  //	}
   161  //
   162  // ```
   163  // <!--End PulumiCodeChooser -->
   164  //
   165  // ### Managing Subnets In A Default Network ACL
   166  //
   167  // Within a VPC, all Subnets must be associated with a Network ACL. In order to "delete" the association between a Subnet and a non-default Network ACL, the association is destroyed by replacing it with an association between the Subnet and the Default ACL instead.
   168  //
   169  // When managing the Default Network ACL, you cannot "remove" Subnets. Instead, they must be reassigned to another Network ACL, or the Subnet itself must be destroyed. Because of these requirements, removing the `subnetIds` attribute from the configuration of a `ec2.DefaultNetworkAcl` resource may result in a reoccurring plan, until the Subnets are reassigned to another Network ACL or are destroyed.
   170  //
   171  // Because Subnets are by default associated with the Default Network ACL, any non-explicit association will show up as a plan to remove the Subnet. For example: if you have a custom `ec2.NetworkAcl` with two subnets attached, and you remove the `ec2.NetworkAcl` resource, after successfully destroying this resource future plans will show a diff on the managed `ec2.DefaultNetworkAcl`, as those two Subnets have been orphaned by the now destroyed network acl and thus adopted by the Default Network ACL. In order to avoid a reoccurring plan, they will need to be reassigned, destroyed, or added to the `subnetIds` attribute of the `ec2.DefaultNetworkAcl` entry.
   172  //
   173  // As an alternative to the above, you can also specify the following lifecycle configuration in your `ec2.DefaultNetworkAcl` resource:
   174  //
   175  // <!--Start PulumiCodeChooser -->
   176  // ```go
   177  // package main
   178  //
   179  // import (
   180  //
   181  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
   182  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   183  //
   184  // )
   185  //
   186  //	func main() {
   187  //		pulumi.Run(func(ctx *pulumi.Context) error {
   188  //			_, err := ec2.NewDefaultNetworkAcl(ctx, "default", nil)
   189  //			if err != nil {
   190  //				return err
   191  //			}
   192  //			return nil
   193  //		})
   194  //	}
   195  //
   196  // ```
   197  // <!--End PulumiCodeChooser -->
   198  //
   199  // ### Removing `ec2.DefaultNetworkAcl` From Your Configuration
   200  //
   201  // Each AWS VPC comes with a Default Network ACL that cannot be deleted. The `ec2.DefaultNetworkAcl` allows you to manage this Network ACL, but the provider cannot destroy it. Removing this resource from your configuration will remove it from your statefile and management, **but will not destroy the Network ACL.** All Subnets associations and ingress or egress rules will be left as they are at the time of removal. You can resume managing them via the AWS Console.
   202  //
   203  // ## Import
   204  //
   205  // Using `pulumi import`, import Default Network ACLs using the `id`. For example:
   206  //
   207  // ```sh
   208  // $ pulumi import aws:ec2/defaultNetworkAcl:DefaultNetworkAcl sample acl-7aaabd18
   209  // ```
   210  type DefaultNetworkAcl struct {
   211  	pulumi.CustomResourceState
   212  
   213  	// ARN of the Default Network ACL
   214  	Arn pulumi.StringOutput `pulumi:"arn"`
   215  	// Network ACL ID to manage. This attribute is exported from `ec2.Vpc`, or manually found via the AWS Console.
   216  	//
   217  	// The following arguments are optional:
   218  	DefaultNetworkAclId pulumi.StringOutput `pulumi:"defaultNetworkAclId"`
   219  	// Configuration block for an egress rule. Detailed below.
   220  	Egress DefaultNetworkAclEgressArrayOutput `pulumi:"egress"`
   221  	// Configuration block for an ingress rule. Detailed below.
   222  	Ingress DefaultNetworkAclIngressArrayOutput `pulumi:"ingress"`
   223  	// ID of the AWS account that owns the Default Network ACL
   224  	OwnerId pulumi.StringOutput `pulumi:"ownerId"`
   225  	// List of Subnet IDs to apply the ACL to. See the notes above on Managing Subnets in the Default Network ACL
   226  	SubnetIds pulumi.StringArrayOutput `pulumi:"subnetIds"`
   227  	// 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.
   228  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   229  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   230  	//
   231  	// Deprecated: Please use `tags` instead.
   232  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   233  	// ID of the associated VPC
   234  	VpcId pulumi.StringOutput `pulumi:"vpcId"`
   235  }
   236  
   237  // NewDefaultNetworkAcl registers a new resource with the given unique name, arguments, and options.
   238  func NewDefaultNetworkAcl(ctx *pulumi.Context,
   239  	name string, args *DefaultNetworkAclArgs, opts ...pulumi.ResourceOption) (*DefaultNetworkAcl, error) {
   240  	if args == nil {
   241  		return nil, errors.New("missing one or more required arguments")
   242  	}
   243  
   244  	if args.DefaultNetworkAclId == nil {
   245  		return nil, errors.New("invalid value for required argument 'DefaultNetworkAclId'")
   246  	}
   247  	opts = internal.PkgResourceDefaultOpts(opts)
   248  	var resource DefaultNetworkAcl
   249  	err := ctx.RegisterResource("aws:ec2/defaultNetworkAcl:DefaultNetworkAcl", name, args, &resource, opts...)
   250  	if err != nil {
   251  		return nil, err
   252  	}
   253  	return &resource, nil
   254  }
   255  
   256  // GetDefaultNetworkAcl gets an existing DefaultNetworkAcl resource's state with the given name, ID, and optional
   257  // state properties that are used to uniquely qualify the lookup (nil if not required).
   258  func GetDefaultNetworkAcl(ctx *pulumi.Context,
   259  	name string, id pulumi.IDInput, state *DefaultNetworkAclState, opts ...pulumi.ResourceOption) (*DefaultNetworkAcl, error) {
   260  	var resource DefaultNetworkAcl
   261  	err := ctx.ReadResource("aws:ec2/defaultNetworkAcl:DefaultNetworkAcl", name, id, state, &resource, opts...)
   262  	if err != nil {
   263  		return nil, err
   264  	}
   265  	return &resource, nil
   266  }
   267  
   268  // Input properties used for looking up and filtering DefaultNetworkAcl resources.
   269  type defaultNetworkAclState struct {
   270  	// ARN of the Default Network ACL
   271  	Arn *string `pulumi:"arn"`
   272  	// Network ACL ID to manage. This attribute is exported from `ec2.Vpc`, or manually found via the AWS Console.
   273  	//
   274  	// The following arguments are optional:
   275  	DefaultNetworkAclId *string `pulumi:"defaultNetworkAclId"`
   276  	// Configuration block for an egress rule. Detailed below.
   277  	Egress []DefaultNetworkAclEgress `pulumi:"egress"`
   278  	// Configuration block for an ingress rule. Detailed below.
   279  	Ingress []DefaultNetworkAclIngress `pulumi:"ingress"`
   280  	// ID of the AWS account that owns the Default Network ACL
   281  	OwnerId *string `pulumi:"ownerId"`
   282  	// List of Subnet IDs to apply the ACL to. See the notes above on Managing Subnets in the Default Network ACL
   283  	SubnetIds []string `pulumi:"subnetIds"`
   284  	// 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.
   285  	Tags map[string]string `pulumi:"tags"`
   286  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   287  	//
   288  	// Deprecated: Please use `tags` instead.
   289  	TagsAll map[string]string `pulumi:"tagsAll"`
   290  	// ID of the associated VPC
   291  	VpcId *string `pulumi:"vpcId"`
   292  }
   293  
   294  type DefaultNetworkAclState struct {
   295  	// ARN of the Default Network ACL
   296  	Arn pulumi.StringPtrInput
   297  	// Network ACL ID to manage. This attribute is exported from `ec2.Vpc`, or manually found via the AWS Console.
   298  	//
   299  	// The following arguments are optional:
   300  	DefaultNetworkAclId pulumi.StringPtrInput
   301  	// Configuration block for an egress rule. Detailed below.
   302  	Egress DefaultNetworkAclEgressArrayInput
   303  	// Configuration block for an ingress rule. Detailed below.
   304  	Ingress DefaultNetworkAclIngressArrayInput
   305  	// ID of the AWS account that owns the Default Network ACL
   306  	OwnerId pulumi.StringPtrInput
   307  	// List of Subnet IDs to apply the ACL to. See the notes above on Managing Subnets in the Default Network ACL
   308  	SubnetIds pulumi.StringArrayInput
   309  	// 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.
   310  	Tags pulumi.StringMapInput
   311  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   312  	//
   313  	// Deprecated: Please use `tags` instead.
   314  	TagsAll pulumi.StringMapInput
   315  	// ID of the associated VPC
   316  	VpcId pulumi.StringPtrInput
   317  }
   318  
   319  func (DefaultNetworkAclState) ElementType() reflect.Type {
   320  	return reflect.TypeOf((*defaultNetworkAclState)(nil)).Elem()
   321  }
   322  
   323  type defaultNetworkAclArgs struct {
   324  	// Network ACL ID to manage. This attribute is exported from `ec2.Vpc`, or manually found via the AWS Console.
   325  	//
   326  	// The following arguments are optional:
   327  	DefaultNetworkAclId string `pulumi:"defaultNetworkAclId"`
   328  	// Configuration block for an egress rule. Detailed below.
   329  	Egress []DefaultNetworkAclEgress `pulumi:"egress"`
   330  	// Configuration block for an ingress rule. Detailed below.
   331  	Ingress []DefaultNetworkAclIngress `pulumi:"ingress"`
   332  	// List of Subnet IDs to apply the ACL to. See the notes above on Managing Subnets in the Default Network ACL
   333  	SubnetIds []string `pulumi:"subnetIds"`
   334  	// 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.
   335  	Tags map[string]string `pulumi:"tags"`
   336  }
   337  
   338  // The set of arguments for constructing a DefaultNetworkAcl resource.
   339  type DefaultNetworkAclArgs struct {
   340  	// Network ACL ID to manage. This attribute is exported from `ec2.Vpc`, or manually found via the AWS Console.
   341  	//
   342  	// The following arguments are optional:
   343  	DefaultNetworkAclId pulumi.StringInput
   344  	// Configuration block for an egress rule. Detailed below.
   345  	Egress DefaultNetworkAclEgressArrayInput
   346  	// Configuration block for an ingress rule. Detailed below.
   347  	Ingress DefaultNetworkAclIngressArrayInput
   348  	// List of Subnet IDs to apply the ACL to. See the notes above on Managing Subnets in the Default Network ACL
   349  	SubnetIds pulumi.StringArrayInput
   350  	// 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.
   351  	Tags pulumi.StringMapInput
   352  }
   353  
   354  func (DefaultNetworkAclArgs) ElementType() reflect.Type {
   355  	return reflect.TypeOf((*defaultNetworkAclArgs)(nil)).Elem()
   356  }
   357  
   358  type DefaultNetworkAclInput interface {
   359  	pulumi.Input
   360  
   361  	ToDefaultNetworkAclOutput() DefaultNetworkAclOutput
   362  	ToDefaultNetworkAclOutputWithContext(ctx context.Context) DefaultNetworkAclOutput
   363  }
   364  
   365  func (*DefaultNetworkAcl) ElementType() reflect.Type {
   366  	return reflect.TypeOf((**DefaultNetworkAcl)(nil)).Elem()
   367  }
   368  
   369  func (i *DefaultNetworkAcl) ToDefaultNetworkAclOutput() DefaultNetworkAclOutput {
   370  	return i.ToDefaultNetworkAclOutputWithContext(context.Background())
   371  }
   372  
   373  func (i *DefaultNetworkAcl) ToDefaultNetworkAclOutputWithContext(ctx context.Context) DefaultNetworkAclOutput {
   374  	return pulumi.ToOutputWithContext(ctx, i).(DefaultNetworkAclOutput)
   375  }
   376  
   377  // DefaultNetworkAclArrayInput is an input type that accepts DefaultNetworkAclArray and DefaultNetworkAclArrayOutput values.
   378  // You can construct a concrete instance of `DefaultNetworkAclArrayInput` via:
   379  //
   380  //	DefaultNetworkAclArray{ DefaultNetworkAclArgs{...} }
   381  type DefaultNetworkAclArrayInput interface {
   382  	pulumi.Input
   383  
   384  	ToDefaultNetworkAclArrayOutput() DefaultNetworkAclArrayOutput
   385  	ToDefaultNetworkAclArrayOutputWithContext(context.Context) DefaultNetworkAclArrayOutput
   386  }
   387  
   388  type DefaultNetworkAclArray []DefaultNetworkAclInput
   389  
   390  func (DefaultNetworkAclArray) ElementType() reflect.Type {
   391  	return reflect.TypeOf((*[]*DefaultNetworkAcl)(nil)).Elem()
   392  }
   393  
   394  func (i DefaultNetworkAclArray) ToDefaultNetworkAclArrayOutput() DefaultNetworkAclArrayOutput {
   395  	return i.ToDefaultNetworkAclArrayOutputWithContext(context.Background())
   396  }
   397  
   398  func (i DefaultNetworkAclArray) ToDefaultNetworkAclArrayOutputWithContext(ctx context.Context) DefaultNetworkAclArrayOutput {
   399  	return pulumi.ToOutputWithContext(ctx, i).(DefaultNetworkAclArrayOutput)
   400  }
   401  
   402  // DefaultNetworkAclMapInput is an input type that accepts DefaultNetworkAclMap and DefaultNetworkAclMapOutput values.
   403  // You can construct a concrete instance of `DefaultNetworkAclMapInput` via:
   404  //
   405  //	DefaultNetworkAclMap{ "key": DefaultNetworkAclArgs{...} }
   406  type DefaultNetworkAclMapInput interface {
   407  	pulumi.Input
   408  
   409  	ToDefaultNetworkAclMapOutput() DefaultNetworkAclMapOutput
   410  	ToDefaultNetworkAclMapOutputWithContext(context.Context) DefaultNetworkAclMapOutput
   411  }
   412  
   413  type DefaultNetworkAclMap map[string]DefaultNetworkAclInput
   414  
   415  func (DefaultNetworkAclMap) ElementType() reflect.Type {
   416  	return reflect.TypeOf((*map[string]*DefaultNetworkAcl)(nil)).Elem()
   417  }
   418  
   419  func (i DefaultNetworkAclMap) ToDefaultNetworkAclMapOutput() DefaultNetworkAclMapOutput {
   420  	return i.ToDefaultNetworkAclMapOutputWithContext(context.Background())
   421  }
   422  
   423  func (i DefaultNetworkAclMap) ToDefaultNetworkAclMapOutputWithContext(ctx context.Context) DefaultNetworkAclMapOutput {
   424  	return pulumi.ToOutputWithContext(ctx, i).(DefaultNetworkAclMapOutput)
   425  }
   426  
   427  type DefaultNetworkAclOutput struct{ *pulumi.OutputState }
   428  
   429  func (DefaultNetworkAclOutput) ElementType() reflect.Type {
   430  	return reflect.TypeOf((**DefaultNetworkAcl)(nil)).Elem()
   431  }
   432  
   433  func (o DefaultNetworkAclOutput) ToDefaultNetworkAclOutput() DefaultNetworkAclOutput {
   434  	return o
   435  }
   436  
   437  func (o DefaultNetworkAclOutput) ToDefaultNetworkAclOutputWithContext(ctx context.Context) DefaultNetworkAclOutput {
   438  	return o
   439  }
   440  
   441  // ARN of the Default Network ACL
   442  func (o DefaultNetworkAclOutput) Arn() pulumi.StringOutput {
   443  	return o.ApplyT(func(v *DefaultNetworkAcl) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   444  }
   445  
   446  // Network ACL ID to manage. This attribute is exported from `ec2.Vpc`, or manually found via the AWS Console.
   447  //
   448  // The following arguments are optional:
   449  func (o DefaultNetworkAclOutput) DefaultNetworkAclId() pulumi.StringOutput {
   450  	return o.ApplyT(func(v *DefaultNetworkAcl) pulumi.StringOutput { return v.DefaultNetworkAclId }).(pulumi.StringOutput)
   451  }
   452  
   453  // Configuration block for an egress rule. Detailed below.
   454  func (o DefaultNetworkAclOutput) Egress() DefaultNetworkAclEgressArrayOutput {
   455  	return o.ApplyT(func(v *DefaultNetworkAcl) DefaultNetworkAclEgressArrayOutput { return v.Egress }).(DefaultNetworkAclEgressArrayOutput)
   456  }
   457  
   458  // Configuration block for an ingress rule. Detailed below.
   459  func (o DefaultNetworkAclOutput) Ingress() DefaultNetworkAclIngressArrayOutput {
   460  	return o.ApplyT(func(v *DefaultNetworkAcl) DefaultNetworkAclIngressArrayOutput { return v.Ingress }).(DefaultNetworkAclIngressArrayOutput)
   461  }
   462  
   463  // ID of the AWS account that owns the Default Network ACL
   464  func (o DefaultNetworkAclOutput) OwnerId() pulumi.StringOutput {
   465  	return o.ApplyT(func(v *DefaultNetworkAcl) pulumi.StringOutput { return v.OwnerId }).(pulumi.StringOutput)
   466  }
   467  
   468  // List of Subnet IDs to apply the ACL to. See the notes above on Managing Subnets in the Default Network ACL
   469  func (o DefaultNetworkAclOutput) SubnetIds() pulumi.StringArrayOutput {
   470  	return o.ApplyT(func(v *DefaultNetworkAcl) pulumi.StringArrayOutput { return v.SubnetIds }).(pulumi.StringArrayOutput)
   471  }
   472  
   473  // 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.
   474  func (o DefaultNetworkAclOutput) Tags() pulumi.StringMapOutput {
   475  	return o.ApplyT(func(v *DefaultNetworkAcl) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   476  }
   477  
   478  // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   479  //
   480  // Deprecated: Please use `tags` instead.
   481  func (o DefaultNetworkAclOutput) TagsAll() pulumi.StringMapOutput {
   482  	return o.ApplyT(func(v *DefaultNetworkAcl) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   483  }
   484  
   485  // ID of the associated VPC
   486  func (o DefaultNetworkAclOutput) VpcId() pulumi.StringOutput {
   487  	return o.ApplyT(func(v *DefaultNetworkAcl) pulumi.StringOutput { return v.VpcId }).(pulumi.StringOutput)
   488  }
   489  
   490  type DefaultNetworkAclArrayOutput struct{ *pulumi.OutputState }
   491  
   492  func (DefaultNetworkAclArrayOutput) ElementType() reflect.Type {
   493  	return reflect.TypeOf((*[]*DefaultNetworkAcl)(nil)).Elem()
   494  }
   495  
   496  func (o DefaultNetworkAclArrayOutput) ToDefaultNetworkAclArrayOutput() DefaultNetworkAclArrayOutput {
   497  	return o
   498  }
   499  
   500  func (o DefaultNetworkAclArrayOutput) ToDefaultNetworkAclArrayOutputWithContext(ctx context.Context) DefaultNetworkAclArrayOutput {
   501  	return o
   502  }
   503  
   504  func (o DefaultNetworkAclArrayOutput) Index(i pulumi.IntInput) DefaultNetworkAclOutput {
   505  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *DefaultNetworkAcl {
   506  		return vs[0].([]*DefaultNetworkAcl)[vs[1].(int)]
   507  	}).(DefaultNetworkAclOutput)
   508  }
   509  
   510  type DefaultNetworkAclMapOutput struct{ *pulumi.OutputState }
   511  
   512  func (DefaultNetworkAclMapOutput) ElementType() reflect.Type {
   513  	return reflect.TypeOf((*map[string]*DefaultNetworkAcl)(nil)).Elem()
   514  }
   515  
   516  func (o DefaultNetworkAclMapOutput) ToDefaultNetworkAclMapOutput() DefaultNetworkAclMapOutput {
   517  	return o
   518  }
   519  
   520  func (o DefaultNetworkAclMapOutput) ToDefaultNetworkAclMapOutputWithContext(ctx context.Context) DefaultNetworkAclMapOutput {
   521  	return o
   522  }
   523  
   524  func (o DefaultNetworkAclMapOutput) MapIndex(k pulumi.StringInput) DefaultNetworkAclOutput {
   525  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *DefaultNetworkAcl {
   526  		return vs[0].(map[string]*DefaultNetworkAcl)[vs[1].(string)]
   527  	}).(DefaultNetworkAclOutput)
   528  }
   529  
   530  func init() {
   531  	pulumi.RegisterInputType(reflect.TypeOf((*DefaultNetworkAclInput)(nil)).Elem(), &DefaultNetworkAcl{})
   532  	pulumi.RegisterInputType(reflect.TypeOf((*DefaultNetworkAclArrayInput)(nil)).Elem(), DefaultNetworkAclArray{})
   533  	pulumi.RegisterInputType(reflect.TypeOf((*DefaultNetworkAclMapInput)(nil)).Elem(), DefaultNetworkAclMap{})
   534  	pulumi.RegisterOutputType(DefaultNetworkAclOutput{})
   535  	pulumi.RegisterOutputType(DefaultNetworkAclArrayOutput{})
   536  	pulumi.RegisterOutputType(DefaultNetworkAclMapOutput{})
   537  }