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 }