ness
Version:
✪ No-effort static sites deployed to your AWS account.
99 lines (94 loc) • 3.94 kB
YAML
AWSTemplateFormatVersion: '2010-09-09'
Parameters:
DomainStack:
Description: 'Stack name of domain stack.'
Type: String
WebStack:
Description: 'Stack name of web stack.'
Type: String
SubDomainNameWithDot:
Description: 'Primary name that is used to create the DNS entry with trailing dot. Leave blank for naked (or apex and bare) domain.'
Type: String
Default: ''
RedirectSubDomainNameWithDot:
Description: 'Optional sub domain name redirecting to DomainName (e.g. www.).'
Type: String
Default: ''
Conditions:
HasRedirectDomainName: !Not [!Equals [!Ref RedirectSubDomainNameWithDot, '']]
Resources:
Certificate:
Type: 'AWS::CertificateManager::Certificate'
Properties:
DomainName: {'Fn::ImportValue': !Sub '${DomainStack}-HostedZoneName'}
DomainValidationOptions:
- DomainName: {'Fn::ImportValue': !Sub '${DomainStack}-HostedZoneName'}
HostedZoneId: {'Fn::ImportValue': !Sub '${DomainStack}-HostedZoneId'}
SubjectAlternativeNames:
- !Sub
- '*.${HostedZoneName}'
- HostedZoneName: {'Fn::ImportValue': !Sub '${DomainStack}-HostedZoneName'}
ValidationMethod: DNS
Route53Record:
Type: 'AWS::Route53::RecordSetGroup'
Properties:
HostedZoneId: {'Fn::ImportValue': !Sub '${DomainStack}-HostedZoneId'}
RecordSets:
- Name: !Sub
- '${SubDomainNameWithDot}${HostedZoneName}'
- SubDomainNameWithDot: !Ref SubDomainNameWithDot
HostedZoneName: {'Fn::ImportValue': !Sub '${DomainStack}-HostedZoneName'}
Type: A
AliasTarget:
HostedZoneId: Z2FDTNDATAQYW2 # Magic CloudFront number
DNSName: {'Fn::ImportValue': !Sub '${WebStack}-DistributionDomainName'}
Route53RecordIPv6:
Type: 'AWS::Route53::RecordSetGroup'
Properties:
HostedZoneId: {'Fn::ImportValue': !Sub '${DomainStack}-HostedZoneId'}
RecordSets:
- Name: !Sub
- '${SubDomainNameWithDot}${HostedZoneName}'
- SubDomainNameWithDot: !Ref SubDomainNameWithDot
HostedZoneName: {'Fn::ImportValue': !Sub '${DomainStack}-HostedZoneName'}
Type: AAAA
AliasTarget:
HostedZoneId: Z2FDTNDATAQYW2 # Magic CloudFront number
DNSName: {'Fn::ImportValue': !Sub '${WebStack}-DistributionDomainName'}
Route53RecordRedirectV2:
Condition: HasRedirectDomainName
Type: 'AWS::Route53::RecordSetGroup'
Properties:
HostedZoneId: {'Fn::ImportValue': !Sub '${DomainStack}-HostedZoneId'}
RecordSets:
- Name: !Sub
- '${RedirectSubDomainNameWithDot}${HostedZoneName}'
- RedirectSubDomainNameWithDot: !Ref RedirectSubDomainNameWithDot
HostedZoneName: {'Fn::ImportValue': !Sub '${DomainStack}-HostedZoneName'}
Type: A
AliasTarget:
HostedZoneId: Z2FDTNDATAQYW2 # Magic CloudFront number
DNSName: {'Fn::ImportValue': !Sub '${WebStack}-DistributionDomainName'}
Route53RecordRedirectIPv6:
Condition: HasRedirectDomainName
Type: 'AWS::Route53::RecordSetGroup'
Properties:
HostedZoneId: {'Fn::ImportValue': !Sub '${DomainStack}-HostedZoneId'}
RecordSets:
- Name: !Sub
- '${RedirectSubDomainNameWithDot}${HostedZoneName}'
- RedirectSubDomainNameWithDot: !Ref RedirectSubDomainNameWithDot
HostedZoneName: {'Fn::ImportValue': !Sub '${DomainStack}-HostedZoneName'}
Type: AAAA
AliasTarget:
HostedZoneId: Z2FDTNDATAQYW2 # Magic CloudFront number
DNSName: {'Fn::ImportValue': !Sub '${WebStack}-DistributionDomainName'}
Outputs:
StackName:
Description: 'Stack name.'
Value: !Sub '${AWS::StackName}'
CertificateArn:
Description: 'ACM Certificate ARN'
Value: !Ref Certificate
Export:
Name: !Sub '${AWS::StackName}-CertificateArn'