github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/getIpRanges.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  // Use this data source to get the IP ranges of various AWS products and services. For more information about the contents of this data source and required JSON syntax if referencing a custom URL, see the [AWS IP Address Ranges documentation](https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html).
    15  //
    16  // ## Example Usage
    17  //
    18  // <!--Start PulumiCodeChooser -->
    19  // ```go
    20  // package main
    21  //
    22  // import (
    23  //
    24  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws"
    25  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
    26  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    27  //
    28  // )
    29  //
    30  //	func main() {
    31  //		pulumi.Run(func(ctx *pulumi.Context) error {
    32  //			europeanEc2, err := aws.GetIpRanges(ctx, &aws.GetIpRangesArgs{
    33  //				Regions: []string{
    34  //					"eu-west-1",
    35  //					"eu-central-1",
    36  //				},
    37  //				Services: []string{
    38  //					"ec2",
    39  //				},
    40  //			}, nil)
    41  //			if err != nil {
    42  //				return err
    43  //			}
    44  //			_, err = ec2.NewSecurityGroup(ctx, "from_europe", &ec2.SecurityGroupArgs{
    45  //				Name: pulumi.String("from_europe"),
    46  //				Ingress: ec2.SecurityGroupIngressArray{
    47  //					&ec2.SecurityGroupIngressArgs{
    48  //						FromPort:       pulumi.Int(443),
    49  //						ToPort:         pulumi.Int(443),
    50  //						Protocol:       pulumi.String("tcp"),
    51  //						CidrBlocks:     interface{}(europeanEc2.CidrBlocks),
    52  //						Ipv6CidrBlocks: interface{}(europeanEc2.Ipv6CidrBlocks),
    53  //					},
    54  //				},
    55  //				Tags: pulumi.StringMap{
    56  //					"CreateDate": pulumi.String(europeanEc2.CreateDate),
    57  //					"SyncToken":  pulumi.Int(europeanEc2.SyncToken),
    58  //				},
    59  //			})
    60  //			if err != nil {
    61  //				return err
    62  //			}
    63  //			return nil
    64  //		})
    65  //	}
    66  //
    67  // ```
    68  // <!--End PulumiCodeChooser -->
    69  func GetIpRanges(ctx *pulumi.Context, args *GetIpRangesArgs, opts ...pulumi.InvokeOption) (*GetIpRangesResult, error) {
    70  	opts = internal.PkgInvokeDefaultOpts(opts)
    71  	var rv GetIpRangesResult
    72  	err := ctx.Invoke("aws:index/getIpRanges:getIpRanges", args, &rv, opts...)
    73  	if err != nil {
    74  		return nil, err
    75  	}
    76  	return &rv, nil
    77  }
    78  
    79  // A collection of arguments for invoking getIpRanges.
    80  type GetIpRangesArgs struct {
    81  	Id *string `pulumi:"id"`
    82  	// Filter IP ranges by regions (or include all regions, if
    83  	// omitted). Valid items are `global` (for `cloudfront`) as well as all AWS regions
    84  	// (e.g., `eu-central-1`)
    85  	Regions []string `pulumi:"regions"`
    86  	// Filter IP ranges by services. Valid items are `amazon`
    87  	// (for amazon.com), `amazonConnect`, `apiGateway`, `cloud9`, `cloudfront`,
    88  	// `codebuild`, `dynamodb`, `ec2`, `ec2InstanceConnect`, `globalaccelerator`,
    89  	// `route53`, `route53Healthchecks`, `s3` and `workspacesGateways`. See the
    90  	// [`service` attribute][2] documentation for other possible values.
    91  	//
    92  	// > **NOTE:** If the specified combination of regions and services does not yield any
    93  	// CIDR blocks, this call will fail.
    94  	Services []string `pulumi:"services"`
    95  	// Custom URL for source JSON file. Syntax must match [AWS IP Address Ranges documentation](https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html). Defaults to `https://ip-ranges.amazonaws.com/ip-ranges.json`.
    96  	Url *string `pulumi:"url"`
    97  }
    98  
    99  // A collection of values returned by getIpRanges.
   100  type GetIpRangesResult struct {
   101  	// Lexically ordered list of CIDR blocks.
   102  	CidrBlocks []string `pulumi:"cidrBlocks"`
   103  	// Publication time of the IP ranges (e.g., `2016-08-03-23-46-05`).
   104  	CreateDate string `pulumi:"createDate"`
   105  	Id         string `pulumi:"id"`
   106  	// Lexically ordered list of IPv6 CIDR blocks.
   107  	Ipv6CidrBlocks []string `pulumi:"ipv6CidrBlocks"`
   108  	Regions        []string `pulumi:"regions"`
   109  	Services       []string `pulumi:"services"`
   110  	// Publication time of the IP ranges, in Unix epoch time format
   111  	// (e.g., `1470267965`).
   112  	SyncToken int     `pulumi:"syncToken"`
   113  	Url       *string `pulumi:"url"`
   114  }
   115  
   116  func GetIpRangesOutput(ctx *pulumi.Context, args GetIpRangesOutputArgs, opts ...pulumi.InvokeOption) GetIpRangesResultOutput {
   117  	return pulumi.ToOutputWithContext(context.Background(), args).
   118  		ApplyT(func(v interface{}) (GetIpRangesResult, error) {
   119  			args := v.(GetIpRangesArgs)
   120  			r, err := GetIpRanges(ctx, &args, opts...)
   121  			var s GetIpRangesResult
   122  			if r != nil {
   123  				s = *r
   124  			}
   125  			return s, err
   126  		}).(GetIpRangesResultOutput)
   127  }
   128  
   129  // A collection of arguments for invoking getIpRanges.
   130  type GetIpRangesOutputArgs struct {
   131  	Id pulumi.StringPtrInput `pulumi:"id"`
   132  	// Filter IP ranges by regions (or include all regions, if
   133  	// omitted). Valid items are `global` (for `cloudfront`) as well as all AWS regions
   134  	// (e.g., `eu-central-1`)
   135  	Regions pulumi.StringArrayInput `pulumi:"regions"`
   136  	// Filter IP ranges by services. Valid items are `amazon`
   137  	// (for amazon.com), `amazonConnect`, `apiGateway`, `cloud9`, `cloudfront`,
   138  	// `codebuild`, `dynamodb`, `ec2`, `ec2InstanceConnect`, `globalaccelerator`,
   139  	// `route53`, `route53Healthchecks`, `s3` and `workspacesGateways`. See the
   140  	// [`service` attribute][2] documentation for other possible values.
   141  	//
   142  	// > **NOTE:** If the specified combination of regions and services does not yield any
   143  	// CIDR blocks, this call will fail.
   144  	Services pulumi.StringArrayInput `pulumi:"services"`
   145  	// Custom URL for source JSON file. Syntax must match [AWS IP Address Ranges documentation](https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html). Defaults to `https://ip-ranges.amazonaws.com/ip-ranges.json`.
   146  	Url pulumi.StringPtrInput `pulumi:"url"`
   147  }
   148  
   149  func (GetIpRangesOutputArgs) ElementType() reflect.Type {
   150  	return reflect.TypeOf((*GetIpRangesArgs)(nil)).Elem()
   151  }
   152  
   153  // A collection of values returned by getIpRanges.
   154  type GetIpRangesResultOutput struct{ *pulumi.OutputState }
   155  
   156  func (GetIpRangesResultOutput) ElementType() reflect.Type {
   157  	return reflect.TypeOf((*GetIpRangesResult)(nil)).Elem()
   158  }
   159  
   160  func (o GetIpRangesResultOutput) ToGetIpRangesResultOutput() GetIpRangesResultOutput {
   161  	return o
   162  }
   163  
   164  func (o GetIpRangesResultOutput) ToGetIpRangesResultOutputWithContext(ctx context.Context) GetIpRangesResultOutput {
   165  	return o
   166  }
   167  
   168  // Lexically ordered list of CIDR blocks.
   169  func (o GetIpRangesResultOutput) CidrBlocks() pulumi.StringArrayOutput {
   170  	return o.ApplyT(func(v GetIpRangesResult) []string { return v.CidrBlocks }).(pulumi.StringArrayOutput)
   171  }
   172  
   173  // Publication time of the IP ranges (e.g., `2016-08-03-23-46-05`).
   174  func (o GetIpRangesResultOutput) CreateDate() pulumi.StringOutput {
   175  	return o.ApplyT(func(v GetIpRangesResult) string { return v.CreateDate }).(pulumi.StringOutput)
   176  }
   177  
   178  func (o GetIpRangesResultOutput) Id() pulumi.StringOutput {
   179  	return o.ApplyT(func(v GetIpRangesResult) string { return v.Id }).(pulumi.StringOutput)
   180  }
   181  
   182  // Lexically ordered list of IPv6 CIDR blocks.
   183  func (o GetIpRangesResultOutput) Ipv6CidrBlocks() pulumi.StringArrayOutput {
   184  	return o.ApplyT(func(v GetIpRangesResult) []string { return v.Ipv6CidrBlocks }).(pulumi.StringArrayOutput)
   185  }
   186  
   187  func (o GetIpRangesResultOutput) Regions() pulumi.StringArrayOutput {
   188  	return o.ApplyT(func(v GetIpRangesResult) []string { return v.Regions }).(pulumi.StringArrayOutput)
   189  }
   190  
   191  func (o GetIpRangesResultOutput) Services() pulumi.StringArrayOutput {
   192  	return o.ApplyT(func(v GetIpRangesResult) []string { return v.Services }).(pulumi.StringArrayOutput)
   193  }
   194  
   195  // Publication time of the IP ranges, in Unix epoch time format
   196  // (e.g., `1470267965`).
   197  func (o GetIpRangesResultOutput) SyncToken() pulumi.IntOutput {
   198  	return o.ApplyT(func(v GetIpRangesResult) int { return v.SyncToken }).(pulumi.IntOutput)
   199  }
   200  
   201  func (o GetIpRangesResultOutput) Url() pulumi.StringPtrOutput {
   202  	return o.ApplyT(func(v GetIpRangesResult) *string { return v.Url }).(pulumi.StringPtrOutput)
   203  }
   204  
   205  func init() {
   206  	pulumi.RegisterOutputType(GetIpRangesResultOutput{})
   207  }