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 }