Сбои CloudFormation завершаются с помощью Route53 RecordSet и домена ApiGatewayV2 - PullRequest
1 голос
/ 24 июня 2019

Я использую Serverless для создания API WebSocket с AWS. Я добавил следующие дополнительные ресурсы CloudFormation в файл serverless.yml:

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

Я хочу добиться, чтобы при развертывании стека регистрировался пользовательский домен шлюза API (работает), настраивалось отображение пути (работает) и добавлялся Route53RecordSet (работает только с конкретными значениями).

Я не могу понять, что я делаю неправильно, и всегда получаю внутреннюю ошибку от Route53. Если я закомментирую блоки Fn::Join и Fn::GetAtt для DNSName и HostedZoneId и использую конкретные значения, все работает как положено. Я что-то упустил или это просто ошибка в CloudFormation и Route53?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...