我需要为启用了websocket的API网关创建自定义域名,并且看来API网关v2的CloudFormation(基本上是针对websocket的)不支持它(至少文档https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-reference-apigatewayv2.html不支持)提及此)。我尝试使用AWS::ApiGateway::DomainName
,我相信它是用于Rest API网关的,但是堆栈因错误而失败
此自定义域名不能映射到WEBSOCKET协议Apis。
我看到AWS CLI确实支持API网关v2创建域名命令(https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-domain-name.html),但不确定CloudFormation不支持此功能的原因。
任何解决方法或反馈将不胜感激。
答案 0 :(得分:1)
不再需要lambda,https://stackoverflow.com/a/61834163/9799292
此Cloud Formation模板运行正常
Resources:
WebSocketDomainName:
Type: AWS::ApiGatewayV2::DomainName
Properties:
DomainName: <domain-name>
DomainNameConfigurations:
- EndpointType: 'REGIONAL'
CertificateArn: <cert-arn>
WebSocketMapping:
Type: AWS::ApiGatewayV2::ApiMapping
Properties:
ApiId: <app-id>
DomainName: !Ref WebSocketDomainName
Stage: <stage-name>
答案 1 :(得分:0)
通常,其工作方式是新的功能首先出现在CLI或API中,之后再添加到CFN中。为什么?因为我相信CFN在内部使用相同的API来创建具有给定属性的资源。这是发布Aurora Serverless时具有相同经验的类似主题。 Creating an Aurora serverless cluster from cloudformation
解决方法-创建由Lambda支持的AWS::CloudFormation::CustomResource,并从Lambda调用createDomainName API创建自定义域名。将来的某个时候,它可能会以cloudformation的形式提供。