Skip to content

Commit f1dc60a

Browse files
committed
✅ Add example code for record set
1 parent 6a5af5c commit f1dc60a

File tree

3 files changed

+156
-0
lines changed

3 files changed

+156
-0
lines changed

gov2/route53/go.mod

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
module example.aws/go-v2/examples/route53
2+
3+
go 1.21.9
4+
5+
require (
6+
github.com/aws/aws-sdk-go-v2/config v1.27.36
7+
github.com/aws/aws-sdk-go-v2/service/route53 v1.44.0
8+
)
9+
10+
require (
11+
github.com/aws/aws-sdk-go-v2 v1.31.0 // indirect
12+
github.com/aws/aws-sdk-go-v2/credentials v1.17.34 // indirect
13+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 // indirect
14+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 // indirect
15+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 // indirect
16+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect
17+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 // indirect
18+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 // indirect
19+
github.com/aws/aws-sdk-go-v2/service/sso v1.23.0 // indirect
20+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.0 // indirect
21+
github.com/aws/aws-sdk-go-v2/service/sts v1.31.0 // indirect
22+
github.com/aws/smithy-go v1.21.0 // indirect
23+
github.com/jmespath/go-jmespath v0.4.0 // indirect
24+
)

gov2/route53/go.sum

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
github.com/aws/aws-sdk-go-v2 v1.31.0 h1:3V05LbxTSItI5kUqNwhJrrrY1BAXxXt0sN0l72QmG5U=
2+
github.com/aws/aws-sdk-go-v2 v1.31.0/go.mod h1:ztolYtaEUtdpf9Wftr31CJfLVjOnD/CVRkKOOYgF8hA=
3+
github.com/aws/aws-sdk-go-v2/config v1.27.36 h1:4IlvHh6Olc7+61O1ktesh0jOcqmq/4WG6C2Aj5SKXy0=
4+
github.com/aws/aws-sdk-go-v2/config v1.27.36/go.mod h1:IiBpC0HPAGq9Le0Xxb1wpAKzEfAQ3XlYgJLYKEVYcfw=
5+
github.com/aws/aws-sdk-go-v2/credentials v1.17.34 h1:gmkk1l/cDGSowPRzkdxYi8edw+gN4HmVK151D/pqGNc=
6+
github.com/aws/aws-sdk-go-v2/credentials v1.17.34/go.mod h1:4R9OEV3tgFMsok4ZeFpExn7zQaZRa9MRGFYnI/xC/vs=
7+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 h1:C/d03NAmh8C4BZXhuRNboF/DqhBkBCeDiJDcaqIT5pA=
8+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14/go.mod h1:7I0Ju7p9mCIdlrfS+JCgqcYD0VXz/N4yozsox+0o078=
9+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 h1:kYQ3H1u0ANr9KEKlGs/jTLrBFPo8P8NaH/w7A01NeeM=
10+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18/go.mod h1:r506HmK5JDUh9+Mw4CfGJGSSoqIiLCndAuqXuhbv67Y=
11+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 h1:Z7IdFUONvTcvS7YuhtVxN99v2cCoHRXOS4mTr0B/pUc=
12+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18/go.mod h1:DkKMmksZVVyat+Y+r1dEOgJEfUeA7UngIHWeKsi0yNc=
13+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ=
14+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc=
15+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 h1:QFASJGfT8wMXtuP3D5CRmMjARHv9ZmzFUMJznHDOY3w=
16+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5/go.mod h1:QdZ3OmoIjSX+8D1OPAzPxDfjXASbBMDsz9qvtyIhtik=
17+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 h1:Xbwbmk44URTiHNx6PNo0ujDE6ERlsCKJD3u1zfnzAPg=
18+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20/go.mod h1:oAfOFzUB14ltPZj1rWwRc3d/6OgD76R8KlvU3EqM9Fg=
19+
github.com/aws/aws-sdk-go-v2/service/route53 v1.44.0 h1:eDfF/a5X47PX+uGTUeGe8R+sfmDlP13lYnjHTW7sLPY=
20+
github.com/aws/aws-sdk-go-v2/service/route53 v1.44.0/go.mod h1:l2ABSKg3AibEJeR/l60cfeGU54UqF3VTgd51pq+vYhU=
21+
github.com/aws/aws-sdk-go-v2/service/sso v1.23.0 h1:fHySkG0IGj2nepgGJPmmhZYL9ndnsq1Tvc6MeuVQCaQ=
22+
github.com/aws/aws-sdk-go-v2/service/sso v1.23.0/go.mod h1:XRlMvmad0ZNL+75C5FYdMvbbLkd6qiqz6foR1nA1PXY=
23+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.0 h1:cU/OeQPNReyMj1JEBgjE29aclYZYtXcsPMXbTkVGMFk=
24+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.0/go.mod h1:FnvDM4sfa+isJ3kDXIzAB9GAwVSzFzSy97uZ3IsHo4E=
25+
github.com/aws/aws-sdk-go-v2/service/sts v1.31.0 h1:GNVxIHBTi2EgwCxpNiozhNasMOK+ROUA2Z3X+cSBX58=
26+
github.com/aws/aws-sdk-go-v2/service/sts v1.31.0/go.mod h1:yMWe0F+XG0DkRZK5ODZhG7BEFYhLXi2dqGsv6tX0cgI=
27+
github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA=
28+
github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
29+
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
30+
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
31+
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
32+
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
33+
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
34+
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
35+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
36+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
37+
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
38+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
39+
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
40+
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

