CloudFormation fails with Route53 RecordSet and ApiGatewayV2 Domain

I am using Serverless to create a WebSocket API with AWS. I have added the following additional CloudFormation resources inside the serverless.yml file:

Resources:
  ApiGatewayDomain:
    Type: AWS::ApiGatewayV2::DomainName
    Properties: 
      DomainName: ${opt:id}.example.com
      DomainNameConfigurations: 
        - EndpointType: REGIONAL
          CertificateArn: arn:aws:acm:eu-central-1:<REDACTED>:certificate/<REDACTED>

  ApiGatewayBasePathMapping:
    Type: AWS::ApiGatewayV2::ApiMapping
    Properties:
      DomainName: # ${opt:id}.example.com
        Ref: ApiGatewayDomain
      ApiId:
        Ref: "WebsocketsApi"
      Stage: ${opt:stage, 'dev'}
    DependsOn:
      - WebsocketsDeployment${sls:instanceId}
      - WebsocketsDeploymentStage

  Route53RecordSet:
    Type: AWS::Route53::RecordSet
    Properties:
      Type: A
      HostedZoneId: <REDACTED>
      Name:
        Ref: ApiGatewayDomain
      AliasTarget:
        DNSName: # <REDACTED>.execute-api.eu-central-1.amazonaws.com.
          Fn::Join:
            - ""
            -
              - Fn::GetAtt: [ApiGatewayDomain, RegionalDomainName]
              - "."
        HostedZoneId: # Z1U9ULNL0V5AJ3
          Fn::GetAtt: [ApiGatewayDomain, RegionalHostedZoneId]
    DependsOn:
      - ApiGatewayDomain

I want to achieve, that the deployment of a stack registers a custom api gateway domain (works), sets up the path mapping (works) and adds a Route53RecordSet (only works with concrete values).

I cannot figure out what I am doing wrong and always get an internal error from Route53. If I comment out the Fn::Join and Fn::GetAtt blocks for DNSName and HostedZoneId and use concrete values, everything works as expected. Am I missing something or is this simply an error with CloudFormation and Route53?