使用AWS Cloudformation无法为Websocket API网关创建自定义域名

时间:2019-03-08 14:50:50

标签: amazon-web-services websocket amazon-cloudformation aws-api-gateway

我需要为启用了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不支持此功能的原因。

任何解决方法或反馈将不胜感激。

2 个答案:

答案 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的形式提供。