github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/route53/trafficPolicy.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 route53
     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  // Manages a Route53 Traffic Policy.
    16  //
    17  // ## Example Usage
    18  //
    19  // <!--Start PulumiCodeChooser -->
    20  // ```go
    21  // package main
    22  //
    23  // import (
    24  //
    25  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/route53"
    26  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    27  //
    28  // )
    29  //
    30  //	func main() {
    31  //		pulumi.Run(func(ctx *pulumi.Context) error {
    32  //			_, err := route53.NewTrafficPolicy(ctx, "example", &route53.TrafficPolicyArgs{
    33  //				Name:    pulumi.String("example"),
    34  //				Comment: pulumi.String("example comment"),
    35  //				Document: pulumi.String(`{
    36  //	  "AWSPolicyFormatVersion": "2015-10-01",
    37  //	  "RecordType": "A",
    38  //	  "Endpoints": {
    39  //	    "endpoint-start-NkPh": {
    40  //	      "Type": "value",
    41  //	      "Value": "10.0.0.2"
    42  //	    }
    43  //	  },
    44  //	  "StartEndpoint": "endpoint-start-NkPh"
    45  //	}
    46  //
    47  // `),
    48  //
    49  //			})
    50  //			if err != nil {
    51  //				return err
    52  //			}
    53  //			return nil
    54  //		})
    55  //	}
    56  //
    57  // ```
    58  // <!--End PulumiCodeChooser -->
    59  //
    60  // ## Import
    61  //
    62  // Using `pulumi import`, import Route53 Traffic Policy using the `id` and `version`. For example:
    63  //
    64  // ```sh
    65  // $ pulumi import aws:route53/trafficPolicy:TrafficPolicy example 01a52019-d16f-422a-ae72-c306d2b6df7e/1
    66  // ```
    67  type TrafficPolicy struct {
    68  	pulumi.CustomResourceState
    69  
    70  	// Comment for the traffic policy.
    71  	Comment pulumi.StringPtrOutput `pulumi:"comment"`
    72  	// Policy document. This is a JSON formatted string. For more information about building Route53 traffic policy documents, see the [AWS Route53 Traffic Policy document format](https://docs.aws.amazon.com/Route53/latest/APIReference/api-policies-traffic-policy-document-format.html)
    73  	//
    74  	// The following arguments are optional:
    75  	Document pulumi.StringOutput `pulumi:"document"`
    76  	// Name of the traffic policy.
    77  	Name pulumi.StringOutput `pulumi:"name"`
    78  	// DNS type of the resource record sets that Amazon Route 53 creates when you use a traffic policy to create a traffic policy instance.
    79  	Type pulumi.StringOutput `pulumi:"type"`
    80  	// Version number of the traffic policy. This value is automatically incremented by AWS after each update of this resource.
    81  	Version pulumi.IntOutput `pulumi:"version"`
    82  }
    83  
    84  // NewTrafficPolicy registers a new resource with the given unique name, arguments, and options.
    85  func NewTrafficPolicy(ctx *pulumi.Context,
    86  	name string, args *TrafficPolicyArgs, opts ...pulumi.ResourceOption) (*TrafficPolicy, error) {
    87  	if args == nil {
    88  		return nil, errors.New("missing one or more required arguments")
    89  	}
    90  
    91  	if args.Document == nil {
    92  		return nil, errors.New("invalid value for required argument 'Document'")
    93  	}
    94  	opts = internal.PkgResourceDefaultOpts(opts)
    95  	var resource TrafficPolicy
    96  	err := ctx.RegisterResource("aws:route53/trafficPolicy:TrafficPolicy", name, args, &resource, opts...)
    97  	if err != nil {
    98  		return nil, err
    99  	}
   100  	return &resource, nil
   101  }
   102  
   103  // GetTrafficPolicy gets an existing TrafficPolicy resource's state with the given name, ID, and optional
   104  // state properties that are used to uniquely qualify the lookup (nil if not required).
   105  func GetTrafficPolicy(ctx *pulumi.Context,
   106  	name string, id pulumi.IDInput, state *TrafficPolicyState, opts ...pulumi.ResourceOption) (*TrafficPolicy, error) {
   107  	var resource TrafficPolicy
   108  	err := ctx.ReadResource("aws:route53/trafficPolicy:TrafficPolicy", name, id, state, &resource, opts...)
   109  	if err != nil {
   110  		return nil, err
   111  	}
   112  	return &resource, nil
   113  }
   114  
   115  // Input properties used for looking up and filtering TrafficPolicy resources.
   116  type trafficPolicyState struct {
   117  	// Comment for the traffic policy.
   118  	Comment *string `pulumi:"comment"`
   119  	// Policy document. This is a JSON formatted string. For more information about building Route53 traffic policy documents, see the [AWS Route53 Traffic Policy document format](https://docs.aws.amazon.com/Route53/latest/APIReference/api-policies-traffic-policy-document-format.html)
   120  	//
   121  	// The following arguments are optional:
   122  	Document *string `pulumi:"document"`
   123  	// Name of the traffic policy.
   124  	Name *string `pulumi:"name"`
   125  	// DNS type of the resource record sets that Amazon Route 53 creates when you use a traffic policy to create a traffic policy instance.
   126  	Type *string `pulumi:"type"`
   127  	// Version number of the traffic policy. This value is automatically incremented by AWS after each update of this resource.
   128  	Version *int `pulumi:"version"`
   129  }
   130  
   131  type TrafficPolicyState struct {
   132  	// Comment for the traffic policy.
   133  	Comment pulumi.StringPtrInput
   134  	// Policy document. This is a JSON formatted string. For more information about building Route53 traffic policy documents, see the [AWS Route53 Traffic Policy document format](https://docs.aws.amazon.com/Route53/latest/APIReference/api-policies-traffic-policy-document-format.html)
   135  	//
   136  	// The following arguments are optional:
   137  	Document pulumi.StringPtrInput
   138  	// Name of the traffic policy.
   139  	Name pulumi.StringPtrInput
   140  	// DNS type of the resource record sets that Amazon Route 53 creates when you use a traffic policy to create a traffic policy instance.
   141  	Type pulumi.StringPtrInput
   142  	// Version number of the traffic policy. This value is automatically incremented by AWS after each update of this resource.
   143  	Version pulumi.IntPtrInput
   144  }
   145  
   146  func (TrafficPolicyState) ElementType() reflect.Type {
   147  	return reflect.TypeOf((*trafficPolicyState)(nil)).Elem()
   148  }
   149  
   150  type trafficPolicyArgs struct {
   151  	// Comment for the traffic policy.
   152  	Comment *string `pulumi:"comment"`
   153  	// Policy document. This is a JSON formatted string. For more information about building Route53 traffic policy documents, see the [AWS Route53 Traffic Policy document format](https://docs.aws.amazon.com/Route53/latest/APIReference/api-policies-traffic-policy-document-format.html)
   154  	//
   155  	// The following arguments are optional:
   156  	Document string `pulumi:"document"`
   157  	// Name of the traffic policy.
   158  	Name *string `pulumi:"name"`
   159  }
   160  
   161  // The set of arguments for constructing a TrafficPolicy resource.
   162  type TrafficPolicyArgs struct {
   163  	// Comment for the traffic policy.
   164  	Comment pulumi.StringPtrInput
   165  	// Policy document. This is a JSON formatted string. For more information about building Route53 traffic policy documents, see the [AWS Route53 Traffic Policy document format](https://docs.aws.amazon.com/Route53/latest/APIReference/api-policies-traffic-policy-document-format.html)
   166  	//
   167  	// The following arguments are optional:
   168  	Document pulumi.StringInput
   169  	// Name of the traffic policy.
   170  	Name pulumi.StringPtrInput
   171  }
   172  
   173  func (TrafficPolicyArgs) ElementType() reflect.Type {
   174  	return reflect.TypeOf((*trafficPolicyArgs)(nil)).Elem()
   175  }
   176  
   177  type TrafficPolicyInput interface {
   178  	pulumi.Input
   179  
   180  	ToTrafficPolicyOutput() TrafficPolicyOutput
   181  	ToTrafficPolicyOutputWithContext(ctx context.Context) TrafficPolicyOutput
   182  }
   183  
   184  func (*TrafficPolicy) ElementType() reflect.Type {
   185  	return reflect.TypeOf((**TrafficPolicy)(nil)).Elem()
   186  }
   187  
   188  func (i *TrafficPolicy) ToTrafficPolicyOutput() TrafficPolicyOutput {
   189  	return i.ToTrafficPolicyOutputWithContext(context.Background())
   190  }
   191  
   192  func (i *TrafficPolicy) ToTrafficPolicyOutputWithContext(ctx context.Context) TrafficPolicyOutput {
   193  	return pulumi.ToOutputWithContext(ctx, i).(TrafficPolicyOutput)
   194  }
   195  
   196  // TrafficPolicyArrayInput is an input type that accepts TrafficPolicyArray and TrafficPolicyArrayOutput values.
   197  // You can construct a concrete instance of `TrafficPolicyArrayInput` via:
   198  //
   199  //	TrafficPolicyArray{ TrafficPolicyArgs{...} }
   200  type TrafficPolicyArrayInput interface {
   201  	pulumi.Input
   202  
   203  	ToTrafficPolicyArrayOutput() TrafficPolicyArrayOutput
   204  	ToTrafficPolicyArrayOutputWithContext(context.Context) TrafficPolicyArrayOutput
   205  }
   206  
   207  type TrafficPolicyArray []TrafficPolicyInput
   208  
   209  func (TrafficPolicyArray) ElementType() reflect.Type {
   210  	return reflect.TypeOf((*[]*TrafficPolicy)(nil)).Elem()
   211  }
   212  
   213  func (i TrafficPolicyArray) ToTrafficPolicyArrayOutput() TrafficPolicyArrayOutput {
   214  	return i.ToTrafficPolicyArrayOutputWithContext(context.Background())
   215  }
   216  
   217  func (i TrafficPolicyArray) ToTrafficPolicyArrayOutputWithContext(ctx context.Context) TrafficPolicyArrayOutput {
   218  	return pulumi.ToOutputWithContext(ctx, i).(TrafficPolicyArrayOutput)
   219  }
   220  
   221  // TrafficPolicyMapInput is an input type that accepts TrafficPolicyMap and TrafficPolicyMapOutput values.
   222  // You can construct a concrete instance of `TrafficPolicyMapInput` via:
   223  //
   224  //	TrafficPolicyMap{ "key": TrafficPolicyArgs{...} }
   225  type TrafficPolicyMapInput interface {
   226  	pulumi.Input
   227  
   228  	ToTrafficPolicyMapOutput() TrafficPolicyMapOutput
   229  	ToTrafficPolicyMapOutputWithContext(context.Context) TrafficPolicyMapOutput
   230  }
   231  
   232  type TrafficPolicyMap map[string]TrafficPolicyInput
   233  
   234  func (TrafficPolicyMap) ElementType() reflect.Type {
   235  	return reflect.TypeOf((*map[string]*TrafficPolicy)(nil)).Elem()
   236  }
   237  
   238  func (i TrafficPolicyMap) ToTrafficPolicyMapOutput() TrafficPolicyMapOutput {
   239  	return i.ToTrafficPolicyMapOutputWithContext(context.Background())
   240  }
   241  
   242  func (i TrafficPolicyMap) ToTrafficPolicyMapOutputWithContext(ctx context.Context) TrafficPolicyMapOutput {
   243  	return pulumi.ToOutputWithContext(ctx, i).(TrafficPolicyMapOutput)
   244  }
   245  
   246  type TrafficPolicyOutput struct{ *pulumi.OutputState }
   247  
   248  func (TrafficPolicyOutput) ElementType() reflect.Type {
   249  	return reflect.TypeOf((**TrafficPolicy)(nil)).Elem()
   250  }
   251  
   252  func (o TrafficPolicyOutput) ToTrafficPolicyOutput() TrafficPolicyOutput {
   253  	return o
   254  }
   255  
   256  func (o TrafficPolicyOutput) ToTrafficPolicyOutputWithContext(ctx context.Context) TrafficPolicyOutput {
   257  	return o
   258  }
   259  
   260  // Comment for the traffic policy.
   261  func (o TrafficPolicyOutput) Comment() pulumi.StringPtrOutput {
   262  	return o.ApplyT(func(v *TrafficPolicy) pulumi.StringPtrOutput { return v.Comment }).(pulumi.StringPtrOutput)
   263  }
   264  
   265  // Policy document. This is a JSON formatted string. For more information about building Route53 traffic policy documents, see the [AWS Route53 Traffic Policy document format](https://docs.aws.amazon.com/Route53/latest/APIReference/api-policies-traffic-policy-document-format.html)
   266  //
   267  // The following arguments are optional:
   268  func (o TrafficPolicyOutput) Document() pulumi.StringOutput {
   269  	return o.ApplyT(func(v *TrafficPolicy) pulumi.StringOutput { return v.Document }).(pulumi.StringOutput)
   270  }
   271  
   272  // Name of the traffic policy.
   273  func (o TrafficPolicyOutput) Name() pulumi.StringOutput {
   274  	return o.ApplyT(func(v *TrafficPolicy) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
   275  }
   276  
   277  // DNS type of the resource record sets that Amazon Route 53 creates when you use a traffic policy to create a traffic policy instance.
   278  func (o TrafficPolicyOutput) Type() pulumi.StringOutput {
   279  	return o.ApplyT(func(v *TrafficPolicy) pulumi.StringOutput { return v.Type }).(pulumi.StringOutput)
   280  }
   281  
   282  // Version number of the traffic policy. This value is automatically incremented by AWS after each update of this resource.
   283  func (o TrafficPolicyOutput) Version() pulumi.IntOutput {
   284  	return o.ApplyT(func(v *TrafficPolicy) pulumi.IntOutput { return v.Version }).(pulumi.IntOutput)
   285  }
   286  
   287  type TrafficPolicyArrayOutput struct{ *pulumi.OutputState }
   288  
   289  func (TrafficPolicyArrayOutput) ElementType() reflect.Type {
   290  	return reflect.TypeOf((*[]*TrafficPolicy)(nil)).Elem()
   291  }
   292  
   293  func (o TrafficPolicyArrayOutput) ToTrafficPolicyArrayOutput() TrafficPolicyArrayOutput {
   294  	return o
   295  }
   296  
   297  func (o TrafficPolicyArrayOutput) ToTrafficPolicyArrayOutputWithContext(ctx context.Context) TrafficPolicyArrayOutput {
   298  	return o
   299  }
   300  
   301  func (o TrafficPolicyArrayOutput) Index(i pulumi.IntInput) TrafficPolicyOutput {
   302  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *TrafficPolicy {
   303  		return vs[0].([]*TrafficPolicy)[vs[1].(int)]
   304  	}).(TrafficPolicyOutput)
   305  }
   306  
   307  type TrafficPolicyMapOutput struct{ *pulumi.OutputState }
   308  
   309  func (TrafficPolicyMapOutput) ElementType() reflect.Type {
   310  	return reflect.TypeOf((*map[string]*TrafficPolicy)(nil)).Elem()
   311  }
   312  
   313  func (o TrafficPolicyMapOutput) ToTrafficPolicyMapOutput() TrafficPolicyMapOutput {
   314  	return o
   315  }
   316  
   317  func (o TrafficPolicyMapOutput) ToTrafficPolicyMapOutputWithContext(ctx context.Context) TrafficPolicyMapOutput {
   318  	return o
   319  }
   320  
   321  func (o TrafficPolicyMapOutput) MapIndex(k pulumi.StringInput) TrafficPolicyOutput {
   322  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *TrafficPolicy {
   323  		return vs[0].(map[string]*TrafficPolicy)[vs[1].(string)]
   324  	}).(TrafficPolicyOutput)
   325  }
   326  
   327  func init() {
   328  	pulumi.RegisterInputType(reflect.TypeOf((*TrafficPolicyInput)(nil)).Elem(), &TrafficPolicy{})
   329  	pulumi.RegisterInputType(reflect.TypeOf((*TrafficPolicyArrayInput)(nil)).Elem(), TrafficPolicyArray{})
   330  	pulumi.RegisterInputType(reflect.TypeOf((*TrafficPolicyMapInput)(nil)).Elem(), TrafficPolicyMap{})
   331  	pulumi.RegisterOutputType(TrafficPolicyOutput{})
   332  	pulumi.RegisterOutputType(TrafficPolicyArrayOutput{})
   333  	pulumi.RegisterOutputType(TrafficPolicyMapOutput{})
   334  }