github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/elb/loadBalancerPolicy.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 elb 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 // Provides a load balancer policy, which can be attached to an ELB listener or backend server. 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/elb" 26 // "github.com/pulumi/pulumi-std/sdk/go/std" 27 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 28 // 29 // ) 30 // 31 // func main() { 32 // pulumi.Run(func(ctx *pulumi.Context) error { 33 // _, err := elb.NewLoadBalancer(ctx, "wu-tang", &elb.LoadBalancerArgs{ 34 // Name: pulumi.String("wu-tang"), 35 // AvailabilityZones: pulumi.StringArray{ 36 // pulumi.String("us-east-1a"), 37 // }, 38 // Listeners: elb.LoadBalancerListenerArray{ 39 // &elb.LoadBalancerListenerArgs{ 40 // InstancePort: pulumi.Int(443), 41 // InstanceProtocol: pulumi.String("http"), 42 // LbPort: pulumi.Int(443), 43 // LbProtocol: pulumi.String("https"), 44 // SslCertificateId: pulumi.String("arn:aws:iam::000000000000:server-certificate/wu-tang.net"), 45 // }, 46 // }, 47 // Tags: pulumi.StringMap{ 48 // "Name": pulumi.String("wu-tang"), 49 // }, 50 // }) 51 // if err != nil { 52 // return err 53 // } 54 // invokeFile, err := std.File(ctx, &std.FileArgs{ 55 // Input: "wu-tang-pubkey", 56 // }, nil) 57 // if err != nil { 58 // return err 59 // } 60 // _, err = elb.NewLoadBalancerPolicy(ctx, "wu-tang-ca-pubkey-policy", &elb.LoadBalancerPolicyArgs{ 61 // LoadBalancerName: wu_tang.Name, 62 // PolicyName: pulumi.String("wu-tang-ca-pubkey-policy"), 63 // PolicyTypeName: pulumi.String("PublicKeyPolicyType"), 64 // PolicyAttributes: elb.LoadBalancerPolicyPolicyAttributeArray{ 65 // &elb.LoadBalancerPolicyPolicyAttributeArgs{ 66 // Name: pulumi.String("PublicKey"), 67 // Value: invokeFile.Result, 68 // }, 69 // }, 70 // }) 71 // if err != nil { 72 // return err 73 // } 74 // _, err = elb.NewLoadBalancerPolicy(ctx, "wu-tang-root-ca-backend-auth-policy", &elb.LoadBalancerPolicyArgs{ 75 // LoadBalancerName: wu_tang.Name, 76 // PolicyName: pulumi.String("wu-tang-root-ca-backend-auth-policy"), 77 // PolicyTypeName: pulumi.String("BackendServerAuthenticationPolicyType"), 78 // PolicyAttributes: elb.LoadBalancerPolicyPolicyAttributeArray{ 79 // &elb.LoadBalancerPolicyPolicyAttributeArgs{ 80 // Name: pulumi.String("PublicKeyPolicyName"), 81 // Value: pulumi.Any(wu_tang_root_ca_pubkey_policy.PolicyName), 82 // }, 83 // }, 84 // }) 85 // if err != nil { 86 // return err 87 // } 88 // _, err = elb.NewLoadBalancerPolicy(ctx, "wu-tang-ssl", &elb.LoadBalancerPolicyArgs{ 89 // LoadBalancerName: wu_tang.Name, 90 // PolicyName: pulumi.String("wu-tang-ssl"), 91 // PolicyTypeName: pulumi.String("SSLNegotiationPolicyType"), 92 // PolicyAttributes: elb.LoadBalancerPolicyPolicyAttributeArray{ 93 // &elb.LoadBalancerPolicyPolicyAttributeArgs{ 94 // Name: pulumi.String("ECDHE-ECDSA-AES128-GCM-SHA256"), 95 // Value: pulumi.String("true"), 96 // }, 97 // &elb.LoadBalancerPolicyPolicyAttributeArgs{ 98 // Name: pulumi.String("Protocol-TLSv1.2"), 99 // Value: pulumi.String("true"), 100 // }, 101 // }, 102 // }) 103 // if err != nil { 104 // return err 105 // } 106 // _, err = elb.NewLoadBalancerPolicy(ctx, "wu-tang-ssl-tls-1-1", &elb.LoadBalancerPolicyArgs{ 107 // LoadBalancerName: wu_tang.Name, 108 // PolicyName: pulumi.String("wu-tang-ssl"), 109 // PolicyTypeName: pulumi.String("SSLNegotiationPolicyType"), 110 // PolicyAttributes: elb.LoadBalancerPolicyPolicyAttributeArray{ 111 // &elb.LoadBalancerPolicyPolicyAttributeArgs{ 112 // Name: pulumi.String("Reference-Security-Policy"), 113 // Value: pulumi.String("ELBSecurityPolicy-TLS-1-1-2017-01"), 114 // }, 115 // }, 116 // }) 117 // if err != nil { 118 // return err 119 // } 120 // _, err = elb.NewLoadBalancerBackendServerPolicy(ctx, "wu-tang-backend-auth-policies-443", &elb.LoadBalancerBackendServerPolicyArgs{ 121 // LoadBalancerName: wu_tang.Name, 122 // InstancePort: pulumi.Int(443), 123 // PolicyNames: pulumi.StringArray{ 124 // wu_tang_root_ca_backend_auth_policy.PolicyName, 125 // }, 126 // }) 127 // if err != nil { 128 // return err 129 // } 130 // _, err = elb.NewListenerPolicy(ctx, "wu-tang-listener-policies-443", &elb.ListenerPolicyArgs{ 131 // LoadBalancerName: wu_tang.Name, 132 // LoadBalancerPort: pulumi.Int(443), 133 // PolicyNames: pulumi.StringArray{ 134 // wu_tang_ssl.PolicyName, 135 // }, 136 // }) 137 // if err != nil { 138 // return err 139 // } 140 // return nil 141 // }) 142 // } 143 // 144 // ``` 145 // <!--End PulumiCodeChooser --> 146 type LoadBalancerPolicy struct { 147 pulumi.CustomResourceState 148 149 // The load balancer on which the policy is defined. 150 LoadBalancerName pulumi.StringOutput `pulumi:"loadBalancerName"` 151 // Policy attribute to apply to the policy. 152 PolicyAttributes LoadBalancerPolicyPolicyAttributeArrayOutput `pulumi:"policyAttributes"` 153 // The name of the load balancer policy. 154 PolicyName pulumi.StringOutput `pulumi:"policyName"` 155 // The policy type. 156 PolicyTypeName pulumi.StringOutput `pulumi:"policyTypeName"` 157 } 158 159 // NewLoadBalancerPolicy registers a new resource with the given unique name, arguments, and options. 160 func NewLoadBalancerPolicy(ctx *pulumi.Context, 161 name string, args *LoadBalancerPolicyArgs, opts ...pulumi.ResourceOption) (*LoadBalancerPolicy, error) { 162 if args == nil { 163 return nil, errors.New("missing one or more required arguments") 164 } 165 166 if args.LoadBalancerName == nil { 167 return nil, errors.New("invalid value for required argument 'LoadBalancerName'") 168 } 169 if args.PolicyName == nil { 170 return nil, errors.New("invalid value for required argument 'PolicyName'") 171 } 172 if args.PolicyTypeName == nil { 173 return nil, errors.New("invalid value for required argument 'PolicyTypeName'") 174 } 175 aliases := pulumi.Aliases([]pulumi.Alias{ 176 { 177 Type: pulumi.String("aws:elasticloadbalancing/loadBalancerPolicy:LoadBalancerPolicy"), 178 }, 179 }) 180 opts = append(opts, aliases) 181 opts = internal.PkgResourceDefaultOpts(opts) 182 var resource LoadBalancerPolicy 183 err := ctx.RegisterResource("aws:elb/loadBalancerPolicy:LoadBalancerPolicy", name, args, &resource, opts...) 184 if err != nil { 185 return nil, err 186 } 187 return &resource, nil 188 } 189 190 // GetLoadBalancerPolicy gets an existing LoadBalancerPolicy resource's state with the given name, ID, and optional 191 // state properties that are used to uniquely qualify the lookup (nil if not required). 192 func GetLoadBalancerPolicy(ctx *pulumi.Context, 193 name string, id pulumi.IDInput, state *LoadBalancerPolicyState, opts ...pulumi.ResourceOption) (*LoadBalancerPolicy, error) { 194 var resource LoadBalancerPolicy 195 err := ctx.ReadResource("aws:elb/loadBalancerPolicy:LoadBalancerPolicy", name, id, state, &resource, opts...) 196 if err != nil { 197 return nil, err 198 } 199 return &resource, nil 200 } 201 202 // Input properties used for looking up and filtering LoadBalancerPolicy resources. 203 type loadBalancerPolicyState struct { 204 // The load balancer on which the policy is defined. 205 LoadBalancerName *string `pulumi:"loadBalancerName"` 206 // Policy attribute to apply to the policy. 207 PolicyAttributes []LoadBalancerPolicyPolicyAttribute `pulumi:"policyAttributes"` 208 // The name of the load balancer policy. 209 PolicyName *string `pulumi:"policyName"` 210 // The policy type. 211 PolicyTypeName *string `pulumi:"policyTypeName"` 212 } 213 214 type LoadBalancerPolicyState struct { 215 // The load balancer on which the policy is defined. 216 LoadBalancerName pulumi.StringPtrInput 217 // Policy attribute to apply to the policy. 218 PolicyAttributes LoadBalancerPolicyPolicyAttributeArrayInput 219 // The name of the load balancer policy. 220 PolicyName pulumi.StringPtrInput 221 // The policy type. 222 PolicyTypeName pulumi.StringPtrInput 223 } 224 225 func (LoadBalancerPolicyState) ElementType() reflect.Type { 226 return reflect.TypeOf((*loadBalancerPolicyState)(nil)).Elem() 227 } 228 229 type loadBalancerPolicyArgs struct { 230 // The load balancer on which the policy is defined. 231 LoadBalancerName string `pulumi:"loadBalancerName"` 232 // Policy attribute to apply to the policy. 233 PolicyAttributes []LoadBalancerPolicyPolicyAttribute `pulumi:"policyAttributes"` 234 // The name of the load balancer policy. 235 PolicyName string `pulumi:"policyName"` 236 // The policy type. 237 PolicyTypeName string `pulumi:"policyTypeName"` 238 } 239 240 // The set of arguments for constructing a LoadBalancerPolicy resource. 241 type LoadBalancerPolicyArgs struct { 242 // The load balancer on which the policy is defined. 243 LoadBalancerName pulumi.StringInput 244 // Policy attribute to apply to the policy. 245 PolicyAttributes LoadBalancerPolicyPolicyAttributeArrayInput 246 // The name of the load balancer policy. 247 PolicyName pulumi.StringInput 248 // The policy type. 249 PolicyTypeName pulumi.StringInput 250 } 251 252 func (LoadBalancerPolicyArgs) ElementType() reflect.Type { 253 return reflect.TypeOf((*loadBalancerPolicyArgs)(nil)).Elem() 254 } 255 256 type LoadBalancerPolicyInput interface { 257 pulumi.Input 258 259 ToLoadBalancerPolicyOutput() LoadBalancerPolicyOutput 260 ToLoadBalancerPolicyOutputWithContext(ctx context.Context) LoadBalancerPolicyOutput 261 } 262 263 func (*LoadBalancerPolicy) ElementType() reflect.Type { 264 return reflect.TypeOf((**LoadBalancerPolicy)(nil)).Elem() 265 } 266 267 func (i *LoadBalancerPolicy) ToLoadBalancerPolicyOutput() LoadBalancerPolicyOutput { 268 return i.ToLoadBalancerPolicyOutputWithContext(context.Background()) 269 } 270 271 func (i *LoadBalancerPolicy) ToLoadBalancerPolicyOutputWithContext(ctx context.Context) LoadBalancerPolicyOutput { 272 return pulumi.ToOutputWithContext(ctx, i).(LoadBalancerPolicyOutput) 273 } 274 275 // LoadBalancerPolicyArrayInput is an input type that accepts LoadBalancerPolicyArray and LoadBalancerPolicyArrayOutput values. 276 // You can construct a concrete instance of `LoadBalancerPolicyArrayInput` via: 277 // 278 // LoadBalancerPolicyArray{ LoadBalancerPolicyArgs{...} } 279 type LoadBalancerPolicyArrayInput interface { 280 pulumi.Input 281 282 ToLoadBalancerPolicyArrayOutput() LoadBalancerPolicyArrayOutput 283 ToLoadBalancerPolicyArrayOutputWithContext(context.Context) LoadBalancerPolicyArrayOutput 284 } 285 286 type LoadBalancerPolicyArray []LoadBalancerPolicyInput 287 288 func (LoadBalancerPolicyArray) ElementType() reflect.Type { 289 return reflect.TypeOf((*[]*LoadBalancerPolicy)(nil)).Elem() 290 } 291 292 func (i LoadBalancerPolicyArray) ToLoadBalancerPolicyArrayOutput() LoadBalancerPolicyArrayOutput { 293 return i.ToLoadBalancerPolicyArrayOutputWithContext(context.Background()) 294 } 295 296 func (i LoadBalancerPolicyArray) ToLoadBalancerPolicyArrayOutputWithContext(ctx context.Context) LoadBalancerPolicyArrayOutput { 297 return pulumi.ToOutputWithContext(ctx, i).(LoadBalancerPolicyArrayOutput) 298 } 299 300 // LoadBalancerPolicyMapInput is an input type that accepts LoadBalancerPolicyMap and LoadBalancerPolicyMapOutput values. 301 // You can construct a concrete instance of `LoadBalancerPolicyMapInput` via: 302 // 303 // LoadBalancerPolicyMap{ "key": LoadBalancerPolicyArgs{...} } 304 type LoadBalancerPolicyMapInput interface { 305 pulumi.Input 306 307 ToLoadBalancerPolicyMapOutput() LoadBalancerPolicyMapOutput 308 ToLoadBalancerPolicyMapOutputWithContext(context.Context) LoadBalancerPolicyMapOutput 309 } 310 311 type LoadBalancerPolicyMap map[string]LoadBalancerPolicyInput 312 313 func (LoadBalancerPolicyMap) ElementType() reflect.Type { 314 return reflect.TypeOf((*map[string]*LoadBalancerPolicy)(nil)).Elem() 315 } 316 317 func (i LoadBalancerPolicyMap) ToLoadBalancerPolicyMapOutput() LoadBalancerPolicyMapOutput { 318 return i.ToLoadBalancerPolicyMapOutputWithContext(context.Background()) 319 } 320 321 func (i LoadBalancerPolicyMap) ToLoadBalancerPolicyMapOutputWithContext(ctx context.Context) LoadBalancerPolicyMapOutput { 322 return pulumi.ToOutputWithContext(ctx, i).(LoadBalancerPolicyMapOutput) 323 } 324 325 type LoadBalancerPolicyOutput struct{ *pulumi.OutputState } 326 327 func (LoadBalancerPolicyOutput) ElementType() reflect.Type { 328 return reflect.TypeOf((**LoadBalancerPolicy)(nil)).Elem() 329 } 330 331 func (o LoadBalancerPolicyOutput) ToLoadBalancerPolicyOutput() LoadBalancerPolicyOutput { 332 return o 333 } 334 335 func (o LoadBalancerPolicyOutput) ToLoadBalancerPolicyOutputWithContext(ctx context.Context) LoadBalancerPolicyOutput { 336 return o 337 } 338 339 // The load balancer on which the policy is defined. 340 func (o LoadBalancerPolicyOutput) LoadBalancerName() pulumi.StringOutput { 341 return o.ApplyT(func(v *LoadBalancerPolicy) pulumi.StringOutput { return v.LoadBalancerName }).(pulumi.StringOutput) 342 } 343 344 // Policy attribute to apply to the policy. 345 func (o LoadBalancerPolicyOutput) PolicyAttributes() LoadBalancerPolicyPolicyAttributeArrayOutput { 346 return o.ApplyT(func(v *LoadBalancerPolicy) LoadBalancerPolicyPolicyAttributeArrayOutput { return v.PolicyAttributes }).(LoadBalancerPolicyPolicyAttributeArrayOutput) 347 } 348 349 // The name of the load balancer policy. 350 func (o LoadBalancerPolicyOutput) PolicyName() pulumi.StringOutput { 351 return o.ApplyT(func(v *LoadBalancerPolicy) pulumi.StringOutput { return v.PolicyName }).(pulumi.StringOutput) 352 } 353 354 // The policy type. 355 func (o LoadBalancerPolicyOutput) PolicyTypeName() pulumi.StringOutput { 356 return o.ApplyT(func(v *LoadBalancerPolicy) pulumi.StringOutput { return v.PolicyTypeName }).(pulumi.StringOutput) 357 } 358 359 type LoadBalancerPolicyArrayOutput struct{ *pulumi.OutputState } 360 361 func (LoadBalancerPolicyArrayOutput) ElementType() reflect.Type { 362 return reflect.TypeOf((*[]*LoadBalancerPolicy)(nil)).Elem() 363 } 364 365 func (o LoadBalancerPolicyArrayOutput) ToLoadBalancerPolicyArrayOutput() LoadBalancerPolicyArrayOutput { 366 return o 367 } 368 369 func (o LoadBalancerPolicyArrayOutput) ToLoadBalancerPolicyArrayOutputWithContext(ctx context.Context) LoadBalancerPolicyArrayOutput { 370 return o 371 } 372 373 func (o LoadBalancerPolicyArrayOutput) Index(i pulumi.IntInput) LoadBalancerPolicyOutput { 374 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *LoadBalancerPolicy { 375 return vs[0].([]*LoadBalancerPolicy)[vs[1].(int)] 376 }).(LoadBalancerPolicyOutput) 377 } 378 379 type LoadBalancerPolicyMapOutput struct{ *pulumi.OutputState } 380 381 func (LoadBalancerPolicyMapOutput) ElementType() reflect.Type { 382 return reflect.TypeOf((*map[string]*LoadBalancerPolicy)(nil)).Elem() 383 } 384 385 func (o LoadBalancerPolicyMapOutput) ToLoadBalancerPolicyMapOutput() LoadBalancerPolicyMapOutput { 386 return o 387 } 388 389 func (o LoadBalancerPolicyMapOutput) ToLoadBalancerPolicyMapOutputWithContext(ctx context.Context) LoadBalancerPolicyMapOutput { 390 return o 391 } 392 393 func (o LoadBalancerPolicyMapOutput) MapIndex(k pulumi.StringInput) LoadBalancerPolicyOutput { 394 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *LoadBalancerPolicy { 395 return vs[0].(map[string]*LoadBalancerPolicy)[vs[1].(string)] 396 }).(LoadBalancerPolicyOutput) 397 } 398 399 func init() { 400 pulumi.RegisterInputType(reflect.TypeOf((*LoadBalancerPolicyInput)(nil)).Elem(), &LoadBalancerPolicy{}) 401 pulumi.RegisterInputType(reflect.TypeOf((*LoadBalancerPolicyArrayInput)(nil)).Elem(), LoadBalancerPolicyArray{}) 402 pulumi.RegisterInputType(reflect.TypeOf((*LoadBalancerPolicyMapInput)(nil)).Elem(), LoadBalancerPolicyMap{}) 403 pulumi.RegisterOutputType(LoadBalancerPolicyOutput{}) 404 pulumi.RegisterOutputType(LoadBalancerPolicyArrayOutput{}) 405 pulumi.RegisterOutputType(LoadBalancerPolicyMapOutput{}) 406 }