github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/getAvailabilityZones.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 aws
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    11  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    12  )
    13  
    14  // The Availability Zones data source allows access to the list of AWS
    15  // Availability Zones which can be accessed by an AWS account within the region
    16  // configured in the provider.
    17  //
    18  // This is different from the `getAvailabilityZone` (singular) data source,
    19  // which provides some details about a specific availability zone.
    20  //
    21  // > When [Local Zones](https://aws.amazon.com/about-aws/global-infrastructure/localzones/) are enabled in a region, by default the API and this data source include both Local Zones and Availability Zones. To return only Availability Zones, see the example section below.
    22  //
    23  // ## Example Usage
    24  //
    25  // ### By State
    26  //
    27  // <!--Start PulumiCodeChooser -->
    28  // ```go
    29  // package main
    30  //
    31  // import (
    32  //
    33  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws"
    34  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
    35  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    36  //
    37  // )
    38  //
    39  //	func main() {
    40  //		pulumi.Run(func(ctx *pulumi.Context) error {
    41  //			// Declare the data source
    42  //			available, err := aws.GetAvailabilityZones(ctx, &aws.GetAvailabilityZonesArgs{
    43  //				State: pulumi.StringRef("available"),
    44  //			}, nil)
    45  //			if err != nil {
    46  //				return err
    47  //			}
    48  //			// e.g., Create subnets in the first two available availability zones
    49  //			_, err = ec2.NewSubnet(ctx, "primary", &ec2.SubnetArgs{
    50  //				AvailabilityZone: pulumi.String(available.Names[0]),
    51  //			})
    52  //			if err != nil {
    53  //				return err
    54  //			}
    55  //			_, err = ec2.NewSubnet(ctx, "secondary", &ec2.SubnetArgs{
    56  //				AvailabilityZone: pulumi.String(available.Names[1]),
    57  //			})
    58  //			if err != nil {
    59  //				return err
    60  //			}
    61  //			return nil
    62  //		})
    63  //	}
    64  //
    65  // ```
    66  // <!--End PulumiCodeChooser -->
    67  //
    68  // ### By Filter
    69  //
    70  // All Local Zones (regardless of opt-in status):
    71  //
    72  // <!--Start PulumiCodeChooser -->
    73  // ```go
    74  // package main
    75  //
    76  // import (
    77  //
    78  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws"
    79  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    80  //
    81  // )
    82  //
    83  //	func main() {
    84  //		pulumi.Run(func(ctx *pulumi.Context) error {
    85  //			_, err := aws.GetAvailabilityZones(ctx, &aws.GetAvailabilityZonesArgs{
    86  //				AllAvailabilityZones: pulumi.BoolRef(true),
    87  //				Filters: []aws.GetAvailabilityZonesFilter{
    88  //					{
    89  //						Name: "opt-in-status",
    90  //						Values: []string{
    91  //							"not-opted-in",
    92  //							"opted-in",
    93  //						},
    94  //					},
    95  //				},
    96  //			}, nil)
    97  //			if err != nil {
    98  //				return err
    99  //			}
   100  //			return nil
   101  //		})
   102  //	}
   103  //
   104  // ```
   105  // <!--End PulumiCodeChooser -->
   106  //
   107  // Only Availability Zones (no Local Zones):
   108  //
   109  // <!--Start PulumiCodeChooser -->
   110  // ```go
   111  // package main
   112  //
   113  // import (
   114  //
   115  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws"
   116  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   117  //
   118  // )
   119  //
   120  //	func main() {
   121  //		pulumi.Run(func(ctx *pulumi.Context) error {
   122  //			_, err := aws.GetAvailabilityZones(ctx, &aws.GetAvailabilityZonesArgs{
   123  //				Filters: []aws.GetAvailabilityZonesFilter{
   124  //					{
   125  //						Name: "opt-in-status",
   126  //						Values: []string{
   127  //							"opt-in-not-required",
   128  //						},
   129  //					},
   130  //				},
   131  //			}, nil)
   132  //			if err != nil {
   133  //				return err
   134  //			}
   135  //			return nil
   136  //		})
   137  //	}
   138  //
   139  // ```
   140  // <!--End PulumiCodeChooser -->
   141  func GetAvailabilityZones(ctx *pulumi.Context, args *GetAvailabilityZonesArgs, opts ...pulumi.InvokeOption) (*GetAvailabilityZonesResult, error) {
   142  	opts = internal.PkgInvokeDefaultOpts(opts)
   143  	var rv GetAvailabilityZonesResult
   144  	err := ctx.Invoke("aws:index/getAvailabilityZones:getAvailabilityZones", args, &rv, opts...)
   145  	if err != nil {
   146  		return nil, err
   147  	}
   148  	return &rv, nil
   149  }
   150  
   151  // A collection of arguments for invoking getAvailabilityZones.
   152  type GetAvailabilityZonesArgs struct {
   153  	// Set to `true` to include all Availability Zones and Local Zones regardless of your opt in status.
   154  	AllAvailabilityZones *bool `pulumi:"allAvailabilityZones"`
   155  	// List of Availability Zone names to exclude.
   156  	ExcludeNames []string `pulumi:"excludeNames"`
   157  	// List of Availability Zone IDs to exclude.
   158  	ExcludeZoneIds []string `pulumi:"excludeZoneIds"`
   159  	// Configuration block(s) for filtering. Detailed below.
   160  	Filters []GetAvailabilityZonesFilter `pulumi:"filters"`
   161  	// Allows to filter list of Availability Zones based on their
   162  	// current state. Can be either `"available"`, `"information"`, `"impaired"` or
   163  	// `"unavailable"`. By default the list includes a complete set of Availability Zones
   164  	// to which the underlying AWS account has access, regardless of their state.
   165  	State *string `pulumi:"state"`
   166  }
   167  
   168  // A collection of values returned by getAvailabilityZones.
   169  type GetAvailabilityZonesResult struct {
   170  	AllAvailabilityZones *bool                        `pulumi:"allAvailabilityZones"`
   171  	ExcludeNames         []string                     `pulumi:"excludeNames"`
   172  	ExcludeZoneIds       []string                     `pulumi:"excludeZoneIds"`
   173  	Filters              []GetAvailabilityZonesFilter `pulumi:"filters"`
   174  	// A set of the Availability Zone Group names. For Availability Zones, this is the same value as the Region name. For Local Zones, the name of the associated group, for example `us-west-2-lax-1`.
   175  	GroupNames []string `pulumi:"groupNames"`
   176  	// The provider-assigned unique ID for this managed resource.
   177  	Id string `pulumi:"id"`
   178  	// List of the Availability Zone names available to the account.
   179  	Names []string `pulumi:"names"`
   180  	State *string  `pulumi:"state"`
   181  	// List of the Availability Zone IDs available to the account.
   182  	ZoneIds []string `pulumi:"zoneIds"`
   183  }
   184  
   185  func GetAvailabilityZonesOutput(ctx *pulumi.Context, args GetAvailabilityZonesOutputArgs, opts ...pulumi.InvokeOption) GetAvailabilityZonesResultOutput {
   186  	return pulumi.ToOutputWithContext(context.Background(), args).
   187  		ApplyT(func(v interface{}) (GetAvailabilityZonesResult, error) {
   188  			args := v.(GetAvailabilityZonesArgs)
   189  			r, err := GetAvailabilityZones(ctx, &args, opts...)
   190  			var s GetAvailabilityZonesResult
   191  			if r != nil {
   192  				s = *r
   193  			}
   194  			return s, err
   195  		}).(GetAvailabilityZonesResultOutput)
   196  }
   197  
   198  // A collection of arguments for invoking getAvailabilityZones.
   199  type GetAvailabilityZonesOutputArgs struct {
   200  	// Set to `true` to include all Availability Zones and Local Zones regardless of your opt in status.
   201  	AllAvailabilityZones pulumi.BoolPtrInput `pulumi:"allAvailabilityZones"`
   202  	// List of Availability Zone names to exclude.
   203  	ExcludeNames pulumi.StringArrayInput `pulumi:"excludeNames"`
   204  	// List of Availability Zone IDs to exclude.
   205  	ExcludeZoneIds pulumi.StringArrayInput `pulumi:"excludeZoneIds"`
   206  	// Configuration block(s) for filtering. Detailed below.
   207  	Filters GetAvailabilityZonesFilterArrayInput `pulumi:"filters"`
   208  	// Allows to filter list of Availability Zones based on their
   209  	// current state. Can be either `"available"`, `"information"`, `"impaired"` or
   210  	// `"unavailable"`. By default the list includes a complete set of Availability Zones
   211  	// to which the underlying AWS account has access, regardless of their state.
   212  	State pulumi.StringPtrInput `pulumi:"state"`
   213  }
   214  
   215  func (GetAvailabilityZonesOutputArgs) ElementType() reflect.Type {
   216  	return reflect.TypeOf((*GetAvailabilityZonesArgs)(nil)).Elem()
   217  }
   218  
   219  // A collection of values returned by getAvailabilityZones.
   220  type GetAvailabilityZonesResultOutput struct{ *pulumi.OutputState }
   221  
   222  func (GetAvailabilityZonesResultOutput) ElementType() reflect.Type {
   223  	return reflect.TypeOf((*GetAvailabilityZonesResult)(nil)).Elem()
   224  }
   225  
   226  func (o GetAvailabilityZonesResultOutput) ToGetAvailabilityZonesResultOutput() GetAvailabilityZonesResultOutput {
   227  	return o
   228  }
   229  
   230  func (o GetAvailabilityZonesResultOutput) ToGetAvailabilityZonesResultOutputWithContext(ctx context.Context) GetAvailabilityZonesResultOutput {
   231  	return o
   232  }
   233  
   234  func (o GetAvailabilityZonesResultOutput) AllAvailabilityZones() pulumi.BoolPtrOutput {
   235  	return o.ApplyT(func(v GetAvailabilityZonesResult) *bool { return v.AllAvailabilityZones }).(pulumi.BoolPtrOutput)
   236  }
   237  
   238  func (o GetAvailabilityZonesResultOutput) ExcludeNames() pulumi.StringArrayOutput {
   239  	return o.ApplyT(func(v GetAvailabilityZonesResult) []string { return v.ExcludeNames }).(pulumi.StringArrayOutput)
   240  }
   241  
   242  func (o GetAvailabilityZonesResultOutput) ExcludeZoneIds() pulumi.StringArrayOutput {
   243  	return o.ApplyT(func(v GetAvailabilityZonesResult) []string { return v.ExcludeZoneIds }).(pulumi.StringArrayOutput)
   244  }
   245  
   246  func (o GetAvailabilityZonesResultOutput) Filters() GetAvailabilityZonesFilterArrayOutput {
   247  	return o.ApplyT(func(v GetAvailabilityZonesResult) []GetAvailabilityZonesFilter { return v.Filters }).(GetAvailabilityZonesFilterArrayOutput)
   248  }
   249  
   250  // A set of the Availability Zone Group names. For Availability Zones, this is the same value as the Region name. For Local Zones, the name of the associated group, for example `us-west-2-lax-1`.
   251  func (o GetAvailabilityZonesResultOutput) GroupNames() pulumi.StringArrayOutput {
   252  	return o.ApplyT(func(v GetAvailabilityZonesResult) []string { return v.GroupNames }).(pulumi.StringArrayOutput)
   253  }
   254  
   255  // The provider-assigned unique ID for this managed resource.
   256  func (o GetAvailabilityZonesResultOutput) Id() pulumi.StringOutput {
   257  	return o.ApplyT(func(v GetAvailabilityZonesResult) string { return v.Id }).(pulumi.StringOutput)
   258  }
   259  
   260  // List of the Availability Zone names available to the account.
   261  func (o GetAvailabilityZonesResultOutput) Names() pulumi.StringArrayOutput {
   262  	return o.ApplyT(func(v GetAvailabilityZonesResult) []string { return v.Names }).(pulumi.StringArrayOutput)
   263  }
   264  
   265  func (o GetAvailabilityZonesResultOutput) State() pulumi.StringPtrOutput {
   266  	return o.ApplyT(func(v GetAvailabilityZonesResult) *string { return v.State }).(pulumi.StringPtrOutput)
   267  }
   268  
   269  // List of the Availability Zone IDs available to the account.
   270  func (o GetAvailabilityZonesResultOutput) ZoneIds() pulumi.StringArrayOutput {
   271  	return o.ApplyT(func(v GetAvailabilityZonesResult) []string { return v.ZoneIds }).(pulumi.StringArrayOutput)
   272  }
   273  
   274  func init() {
   275  	pulumi.RegisterOutputType(GetAvailabilityZonesResultOutput{})
   276  }