DelegateDNSAction: Metadata: 'aws:copilot:description': 'Delegate DNS for environment subdomain' Condition: DelegateDNS Type: Custom::DNSDelegationFunction DependsOn: - DNSDelegationFunction - EnvironmentHostedZone Properties: ServiceToken: !GetAtt DNSDelegationFunction.Arn DomainName: !Sub ${AppName}.${AppDNSName} SubdomainName: !Sub ${EnvironmentName}.${AppName}.${AppDNSName} NameServers: !GetAtt EnvironmentHostedZone.NameServers RootDNSRole: !Ref AppDNSDelegationRole HTTPSCert: Metadata: 'aws:copilot:description': 'Request and validate an ACM certificate for your domain' Condition: DelegateDNS Type: Custom::CertificateValidationFunction DependsOn: - CertificateValidationFunction - EnvironmentHostedZone - DelegateDNSAction Properties: ServiceToken: !GetAtt CertificateValidationFunction.Arn AppName: !Ref AppName EnvName: !Ref EnvironmentName DomainName: !Ref AppDNSName Aliases: !Ref Aliases EnvHostedZoneId: !Ref EnvironmentHostedZone Region: !Ref AWS::Region RootDNSRole: !Ref AppDNSDelegationRole CustomDomainAction: Metadata: 'aws:copilot:description': 'Add an A-record to the hosted zone for the domain alias' Condition: ManagedAliases Type: Custom::CustomDomainFunction Properties: ServiceToken: !GetAtt CustomDomainFunction.Arn AppName: !Ref AppName EnvName: !Ref EnvironmentName Aliases: !Ref Aliases AppDNSRole: !Ref AppDNSDelegationRole DomainName: !Ref AppDNSName {{- if .CDNConfig}} PublicAccessDNS: !GetAtt CloudFrontDistribution.DomainName PublicAccessHostedZone: Z2FDTNDATAQYW2 # See https://go.aws/3cPhvlX {{- else}} PublicAccessDNS: !GetAtt PublicLoadBalancer.DNSName PublicAccessHostedZone: !GetAtt PublicLoadBalancer.CanonicalHostedZoneID {{- end}}