github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/cloudfront/continuousDeploymentPolicy.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 cloudfront 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 // Resource for managing an AWS CloudFront Continuous Deployment Policy. 16 // 17 // ## Example Usage 18 // 19 // ### Basic Usage 20 // 21 // <!--Start PulumiCodeChooser --> 22 // ```go 23 // package main 24 // 25 // import ( 26 // 27 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudfront" 28 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 29 // 30 // ) 31 // 32 // func main() { 33 // pulumi.Run(func(ctx *pulumi.Context) error { 34 // staging, err := cloudfront.NewDistribution(ctx, "staging", &cloudfront.DistributionArgs{ 35 // Enabled: pulumi.Bool(true), 36 // Staging: pulumi.Bool(true), 37 // }) 38 // if err != nil { 39 // return err 40 // } 41 // example, err := cloudfront.NewContinuousDeploymentPolicy(ctx, "example", &cloudfront.ContinuousDeploymentPolicyArgs{ 42 // Enabled: pulumi.Bool(true), 43 // StagingDistributionDnsNames: &cloudfront.ContinuousDeploymentPolicyStagingDistributionDnsNamesArgs{ 44 // Items: pulumi.StringArray{ 45 // staging.DomainName, 46 // }, 47 // Quantity: pulumi.Int(1), 48 // }, 49 // TrafficConfig: &cloudfront.ContinuousDeploymentPolicyTrafficConfigArgs{ 50 // Type: pulumi.String("SingleWeight"), 51 // SingleWeightConfig: &cloudfront.ContinuousDeploymentPolicyTrafficConfigSingleWeightConfigArgs{ 52 // Weight: pulumi.Float64(0.01), 53 // }, 54 // }, 55 // }) 56 // if err != nil { 57 // return err 58 // } 59 // _, err = cloudfront.NewDistribution(ctx, "production", &cloudfront.DistributionArgs{ 60 // Enabled: pulumi.Bool(true), 61 // ContinuousDeploymentPolicyId: example.ID(), 62 // }) 63 // if err != nil { 64 // return err 65 // } 66 // return nil 67 // }) 68 // } 69 // 70 // ``` 71 // <!--End PulumiCodeChooser --> 72 // 73 // ### Single Weight Config with Session Stickiness 74 // 75 // <!--Start PulumiCodeChooser --> 76 // ```go 77 // package main 78 // 79 // import ( 80 // 81 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudfront" 82 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 83 // 84 // ) 85 // 86 // func main() { 87 // pulumi.Run(func(ctx *pulumi.Context) error { 88 // _, err := cloudfront.NewContinuousDeploymentPolicy(ctx, "example", &cloudfront.ContinuousDeploymentPolicyArgs{ 89 // Enabled: pulumi.Bool(true), 90 // StagingDistributionDnsNames: &cloudfront.ContinuousDeploymentPolicyStagingDistributionDnsNamesArgs{ 91 // Items: pulumi.StringArray{ 92 // staging.DomainName, 93 // }, 94 // Quantity: pulumi.Int(1), 95 // }, 96 // TrafficConfig: &cloudfront.ContinuousDeploymentPolicyTrafficConfigArgs{ 97 // Type: pulumi.String("SingleWeight"), 98 // SingleWeightConfig: &cloudfront.ContinuousDeploymentPolicyTrafficConfigSingleWeightConfigArgs{ 99 // Weight: pulumi.Float64(0.01), 100 // SessionStickinessConfig: &cloudfront.ContinuousDeploymentPolicyTrafficConfigSingleWeightConfigSessionStickinessConfigArgs{ 101 // IdleTtl: pulumi.Int(300), 102 // MaximumTtl: pulumi.Int(600), 103 // }, 104 // }, 105 // }, 106 // }) 107 // if err != nil { 108 // return err 109 // } 110 // return nil 111 // }) 112 // } 113 // 114 // ``` 115 // <!--End PulumiCodeChooser --> 116 // 117 // ### Single Header Config 118 // 119 // <!--Start PulumiCodeChooser --> 120 // ```go 121 // package main 122 // 123 // import ( 124 // 125 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudfront" 126 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 127 // 128 // ) 129 // 130 // func main() { 131 // pulumi.Run(func(ctx *pulumi.Context) error { 132 // _, err := cloudfront.NewContinuousDeploymentPolicy(ctx, "example", &cloudfront.ContinuousDeploymentPolicyArgs{ 133 // Enabled: pulumi.Bool(true), 134 // StagingDistributionDnsNames: &cloudfront.ContinuousDeploymentPolicyStagingDistributionDnsNamesArgs{ 135 // Items: pulumi.StringArray{ 136 // staging.DomainName, 137 // }, 138 // Quantity: pulumi.Int(1), 139 // }, 140 // TrafficConfig: &cloudfront.ContinuousDeploymentPolicyTrafficConfigArgs{ 141 // Type: pulumi.String("SingleHeader"), 142 // SingleHeaderConfig: &cloudfront.ContinuousDeploymentPolicyTrafficConfigSingleHeaderConfigArgs{ 143 // Header: pulumi.String("aws-cf-cd-example"), 144 // Value: pulumi.String("example"), 145 // }, 146 // }, 147 // }) 148 // if err != nil { 149 // return err 150 // } 151 // return nil 152 // }) 153 // } 154 // 155 // ``` 156 // <!--End PulumiCodeChooser --> 157 // 158 // ## Import 159 // 160 // Using `pulumi import`, import CloudFront Continuous Deployment Policy using the `id`. For example: 161 // 162 // ```sh 163 // $ pulumi import aws:cloudfront/continuousDeploymentPolicy:ContinuousDeploymentPolicy example abcd-1234 164 // ``` 165 type ContinuousDeploymentPolicy struct { 166 pulumi.CustomResourceState 167 168 // Whether this continuous deployment policy is enabled. 169 Enabled pulumi.BoolOutput `pulumi:"enabled"` 170 // Current version of the continuous distribution policy. 171 Etag pulumi.StringOutput `pulumi:"etag"` 172 // Date and time the continuous deployment policy was last modified. 173 LastModifiedTime pulumi.StringOutput `pulumi:"lastModifiedTime"` 174 // CloudFront domain name of the staging distribution. See `stagingDistributionDnsNames`. 175 StagingDistributionDnsNames ContinuousDeploymentPolicyStagingDistributionDnsNamesPtrOutput `pulumi:"stagingDistributionDnsNames"` 176 // Parameters for routing production traffic from primary to staging distributions. See `trafficConfig`. 177 TrafficConfig ContinuousDeploymentPolicyTrafficConfigPtrOutput `pulumi:"trafficConfig"` 178 } 179 180 // NewContinuousDeploymentPolicy registers a new resource with the given unique name, arguments, and options. 181 func NewContinuousDeploymentPolicy(ctx *pulumi.Context, 182 name string, args *ContinuousDeploymentPolicyArgs, opts ...pulumi.ResourceOption) (*ContinuousDeploymentPolicy, error) { 183 if args == nil { 184 return nil, errors.New("missing one or more required arguments") 185 } 186 187 if args.Enabled == nil { 188 return nil, errors.New("invalid value for required argument 'Enabled'") 189 } 190 opts = internal.PkgResourceDefaultOpts(opts) 191 var resource ContinuousDeploymentPolicy 192 err := ctx.RegisterResource("aws:cloudfront/continuousDeploymentPolicy:ContinuousDeploymentPolicy", name, args, &resource, opts...) 193 if err != nil { 194 return nil, err 195 } 196 return &resource, nil 197 } 198 199 // GetContinuousDeploymentPolicy gets an existing ContinuousDeploymentPolicy resource's state with the given name, ID, and optional 200 // state properties that are used to uniquely qualify the lookup (nil if not required). 201 func GetContinuousDeploymentPolicy(ctx *pulumi.Context, 202 name string, id pulumi.IDInput, state *ContinuousDeploymentPolicyState, opts ...pulumi.ResourceOption) (*ContinuousDeploymentPolicy, error) { 203 var resource ContinuousDeploymentPolicy 204 err := ctx.ReadResource("aws:cloudfront/continuousDeploymentPolicy:ContinuousDeploymentPolicy", name, id, state, &resource, opts...) 205 if err != nil { 206 return nil, err 207 } 208 return &resource, nil 209 } 210 211 // Input properties used for looking up and filtering ContinuousDeploymentPolicy resources. 212 type continuousDeploymentPolicyState struct { 213 // Whether this continuous deployment policy is enabled. 214 Enabled *bool `pulumi:"enabled"` 215 // Current version of the continuous distribution policy. 216 Etag *string `pulumi:"etag"` 217 // Date and time the continuous deployment policy was last modified. 218 LastModifiedTime *string `pulumi:"lastModifiedTime"` 219 // CloudFront domain name of the staging distribution. See `stagingDistributionDnsNames`. 220 StagingDistributionDnsNames *ContinuousDeploymentPolicyStagingDistributionDnsNames `pulumi:"stagingDistributionDnsNames"` 221 // Parameters for routing production traffic from primary to staging distributions. See `trafficConfig`. 222 TrafficConfig *ContinuousDeploymentPolicyTrafficConfig `pulumi:"trafficConfig"` 223 } 224 225 type ContinuousDeploymentPolicyState struct { 226 // Whether this continuous deployment policy is enabled. 227 Enabled pulumi.BoolPtrInput 228 // Current version of the continuous distribution policy. 229 Etag pulumi.StringPtrInput 230 // Date and time the continuous deployment policy was last modified. 231 LastModifiedTime pulumi.StringPtrInput 232 // CloudFront domain name of the staging distribution. See `stagingDistributionDnsNames`. 233 StagingDistributionDnsNames ContinuousDeploymentPolicyStagingDistributionDnsNamesPtrInput 234 // Parameters for routing production traffic from primary to staging distributions. See `trafficConfig`. 235 TrafficConfig ContinuousDeploymentPolicyTrafficConfigPtrInput 236 } 237 238 func (ContinuousDeploymentPolicyState) ElementType() reflect.Type { 239 return reflect.TypeOf((*continuousDeploymentPolicyState)(nil)).Elem() 240 } 241 242 type continuousDeploymentPolicyArgs struct { 243 // Whether this continuous deployment policy is enabled. 244 Enabled bool `pulumi:"enabled"` 245 // CloudFront domain name of the staging distribution. See `stagingDistributionDnsNames`. 246 StagingDistributionDnsNames *ContinuousDeploymentPolicyStagingDistributionDnsNames `pulumi:"stagingDistributionDnsNames"` 247 // Parameters for routing production traffic from primary to staging distributions. See `trafficConfig`. 248 TrafficConfig *ContinuousDeploymentPolicyTrafficConfig `pulumi:"trafficConfig"` 249 } 250 251 // The set of arguments for constructing a ContinuousDeploymentPolicy resource. 252 type ContinuousDeploymentPolicyArgs struct { 253 // Whether this continuous deployment policy is enabled. 254 Enabled pulumi.BoolInput 255 // CloudFront domain name of the staging distribution. See `stagingDistributionDnsNames`. 256 StagingDistributionDnsNames ContinuousDeploymentPolicyStagingDistributionDnsNamesPtrInput 257 // Parameters for routing production traffic from primary to staging distributions. See `trafficConfig`. 258 TrafficConfig ContinuousDeploymentPolicyTrafficConfigPtrInput 259 } 260 261 func (ContinuousDeploymentPolicyArgs) ElementType() reflect.Type { 262 return reflect.TypeOf((*continuousDeploymentPolicyArgs)(nil)).Elem() 263 } 264 265 type ContinuousDeploymentPolicyInput interface { 266 pulumi.Input 267 268 ToContinuousDeploymentPolicyOutput() ContinuousDeploymentPolicyOutput 269 ToContinuousDeploymentPolicyOutputWithContext(ctx context.Context) ContinuousDeploymentPolicyOutput 270 } 271 272 func (*ContinuousDeploymentPolicy) ElementType() reflect.Type { 273 return reflect.TypeOf((**ContinuousDeploymentPolicy)(nil)).Elem() 274 } 275 276 func (i *ContinuousDeploymentPolicy) ToContinuousDeploymentPolicyOutput() ContinuousDeploymentPolicyOutput { 277 return i.ToContinuousDeploymentPolicyOutputWithContext(context.Background()) 278 } 279 280 func (i *ContinuousDeploymentPolicy) ToContinuousDeploymentPolicyOutputWithContext(ctx context.Context) ContinuousDeploymentPolicyOutput { 281 return pulumi.ToOutputWithContext(ctx, i).(ContinuousDeploymentPolicyOutput) 282 } 283 284 // ContinuousDeploymentPolicyArrayInput is an input type that accepts ContinuousDeploymentPolicyArray and ContinuousDeploymentPolicyArrayOutput values. 285 // You can construct a concrete instance of `ContinuousDeploymentPolicyArrayInput` via: 286 // 287 // ContinuousDeploymentPolicyArray{ ContinuousDeploymentPolicyArgs{...} } 288 type ContinuousDeploymentPolicyArrayInput interface { 289 pulumi.Input 290 291 ToContinuousDeploymentPolicyArrayOutput() ContinuousDeploymentPolicyArrayOutput 292 ToContinuousDeploymentPolicyArrayOutputWithContext(context.Context) ContinuousDeploymentPolicyArrayOutput 293 } 294 295 type ContinuousDeploymentPolicyArray []ContinuousDeploymentPolicyInput 296 297 func (ContinuousDeploymentPolicyArray) ElementType() reflect.Type { 298 return reflect.TypeOf((*[]*ContinuousDeploymentPolicy)(nil)).Elem() 299 } 300 301 func (i ContinuousDeploymentPolicyArray) ToContinuousDeploymentPolicyArrayOutput() ContinuousDeploymentPolicyArrayOutput { 302 return i.ToContinuousDeploymentPolicyArrayOutputWithContext(context.Background()) 303 } 304 305 func (i ContinuousDeploymentPolicyArray) ToContinuousDeploymentPolicyArrayOutputWithContext(ctx context.Context) ContinuousDeploymentPolicyArrayOutput { 306 return pulumi.ToOutputWithContext(ctx, i).(ContinuousDeploymentPolicyArrayOutput) 307 } 308 309 // ContinuousDeploymentPolicyMapInput is an input type that accepts ContinuousDeploymentPolicyMap and ContinuousDeploymentPolicyMapOutput values. 310 // You can construct a concrete instance of `ContinuousDeploymentPolicyMapInput` via: 311 // 312 // ContinuousDeploymentPolicyMap{ "key": ContinuousDeploymentPolicyArgs{...} } 313 type ContinuousDeploymentPolicyMapInput interface { 314 pulumi.Input 315 316 ToContinuousDeploymentPolicyMapOutput() ContinuousDeploymentPolicyMapOutput 317 ToContinuousDeploymentPolicyMapOutputWithContext(context.Context) ContinuousDeploymentPolicyMapOutput 318 } 319 320 type ContinuousDeploymentPolicyMap map[string]ContinuousDeploymentPolicyInput 321 322 func (ContinuousDeploymentPolicyMap) ElementType() reflect.Type { 323 return reflect.TypeOf((*map[string]*ContinuousDeploymentPolicy)(nil)).Elem() 324 } 325 326 func (i ContinuousDeploymentPolicyMap) ToContinuousDeploymentPolicyMapOutput() ContinuousDeploymentPolicyMapOutput { 327 return i.ToContinuousDeploymentPolicyMapOutputWithContext(context.Background()) 328 } 329 330 func (i ContinuousDeploymentPolicyMap) ToContinuousDeploymentPolicyMapOutputWithContext(ctx context.Context) ContinuousDeploymentPolicyMapOutput { 331 return pulumi.ToOutputWithContext(ctx, i).(ContinuousDeploymentPolicyMapOutput) 332 } 333 334 type ContinuousDeploymentPolicyOutput struct{ *pulumi.OutputState } 335 336 func (ContinuousDeploymentPolicyOutput) ElementType() reflect.Type { 337 return reflect.TypeOf((**ContinuousDeploymentPolicy)(nil)).Elem() 338 } 339 340 func (o ContinuousDeploymentPolicyOutput) ToContinuousDeploymentPolicyOutput() ContinuousDeploymentPolicyOutput { 341 return o 342 } 343 344 func (o ContinuousDeploymentPolicyOutput) ToContinuousDeploymentPolicyOutputWithContext(ctx context.Context) ContinuousDeploymentPolicyOutput { 345 return o 346 } 347 348 // Whether this continuous deployment policy is enabled. 349 func (o ContinuousDeploymentPolicyOutput) Enabled() pulumi.BoolOutput { 350 return o.ApplyT(func(v *ContinuousDeploymentPolicy) pulumi.BoolOutput { return v.Enabled }).(pulumi.BoolOutput) 351 } 352 353 // Current version of the continuous distribution policy. 354 func (o ContinuousDeploymentPolicyOutput) Etag() pulumi.StringOutput { 355 return o.ApplyT(func(v *ContinuousDeploymentPolicy) pulumi.StringOutput { return v.Etag }).(pulumi.StringOutput) 356 } 357 358 // Date and time the continuous deployment policy was last modified. 359 func (o ContinuousDeploymentPolicyOutput) LastModifiedTime() pulumi.StringOutput { 360 return o.ApplyT(func(v *ContinuousDeploymentPolicy) pulumi.StringOutput { return v.LastModifiedTime }).(pulumi.StringOutput) 361 } 362 363 // CloudFront domain name of the staging distribution. See `stagingDistributionDnsNames`. 364 func (o ContinuousDeploymentPolicyOutput) StagingDistributionDnsNames() ContinuousDeploymentPolicyStagingDistributionDnsNamesPtrOutput { 365 return o.ApplyT(func(v *ContinuousDeploymentPolicy) ContinuousDeploymentPolicyStagingDistributionDnsNamesPtrOutput { 366 return v.StagingDistributionDnsNames 367 }).(ContinuousDeploymentPolicyStagingDistributionDnsNamesPtrOutput) 368 } 369 370 // Parameters for routing production traffic from primary to staging distributions. See `trafficConfig`. 371 func (o ContinuousDeploymentPolicyOutput) TrafficConfig() ContinuousDeploymentPolicyTrafficConfigPtrOutput { 372 return o.ApplyT(func(v *ContinuousDeploymentPolicy) ContinuousDeploymentPolicyTrafficConfigPtrOutput { 373 return v.TrafficConfig 374 }).(ContinuousDeploymentPolicyTrafficConfigPtrOutput) 375 } 376 377 type ContinuousDeploymentPolicyArrayOutput struct{ *pulumi.OutputState } 378 379 func (ContinuousDeploymentPolicyArrayOutput) ElementType() reflect.Type { 380 return reflect.TypeOf((*[]*ContinuousDeploymentPolicy)(nil)).Elem() 381 } 382 383 func (o ContinuousDeploymentPolicyArrayOutput) ToContinuousDeploymentPolicyArrayOutput() ContinuousDeploymentPolicyArrayOutput { 384 return o 385 } 386 387 func (o ContinuousDeploymentPolicyArrayOutput) ToContinuousDeploymentPolicyArrayOutputWithContext(ctx context.Context) ContinuousDeploymentPolicyArrayOutput { 388 return o 389 } 390 391 func (o ContinuousDeploymentPolicyArrayOutput) Index(i pulumi.IntInput) ContinuousDeploymentPolicyOutput { 392 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ContinuousDeploymentPolicy { 393 return vs[0].([]*ContinuousDeploymentPolicy)[vs[1].(int)] 394 }).(ContinuousDeploymentPolicyOutput) 395 } 396 397 type ContinuousDeploymentPolicyMapOutput struct{ *pulumi.OutputState } 398 399 func (ContinuousDeploymentPolicyMapOutput) ElementType() reflect.Type { 400 return reflect.TypeOf((*map[string]*ContinuousDeploymentPolicy)(nil)).Elem() 401 } 402 403 func (o ContinuousDeploymentPolicyMapOutput) ToContinuousDeploymentPolicyMapOutput() ContinuousDeploymentPolicyMapOutput { 404 return o 405 } 406 407 func (o ContinuousDeploymentPolicyMapOutput) ToContinuousDeploymentPolicyMapOutputWithContext(ctx context.Context) ContinuousDeploymentPolicyMapOutput { 408 return o 409 } 410 411 func (o ContinuousDeploymentPolicyMapOutput) MapIndex(k pulumi.StringInput) ContinuousDeploymentPolicyOutput { 412 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ContinuousDeploymentPolicy { 413 return vs[0].(map[string]*ContinuousDeploymentPolicy)[vs[1].(string)] 414 }).(ContinuousDeploymentPolicyOutput) 415 } 416 417 func init() { 418 pulumi.RegisterInputType(reflect.TypeOf((*ContinuousDeploymentPolicyInput)(nil)).Elem(), &ContinuousDeploymentPolicy{}) 419 pulumi.RegisterInputType(reflect.TypeOf((*ContinuousDeploymentPolicyArrayInput)(nil)).Elem(), ContinuousDeploymentPolicyArray{}) 420 pulumi.RegisterInputType(reflect.TypeOf((*ContinuousDeploymentPolicyMapInput)(nil)).Elem(), ContinuousDeploymentPolicyMap{}) 421 pulumi.RegisterOutputType(ContinuousDeploymentPolicyOutput{}) 422 pulumi.RegisterOutputType(ContinuousDeploymentPolicyArrayOutput{}) 423 pulumi.RegisterOutputType(ContinuousDeploymentPolicyMapOutput{}) 424 }