Я использую 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?