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  }