1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212
|
// Code generated by smithy-go-codegen DO NOT EDIT.
package cloudfront
import (
"context"
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
"github.com/aws/aws-sdk-go-v2/service/cloudfront/types"
"github.com/aws/smithy-go/middleware"
smithyhttp "github.com/aws/smithy-go/transport/http"
)
// Updates the configuration for a web distribution. When you update a
// distribution, there are more required fields than when you create a
// distribution. When you update your distribution by using this API action, follow
// the steps here to get the current configuration and then make your updates, to
// make sure that you include all of the required fields. To view a summary, see
// Required Fields for Create Distribution and Update Distribution
// (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-overview-required-fields.html)
// in the Amazon CloudFront Developer Guide. The update process includes getting
// the current distribution configuration, updating the XML document that is
// returned to make your changes, and then submitting an UpdateDistribution request
// to make the updates. For information about updating a distribution using the
// CloudFront console instead, see Creating a Distribution
// (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-creating-console.html)
// in the Amazon CloudFront Developer Guide. To update a web distribution using the
// CloudFront API
//
// * Submit a GetDistributionConfig
// (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetDistributionConfig.html)
// request to get the current configuration and an Etag header
//
// for the
// distribution. If you update the distribution again, you must get a new Etag
// header.
//
// * Update the XML document that was returned in the response to your
// GetDistributionConfig request to include your changes. When you edit the XML
// file, be aware of the following:
//
// * You must strip out the ETag parameter that
// is returned.
//
// * Additional fields are required when you update a distribution.
// There may be fields included in the XML file for features that you haven't
// configured for your distribution. This is expected and required to successfully
// update the distribution.
//
// * You can't change the value of CallerReference. If
// you try to change this value, CloudFront returns an
//
// IllegalUpdate error.
//
// * The
// new configuration replaces the existing configuration; the values that you
// specify in an UpdateDistribution request are not merged into your existing
// configuration. When you add, delete, or replace values in an element that allows
// multiple values (for example, CNAME), you must specify all of the values that
// you want to appear in the updated distribution. In addition,
//
// you must update
// the corresponding Quantity element.
//
// * Submit an UpdateDistribution request to
// update the configuration for your distribution:
//
// * In the request body, include
// the XML document that you updated in Step 2. The request body must include
// an
//
// XML document with a DistributionConfig element.
//
// * Set the value of the HTTP
// If-Match header to the value of the ETag header that CloudFront returned
//
// when
// you submitted the GetDistributionConfig request in Step 1.
//
// * Review the
// response to the UpdateDistribution request to confirm that the configuration
// was
//
// successfully updated.
//
// * Optional: Submit a GetDistribution
// (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetDistribution.html)
// request to confirm that your changes have propagated.
//
// When propagation is
// complete, the value of Status is Deployed.
func (c *Client) UpdateDistribution(ctx context.Context, params *UpdateDistributionInput, optFns ...func(*Options)) (*UpdateDistributionOutput, error) {
if params == nil {
params = &UpdateDistributionInput{}
}
result, metadata, err := c.invokeOperation(ctx, "UpdateDistribution", params, optFns, c.addOperationUpdateDistributionMiddlewares)
if err != nil {
return nil, err
}
out := result.(*UpdateDistributionOutput)
out.ResultMetadata = metadata
return out, nil
}
// The request to update a distribution.
type UpdateDistributionInput struct {
// The distribution's configuration information.
//
// This member is required.
DistributionConfig *types.DistributionConfig
// The distribution's id.
//
// This member is required.
Id *string
// The value of the ETag header that you received when retrieving the
// distribution's configuration. For example: E2QWRUHAPOMQZL.
IfMatch *string
noSmithyDocumentSerde
}
// The returned result of the corresponding request.
type UpdateDistributionOutput struct {
// The distribution's information.
Distribution *types.Distribution
// The current version of the configuration. For example: E2QWRUHAPOMQZL.
ETag *string
// Metadata pertaining to the operation's result.
ResultMetadata middleware.Metadata
noSmithyDocumentSerde
}
func (c *Client) addOperationUpdateDistributionMiddlewares(stack *middleware.Stack, options Options) (err error) {
err = stack.Serialize.Add(&awsRestxml_serializeOpUpdateDistribution{}, middleware.After)
if err != nil {
return err
}
err = stack.Deserialize.Add(&awsRestxml_deserializeOpUpdateDistribution{}, middleware.After)
if err != nil {
return err
}
if err = addSetLoggerMiddleware(stack, options); err != nil {
return err
}
if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil {
return err
}
if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil {
return err
}
if err = addResolveEndpointMiddleware(stack, options); err != nil {
return err
}
if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil {
return err
}
if err = addRetryMiddlewares(stack, options); err != nil {
return err
}
if err = addHTTPSignerV4Middleware(stack, options); err != nil {
return err
}
if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil {
return err
}
if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil {
return err
}
if err = addClientUserAgent(stack); err != nil {
return err
}
if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
return err
}
if err = addOpUpdateDistributionValidationMiddleware(stack); err != nil {
return err
}
if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateDistribution(options.Region), middleware.Before); err != nil {
return err
}
if err = addRequestIDRetrieverMiddleware(stack); err != nil {
return err
}
if err = addResponseErrorMiddleware(stack); err != nil {
return err
}
if err = addRequestResponseLogging(stack, options); err != nil {
return err
}
return nil
}
func newServiceMetadataMiddleware_opUpdateDistribution(region string) *awsmiddleware.RegisterServiceMetadata {
return &awsmiddleware.RegisterServiceMetadata{
Region: region,
ServiceID: ServiceID,
SigningName: "cloudfront",
OperationName: "UpdateDistribution",
}
}
|