gov2/route53/hello/hello.go

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX - License - Identifier: Apache - 2.0
3+
// snippet-start:[route53.go-v2.route53.hello]
4+
package main
5+
6+
import (
7+
"context"
8+
"errors"
9+
"flag"
10+
"fmt"
11+
"log"
12+
13+
"github.com/aws/aws-sdk-go-v2/aws"
14+
"github.com/aws/aws-sdk-go-v2/config"
15+
"github.com/aws/aws-sdk-go-v2/service/route53"
16+
"github.com/aws/aws-sdk-go-v2/service/route53/types"
17+
)
18+
19+
const CloudFrontHostedZoneID = "Z2FDTNDATAQYW2"
20+
const region = "us-east-1"
21+
22+
var (
23+
// Define the flags
24+
// hostedZoneID is the ID of the hosted zone.
25+
hostedZoneID = ""
26+
// domain is the domain to point to the CloudFront domain.
27+
domain = ""
28+
// cloudfrontDomain is the CloudFront domain.
29+
cloudfrontDomain = ""
30+
)
31+
32+
// main uses the AWS SDK for Go (v2) to operate an Amazon route53 client and
33+
// change resource record sets to point to a domain.
34+
// This example uses the default settings specified in your shared credentials
35+
// and config files.
36+
func main() {
37+
38+
// Get the hosted zone ID, domain, and CloudFront domain from the user.
39+
flag.StringVar(&hostedZoneID, "bucket", "", "<HOSTED ZONE ID>")
40+
flag.StringVar(&cloudfrontDomain, "cert", "", "<CLOUDFRONT DOMAIN>")
41+
flag.StringVar(&domain, "domain", "", "<YOUR DOMAIN>")
42+
flag.Parse()
43+
if hostedZoneID == "" {
44+
log.Println(errors.New("please setup hosted zone ID"))
45+
return
46+
}
47+
48+
if cloudfrontDomain == "" {
49+
log.Println(errors.New("please setup CloudFront domain"))
50+
return
51+
}
52+
53+
if domain == "" {
54+
log.Println(errors.New("please setup your domain"))
55+
return
56+
}
57+
58+
ctx := context.TODO()
59+
sdkConfig, err := config.LoadDefaultConfig(ctx, config.WithRegion(region))
60+
if err != nil {
61+
fmt.Println("Couldn't load default configuration. Have you set up your AWS account?")
62+
fmt.Println(err)
63+
return
64+
}
65+
route53Client := route53.NewFromConfig(sdkConfig)
66+
output, err := route53Client.ChangeResourceRecordSets(ctx, &route53.ChangeResourceRecordSetsInput{
67+
HostedZoneId: aws.String(hostedZoneID),
68+
ChangeBatch: &types.ChangeBatch{
69+
Changes: []types.Change{
70+
{
71+
Action: types.ChangeActionUpsert,
72+
ResourceRecordSet: &types.ResourceRecordSet{
73+
Type: types.RRTypeA,
74+
Name: aws.String(domain),
75+
AliasTarget: &types.AliasTarget{
76+
DNSName: aws.String(cloudfrontDomain),
77+
HostedZoneId: aws.String(CloudFrontHostedZoneID),
78+
EvaluateTargetHealth: false,
79+
},
80+
},
81+
},
82+
},
83+
},
84+
})
85+
if err != nil {
86+
fmt.Printf("Couldn't change resource record sets. Here's why: %v\n", err)
87+
return
88+
}
89+
fmt.Println(output)
90+
}
91+
92+
// snippet-end:[route53.go-v2.route53.hello]

0 commit comments

Comments
 (0)