api_op_CreateHostedZone.go (11701B)
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 new public or private hosted zone. You create records in a public 15 // hosted zone to define how you want to route traffic on the internet for a 16 // domain, such as example.com, and its subdomains (apex.example.com, 17 // acme.example.com). You create records in a private hosted zone to define how you 18 // want to route traffic for a domain and its subdomains within one or more Amazon 19 // Virtual Private Clouds (Amazon VPCs). 20 // 21 // You can't convert a public hosted zone to a private hosted zone or vice versa. 22 // Instead, you must create a new hosted zone with the same name and create new 23 // resource record sets. 24 // 25 // For more information about charges for hosted zones, see [Amazon Route 53 Pricing]. 26 // 27 // Note the following: 28 // 29 // - You can't create a hosted zone for a top-level domain (TLD) such as .com. 30 // 31 // - For public hosted zones, Route 53 automatically creates a default SOA 32 // record and four NS records for the zone. For more information about SOA and NS 33 // records, see [NS and SOA Records that Route 53 Creates for a Hosted Zone]in the Amazon Route 53 Developer Guide. 34 // 35 // If you want to use the same name servers for multiple public hosted zones, you 36 // 37 // can optionally associate a reusable delegation set with the hosted zone. See the 38 // DelegationSetId element. 39 // 40 // - If your domain is registered with a registrar other than Route 53, you must 41 // update the name servers with your registrar to make Route 53 the DNS service for 42 // the domain. For more information, see [Migrating DNS Service for an Existing Domain to Amazon Route 53]in the Amazon Route 53 Developer Guide. 43 // 44 // When you submit a CreateHostedZone request, the initial status of the hosted 45 // zone is PENDING . For public hosted zones, this means that the NS and SOA 46 // records are not yet available on all Route 53 DNS servers. When the NS and SOA 47 // records are available, the status of the zone changes to INSYNC . 48 // 49 // The CreateHostedZone request requires the caller to have an ec2:DescribeVpcs 50 // permission. 51 // 52 // When creating private hosted zones, the Amazon VPC must belong to the same 53 // partition where the hosted zone is created. A partition is a group of Amazon Web 54 // Services Regions. Each Amazon Web Services account is scoped to one partition. 55 // 56 // The following are the supported partitions: 57 // 58 // - aws - Amazon Web Services Regions 59 // 60 // - aws-cn - China Regions 61 // 62 // - aws-us-gov - Amazon Web Services GovCloud (US) Region 63 // 64 // For more information, see [Access Management] in the Amazon Web Services General Reference. 65 // 66 // [Access Management]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html 67 // [NS and SOA Records that Route 53 Creates for a Hosted Zone]: https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/SOA-NSrecords.html 68 // [Amazon Route 53 Pricing]: http://aws.amazon.com/route53/pricing/ 69 // 70 // [Migrating DNS Service for an Existing Domain to Amazon Route 53]: https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html 71 func (c *Client) CreateHostedZone(ctx context.Context, params *CreateHostedZoneInput, optFns ...func(*Options)) (*CreateHostedZoneOutput, error) { 72 if params == nil { 73 params = &CreateHostedZoneInput{} 74 } 75 76 result, metadata, err := c.invokeOperation(ctx, "CreateHostedZone", params, optFns, c.addOperationCreateHostedZoneMiddlewares) 77 if err != nil { 78 return nil, err 79 } 80 81 out := result.(*CreateHostedZoneOutput) 82 out.ResultMetadata = metadata 83 return out, nil 84 } 85 86 // A complex type that contains information about the request to create a public 87 // or private hosted zone. 88 type CreateHostedZoneInput struct { 89 90 // A unique string that identifies the request and that allows failed 91 // CreateHostedZone requests to be retried without the risk of executing the 92 // operation twice. You must use a unique CallerReference string every time you 93 // submit a CreateHostedZone request. CallerReference can be any unique string, 94 // for example, a date/time stamp. 95 // 96 // This member is required. 97 CallerReference *string 98 99 // The name of the domain. Specify a fully qualified domain name, for example, 100 // www.example.com. The trailing dot is optional; Amazon Route 53 assumes that the 101 // domain name is fully qualified. This means that Route 53 treats www.example.com 102 // (without a trailing dot) and www.example.com. (with a trailing dot) as 103 // identical. 104 // 105 // If you're creating a public hosted zone, this is the name you have registered 106 // with your DNS registrar. If your domain name is registered with a registrar 107 // other than Route 53, change the name servers for your domain to the set of 108 // NameServers that CreateHostedZone returns in DelegationSet . 109 // 110 // This member is required. 111 Name *string 112 113 // If you want to associate a reusable delegation set with this hosted zone, the 114 // ID that Amazon Route 53 assigned to the reusable delegation set when you created 115 // it. For more information about reusable delegation sets, see [CreateReusableDelegationSet]. 116 // 117 // If you are using a reusable delegation set to create a public hosted zone for a 118 // subdomain, make sure that the parent hosted zone doesn't use one or more of the 119 // same name servers. If you have overlapping nameservers, the operation will cause 120 // a ConflictingDomainsExist error. 121 // 122 // [CreateReusableDelegationSet]: https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateReusableDelegationSet.html 123 DelegationSetId *string 124 125 // (Optional) A complex type that contains the following optional values: 126 // 127 // - For public and private hosted zones, an optional comment 128 // 129 // - For private hosted zones, an optional PrivateZone element 130 // 131 // If you don't specify a comment or the PrivateZone element, omit HostedZoneConfig 132 // and the other elements. 133 HostedZoneConfig *types.HostedZoneConfig 134 135 // (Private hosted zones only) A complex type that contains information about the 136 // Amazon VPC that you're associating with this hosted zone. 137 // 138 // You can specify only one Amazon VPC when you create a private hosted zone. If 139 // you are associating a VPC with a hosted zone with this request, the paramaters 140 // VPCId and VPCRegion are also required. 141 // 142 // To associate additional Amazon VPCs with the hosted zone, use [AssociateVPCWithHostedZone] after you create 143 // a hosted zone. 144 // 145 // [AssociateVPCWithHostedZone]: https://docs.aws.amazon.com/Route53/latest/APIReference/API_AssociateVPCWithHostedZone.html 146 VPC *types.VPC 147 148 noSmithyDocumentSerde 149 } 150 151 // A complex type containing the response information for the hosted zone. 152 type CreateHostedZoneOutput struct { 153 154 // A complex type that contains information about the CreateHostedZone request. 155 // 156 // This member is required. 157 ChangeInfo *types.ChangeInfo 158 159 // A complex type that describes the name servers for this hosted zone. 160 // 161 // This member is required. 162 DelegationSet *types.DelegationSet 163 164 // A complex type that contains general information about the hosted zone. 165 // 166 // This member is required. 167 HostedZone *types.HostedZone 168 169 // The unique URL representing the new hosted zone. 170 // 171 // This member is required. 172 Location *string 173 174 // A complex type that contains information about an Amazon VPC that you 175 // associated with this hosted zone. 176 VPC *types.VPC 177 178 // Metadata pertaining to the operation's result. 179 ResultMetadata middleware.Metadata 180 181 noSmithyDocumentSerde 182 } 183 184 func (c *Client) addOperationCreateHostedZoneMiddlewares(stack *middleware.Stack, options Options) (err error) { 185 if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { 186 return err 187 } 188 err = stack.Serialize.Add(&awsRestxml_serializeOpCreateHostedZone{}, middleware.After) 189 if err != nil { 190 return err 191 } 192 err = stack.Deserialize.Add(&awsRestxml_deserializeOpCreateHostedZone{}, middleware.After) 193 if err != nil { 194 return err 195 } 196 if err := addProtocolFinalizerMiddlewares(stack, options, "CreateHostedZone"); err != nil { 197 return fmt.Errorf("add protocol finalizers: %v", err) 198 } 199 200 if err = addlegacyEndpointContextSetter(stack, options); err != nil { 201 return err 202 } 203 if err = addSetLoggerMiddleware(stack, options); err != nil { 204 return err 205 } 206 if err = addClientRequestID(stack); err != nil { 207 return err 208 } 209 if err = addComputeContentLength(stack); err != nil { 210 return err 211 } 212 if err = addResolveEndpointMiddleware(stack, options); err != nil { 213 return err 214 } 215 if err = addComputePayloadSHA256(stack); err != nil { 216 return err 217 } 218 if err = addRetry(stack, options); err != nil { 219 return err 220 } 221 if err = addRawResponseToMetadata(stack); err != nil { 222 return err 223 } 224 if err = addRecordResponseTiming(stack); err != nil { 225 return err 226 } 227 if err = addSpanRetryLoop(stack, options); err != nil { 228 return err 229 } 230 if err = addClientUserAgent(stack, options); err != nil { 231 return err 232 } 233 if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { 234 return err 235 } 236 if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { 237 return err 238 } 239 if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { 240 return err 241 } 242 if err = addTimeOffsetBuild(stack, c); err != nil { 243 return err 244 } 245 if err = addUserAgentRetryMode(stack, options); err != nil { 246 return err 247 } 248 if err = addCredentialSource(stack, options); err != nil { 249 return err 250 } 251 if err = addOpCreateHostedZoneValidationMiddleware(stack); err != nil { 252 return err 253 } 254 if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateHostedZone(options.Region), middleware.Before); err != nil { 255 return err 256 } 257 if err = addRecursionDetection(stack); err != nil { 258 return err 259 } 260 if err = addRequestIDRetrieverMiddleware(stack); err != nil { 261 return err 262 } 263 if err = addResponseErrorMiddleware(stack); err != nil { 264 return err 265 } 266 if err = addSanitizeURLMiddleware(stack); err != nil { 267 return err 268 } 269 if err = addRequestResponseLogging(stack, options); err != nil { 270 return err 271 } 272 if err = addDisableHTTPSMiddleware(stack, options); err != nil { 273 return err 274 } 275 if err = addInterceptBeforeRetryLoop(stack, options); err != nil { 276 return err 277 } 278 if err = addInterceptAttempt(stack, options); err != nil { 279 return err 280 } 281 if err = addInterceptExecution(stack, options); err != nil { 282 return err 283 } 284 if err = addInterceptBeforeSerialization(stack, options); err != nil { 285 return err 286 } 287 if err = addInterceptAfterSerialization(stack, options); err != nil { 288 return err 289 } 290 if err = addInterceptBeforeSigning(stack, options); err != nil { 291 return err 292 } 293 if err = addInterceptAfterSigning(stack, options); err != nil { 294 return err 295 } 296 if err = addInterceptTransmit(stack, options); err != nil { 297 return err 298 } 299 if err = addInterceptBeforeDeserialization(stack, options); err != nil { 300 return err 301 } 302 if err = addInterceptAfterDeserialization(stack, options); err != nil { 303 return err 304 } 305 if err = addSpanInitializeStart(stack); err != nil { 306 return err 307 } 308 if err = addSpanInitializeEnd(stack); err != nil { 309 return err 310 } 311 if err = addSpanBuildRequestStart(stack); err != nil { 312 return err 313 } 314 if err = addSpanBuildRequestEnd(stack); err != nil { 315 return err 316 } 317 return nil 318 } 319 320 func newServiceMetadataMiddleware_opCreateHostedZone(region string) *awsmiddleware.RegisterServiceMetadata { 321 return &awsmiddleware.RegisterServiceMetadata{ 322 Region: region, 323 ServiceID: ServiceID, 324 OperationName: "CreateHostedZone", 325 } 326 }