Skip to content

Commit f68390c

Browse files
authored
fix(aws): fix backward compatibility of aws custom domain deployments (#803)
* aliases original domain name pulumi resources * applies original pulumi parent resources to API domains * only forces deployment to us-east-1 for CDN domains
1 parent 9febb5b commit f68390c

File tree

3 files changed

+48
-14
lines changed

3 files changed

+48
-14
lines changed

cloud/aws/deploy/api.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,11 @@ func (a *NitricAwsPulumiProvider) Api(ctx *pulumi.Context, parent pulumi.Resourc
250250
}
251251

252252
func (a *NitricAwsPulumiProvider) createApiDomainName(ctx *pulumi.Context, name string, domainName string, stage *apigatewayv2.Stage, api *apigatewayv2.Api) error {
253-
domain, err := a.newPulumiDomainName(ctx, domainName)
253+
domain, err := a.newPulumiDomainName(ctx, domainArgs{
254+
DomainName: domainName,
255+
// Required for backwards compatibility with provider versions < 1.26.1
256+
AliasName: name,
257+
})
254258
if err != nil {
255259
return err
256260
}
@@ -263,7 +267,7 @@ func (a *NitricAwsPulumiProvider) createApiDomainName(ctx *pulumi.Context, name
263267
SecurityPolicy: pulumi.String("TLS_1_2"),
264268
CertificateArn: domain.CertificateValidation.CertificateArn,
265269
},
266-
})
270+
}, pulumi.Parent(domain))
267271
if err != nil {
268272
return err
269273
}
@@ -273,7 +277,7 @@ func (a *NitricAwsPulumiProvider) createApiDomainName(ctx *pulumi.Context, name
273277
ApiId: api.ID(),
274278
DomainName: apiDomainName.DomainName,
275279
Stage: stage.Name,
276-
}, pulumi.DependsOn([]pulumi.Resource{stage}))
280+
}, pulumi.DependsOn([]pulumi.Resource{stage}), pulumi.Parent(domain))
277281
if err != nil {
278282
return err
279283
}
@@ -294,7 +298,7 @@ func (a *NitricAwsPulumiProvider) createApiDomainName(ctx *pulumi.Context, name
294298
EvaluateTargetHealth: pulumi.Bool(false),
295299
},
296300
},
297-
}, pulumi.DependsOn([]pulumi.Resource{domain}))
301+
}, pulumi.Parent(domain))
298302
if err != nil {
299303
return err
300304
}

cloud/aws/deploy/domain.go

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package deploy
1818

1919
import (
2020
"fmt"
21+
"slices"
2122

2223
awsprovider "github.com/pulumi/pulumi-aws/sdk/v5/go/aws"
2324

@@ -35,24 +36,32 @@ type Domain struct {
3536
CertificateValidation *acm.CertificateValidation
3637
}
3738

38-
func (a *NitricAwsPulumiProvider) newPulumiDomainName(ctx *pulumi.Context, domainName string) (*Domain, error) {
39+
type domainArgs struct {
40+
DomainName string
41+
// Required for backwards compatibility with provider versions < 1.26.1
42+
AliasName string
43+
// If the domain is used for a CDN, it will be deployed in the us-east-1 region
44+
IsCDNDomain bool
45+
}
46+
47+
func (a *NitricAwsPulumiProvider) newPulumiDomainName(ctx *pulumi.Context, args domainArgs) (*Domain, error) {
3948
var err error
40-
res := &Domain{Name: domainName}
49+
res := &Domain{Name: args.DomainName}
4150

42-
res.ZoneLookup, err = resources.GetZoneID(domainName)
51+
res.ZoneLookup, err = resources.GetZoneID(args.DomainName)
4352
if err != nil {
4453
return nil, err
4554
}
4655

47-
err = ctx.RegisterComponentResource("nitric:api:DomainName", fmt.Sprintf("%s-%s", domainName, a.StackId), res)
56+
err = ctx.RegisterComponentResource("nitric:api:DomainName", fmt.Sprintf("%s-%s", args.DomainName, a.StackId), res)
4857
if err != nil {
4958
return nil, err
5059
}
5160

5261
defaultOptions := []pulumi.ResourceOption{pulumi.Parent(res)}
5362

5463
// Create an AWS provider for the us-east-1 region as the acm certificates require being deployed in us-east-1 region
55-
if a.Region != "us-east-1" {
64+
if args.IsCDNDomain && a.Region != "us-east-1" {
5665
useast1, err := awsprovider.NewProvider(ctx, "us-east-1", &awsprovider.ProviderArgs{
5766
Region: pulumi.String("us-east-1"),
5867
})
@@ -64,9 +73,14 @@ func (a *NitricAwsPulumiProvider) newPulumiDomainName(ctx *pulumi.Context, domai
6473
}
6574

6675
cert, err := acm.NewCertificate(ctx, fmt.Sprintf("cert-%s", a.StackId), &acm.CertificateArgs{
67-
DomainName: pulumi.String(domainName),
76+
DomainName: pulumi.String(args.DomainName),
6877
ValidationMethod: pulumi.String("DNS"),
69-
}, defaultOptions...)
78+
},
79+
slices.Concat(defaultOptions, []pulumi.ResourceOption{pulumi.Aliases([]pulumi.Alias{
80+
// Required for backwards compatibility with provider versions < 1.26.1
81+
{Name: pulumi.String(fmt.Sprintf("%s-%s-cert", args.AliasName, args.DomainName))},
82+
})})...,
83+
)
7084
if err != nil {
7185
return nil, err
7286
}
@@ -89,7 +103,13 @@ func (a *NitricAwsPulumiProvider) newPulumiDomainName(ctx *pulumi.Context, domai
89103
},
90104
Ttl: pulumi.Int(10 * 60),
91105
ZoneId: pulumi.String(res.ZoneLookup.ZoneID),
92-
}, []pulumi.ResourceOption{pulumi.Parent(res)}...)
106+
}, []pulumi.ResourceOption{
107+
pulumi.Parent(res),
108+
pulumi.Aliases([]pulumi.Alias{
109+
// Required for backwards compatibility with provider versions < 1.26.1
110+
{Name: pulumi.String(fmt.Sprintf("%s-%s-certvalidationdns", args.AliasName, args.DomainName))},
111+
}),
112+
}...)
93113
if err != nil {
94114
return nil, err
95115
}
@@ -99,7 +119,14 @@ func (a *NitricAwsPulumiProvider) newPulumiDomainName(ctx *pulumi.Context, domai
99119
ValidationRecordFqdns: pulumi.StringArray{
100120
cdnRecord.Fqdn,
101121
},
102-
}, defaultOptions...)
122+
},
123+
slices.Concat(defaultOptions, []pulumi.ResourceOption{
124+
pulumi.Aliases([]pulumi.Alias{
125+
// Required for backwards compatibility with provider versions < 1.26.1
126+
{Name: pulumi.String(fmt.Sprintf("%s-%s-certvalidation", args.AliasName, args.DomainName))},
127+
}),
128+
})...,
129+
)
103130
if err != nil {
104131
return nil, err
105132
}

cloud/aws/deploy/website.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,10 @@ func (a *NitricAwsPulumiProvider) deployCloudfrontDistribution(ctx *pulumi.Conte
335335
if domainName != "" {
336336
aliases = []string{domainName}
337337

338-
domain, err := a.newPulumiDomainName(ctx, domainName)
338+
domain, err := a.newPulumiDomainName(ctx, domainArgs{
339+
DomainName: domainName,
340+
IsCDNDomain: true,
341+
})
339342
if err != nil {
340343
return err
341344
}

0 commit comments

Comments
 (0)