api_op_CreateReusableDelegationSet.go raw

   1  // Code generated by smithy-go-codegen DO NOT EDIT.
   2  
   3  package route53
   4  
   5  import (
   6  	"context"
   7  	"fmt"
   8  	awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
   9  	"github.com/aws/aws-sdk-go-v2/service/route53/types"
  10  	"github.com/aws/smithy-go/middleware"
  11  	smithyhttp "github.com/aws/smithy-go/transport/http"
  12  )
  13  
  14  // Creates a delegation set (a group of four name servers) that can be reused by
  15  // multiple hosted zones that were created by the same Amazon Web Services account.
  16  //
  17  // You can also create a reusable delegation set that uses the four name servers
  18  // that are associated with an existing hosted zone. Specify the hosted zone ID in
  19  // the CreateReusableDelegationSet request.
  20  //
  21  // You can't associate a reusable delegation set with a private hosted zone.
  22  //
  23  // For information about using a reusable delegation set to configure white label
  24  // name servers, see [Configuring White Label Name Servers].
  25  //
  26  // The process for migrating existing hosted zones to use a reusable delegation
  27  // set is comparable to the process for configuring white label name servers. You
  28  // need to perform the following steps:
  29  //
  30  //   - Create a reusable delegation set.
  31  //
  32  //   - Recreate hosted zones, and reduce the TTL to 60 seconds or less.
  33  //
  34  //   - Recreate resource record sets in the new hosted zones.
  35  //
  36  //   - Change the registrar's name servers to use the name servers for the new
  37  //     hosted zones.
  38  //
  39  //   - Monitor traffic for the website or application.
  40  //
  41  //   - Change TTLs back to their original values.
  42  //
  43  // If you want to migrate existing hosted zones to use a reusable delegation set,
  44  // the existing hosted zones can't use any of the name servers that are assigned to
  45  // the reusable delegation set. If one or more hosted zones do use one or more name
  46  // servers that are assigned to the reusable delegation set, you can do one of the
  47  // following:
  48  //
  49  //   - For small numbers of hosted zones—up to a few hundred—it's relatively easy
  50  //     to create reusable delegation sets until you get one that has four name servers
  51  //     that don't overlap with any of the name servers in your hosted zones.
  52  //
  53  //   - For larger numbers of hosted zones, the easiest solution is to use more
  54  //     than one reusable delegation set.
  55  //
  56  //   - For larger numbers of hosted zones, you can also migrate hosted zones that
  57  //     have overlapping name servers to hosted zones that don't have overlapping name
  58  //     servers, then migrate the hosted zones again to use the reusable delegation set.
  59  //
  60  // [Configuring White Label Name Servers]: https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/white-label-name-servers.html
  61  func (c *Client) CreateReusableDelegationSet(ctx context.Context, params *CreateReusableDelegationSetInput, optFns ...func(*Options)) (*CreateReusableDelegationSetOutput, error) {
  62  	if params == nil {
  63  		params = &CreateReusableDelegationSetInput{}
  64  	}
  65  
  66  	result, metadata, err := c.invokeOperation(ctx, "CreateReusableDelegationSet", params, optFns, c.addOperationCreateReusableDelegationSetMiddlewares)
  67  	if err != nil {
  68  		return nil, err
  69  	}
  70  
  71  	out := result.(*CreateReusableDelegationSetOutput)
  72  	out.ResultMetadata = metadata
  73  	return out, nil
  74  }
  75  
  76  type CreateReusableDelegationSetInput struct {
  77  
  78  	// A unique string that identifies the request, and that allows you to retry
  79  	// failed CreateReusableDelegationSet requests without the risk of executing the
  80  	// operation twice. You must use a unique CallerReference string every time you
  81  	// submit a CreateReusableDelegationSet request. CallerReference can be any unique
  82  	// string, for example a date/time stamp.
  83  	//
  84  	// This member is required.
  85  	CallerReference *string
  86  
  87  	// If you want to mark the delegation set for an existing hosted zone as reusable,
  88  	// the ID for that hosted zone.
  89  	HostedZoneId *string
  90  
  91  	noSmithyDocumentSerde
  92  }
  93  
  94  type CreateReusableDelegationSetOutput struct {
  95  
  96  	// A complex type that contains name server information.
  97  	//
  98  	// This member is required.
  99  	DelegationSet *types.DelegationSet
 100  
 101  	// The unique URL representing the new reusable delegation set.
 102  	//
 103  	// This member is required.
 104  	Location *string
 105  
 106  	// Metadata pertaining to the operation's result.
 107  	ResultMetadata middleware.Metadata
 108  
 109  	noSmithyDocumentSerde
 110  }
 111  
 112  func (c *Client) addOperationCreateReusableDelegationSetMiddlewares(stack *middleware.Stack, options Options) (err error) {
 113  	if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
 114  		return err
 115  	}
 116  	err = stack.Serialize.Add(&awsRestxml_serializeOpCreateReusableDelegationSet{}, middleware.After)
 117  	if err != nil {
 118  		return err
 119  	}
 120  	err = stack.Deserialize.Add(&awsRestxml_deserializeOpCreateReusableDelegationSet{}, middleware.After)
 121  	if err != nil {
 122  		return err
 123  	}
 124  	if err := addProtocolFinalizerMiddlewares(stack, options, "CreateReusableDelegationSet"); err != nil {
 125  		return fmt.Errorf("add protocol finalizers: %v", err)
 126  	}
 127  
 128  	if err = addlegacyEndpointContextSetter(stack, options); err != nil {
 129  		return err
 130  	}
 131  	if err = addSetLoggerMiddleware(stack, options); err != nil {
 132  		return err
 133  	}
 134  	if err = addClientRequestID(stack); err != nil {
 135  		return err
 136  	}
 137  	if err = addComputeContentLength(stack); err != nil {
 138  		return err
 139  	}
 140  	if err = addResolveEndpointMiddleware(stack, options); err != nil {
 141  		return err
 142  	}
 143  	if err = addComputePayloadSHA256(stack); err != nil {
 144  		return err
 145  	}
 146  	if err = addRetry(stack, options); err != nil {
 147  		return err
 148  	}
 149  	if err = addRawResponseToMetadata(stack); err != nil {
 150  		return err
 151  	}
 152  	if err = addRecordResponseTiming(stack); err != nil {
 153  		return err
 154  	}
 155  	if err = addSpanRetryLoop(stack, options); err != nil {
 156  		return err
 157  	}
 158  	if err = addClientUserAgent(stack, options); err != nil {
 159  		return err
 160  	}
 161  	if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil {
 162  		return err
 163  	}
 164  	if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil {
 165  		return err
 166  	}
 167  	if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil {
 168  		return err
 169  	}
 170  	if err = addTimeOffsetBuild(stack, c); err != nil {
 171  		return err
 172  	}
 173  	if err = addUserAgentRetryMode(stack, options); err != nil {
 174  		return err
 175  	}
 176  	if err = addCredentialSource(stack, options); err != nil {
 177  		return err
 178  	}
 179  	if err = addOpCreateReusableDelegationSetValidationMiddleware(stack); err != nil {
 180  		return err
 181  	}
 182  	if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateReusableDelegationSet(options.Region), middleware.Before); err != nil {
 183  		return err
 184  	}
 185  	if err = addRecursionDetection(stack); err != nil {
 186  		return err
 187  	}
 188  	if err = addRequestIDRetrieverMiddleware(stack); err != nil {
 189  		return err
 190  	}
 191  	if err = addResponseErrorMiddleware(stack); err != nil {
 192  		return err
 193  	}
 194  	if err = addSanitizeURLMiddleware(stack); err != nil {
 195  		return err
 196  	}
 197  	if err = addRequestResponseLogging(stack, options); err != nil {
 198  		return err
 199  	}
 200  	if err = addDisableHTTPSMiddleware(stack, options); err != nil {
 201  		return err
 202  	}
 203  	if err = addInterceptBeforeRetryLoop(stack, options); err != nil {
 204  		return err
 205  	}
 206  	if err = addInterceptAttempt(stack, options); err != nil {
 207  		return err
 208  	}
 209  	if err = addInterceptors(stack, options); err != nil {
 210  		return err
 211  	}
 212  	return nil
 213  }
 214  
 215  func newServiceMetadataMiddleware_opCreateReusableDelegationSet(region string) *awsmiddleware.RegisterServiceMetadata {
 216  	return &awsmiddleware.RegisterServiceMetadata{
 217  		Region:        region,
 218  		ServiceID:     ServiceID,
 219  		OperationName: "CreateReusableDelegationSet",
 220  	}
 221  }
 222