0

I am trying to use Route53 and Custom Domains to link a URL I have and the API gateway that is a Lambda Proxy underneath it.

This is what I have so far in my SAM file:

MyApiCertificate:
  Type: 'AWS::CertificateManager::Certificate'
  Properties:
    DomainName: example.com
MyApiDomainName:
  Type: 'AWS::ApiGateway::DomainName'
  Properties:
    RegionalCertificateArn: !Ref MyApiCertificate
    DomainName: example.com
MyApiBasePathMapping:
  Type: 'AWS::ApiGateway::BasePathMapping'
  Properties:
    RestApiId: !Ref PublicApi
    DomainName: !Ref MyApiDomainName
    BasePath: /
    Stage: stage
MyApiRoute53RecordSetGroup:
  Type: AWS::Route53::RecordSetGroup
  Properties:
    HostedZoneName: example.com
    RecordSets:
      - Name: example.com
        Type: A
        AliasTarget:
          EvaluateTargetHealth: false
          HostedZoneId: !GetAtt MyApiDomainName.DistributionHostedZoneId
          DNSName: !GetAtt MyApiDomainName.DistributionDomainName

I would like to make this of type CNAME and have the URL be stage.example.com

The following Code does not work.

MyApiCertificate:
  Type: 'AWS::CertificateManager::Certificate'
  Properties:
    DomainName: example.com
MyApiDomainName:
  Type: 'AWS::ApiGateway::DomainName'
  Properties:
    RegionalCertificateArn: !Ref MyApiCertificate
    DomainName: example.com
MyApiBasePathMapping:
  Type: 'AWS::ApiGateway::BasePathMapping'
  Properties:
    RestApiId: !Ref PublicApi
    DomainName: !Ref MyApiDomainName
    BasePath: /
    Stage: stage
MyApiRoute53RecordSetGroup:
  Type: AWS::Route53::RecordSetGroup
  Properties:
    HostedZoneName: example.com
    RecordSets:
      - Name: stage.example.com
        Type: CNAME
        AliasTarget:
          EvaluateTargetHealth: false
          HostedZoneId: !GetAtt MyApiDomainName.DistributionHostedZoneId
          DNSName: !GetAtt MyApiDomainName.DistributionDomainName

I am getting this error: Cannot import certificates for REGIONAL while EDGE is active. (Service: AmazonApiGateway; Status Code: 400; Error Code: BadRequestException; Request ID: XXXXXXXXXXXXXXXXXXXXXXXX)

Although nothing I have is an EDGE Api Gateway and Nothing has the name I want (Stage.example.com)

Any help on this issue would be appreciated!

VoltreX
  • 301
  • 1
  • 8

1 Answers1

0

I came across the same error using Terraform, and the issue was that I was specifying regional_certificate_arn rather than certificate_arn. API Gateway defaults to edge-optimized, which means you're specifying a RegionalCertificateArn with an edge-optimized API here - try using CertificateArn instead.

ryantmer
  • 673
  • 2
  • 11
  • 21