【发布时间】:2020-06-26 07:57:09
【问题描述】:
我正在使用无服务器管理应用程序的 REST API,并希望在同一区域使用 WebSockets API 扩展此设置。一切都应该使用相同的证书,但不同的子域来处理。
起初我使用sls create_domain --stage=... 创建了一个新的自定义域。
然后我尝试将它添加到新的 WebSockets 堆栈中,但以这个错误结束:
错误:找不到 CloudFormation 资源...
我在 Github 上发现 CloudFormation 现在似乎不支持这个,所以 Serverless 不支持它。
所以我尝试在 UI 中手动将我的舞台附加到自定义域名:
REST API 和 HTTP API 只能在同一个域名上混合使用 通过 API Gateway 的 V2 域名接口完成。现在, WebSocket API 只能附加到一个域名与其他 WebSocket API。这也必须通过 API Gateway 的 V2 域名接口。
出现更多混乱,因为在这种情况下它甚至不是同一个域名。新域名为sockets.<DOMAIN>.com,现有域名为api.<DOMAIN>.com。还是不同的子域属于“同一个域名”?
尽管如此,我还是尝试通过 apigatewayv2 CLI 再次创建自定义域:
aws apigatewayv2 create-domain-name --domain-name <DOMAIN> --domain-name-configurations file://domain-configuration.json --region eu-west-1
域配置.json:
[
{
"ApiGatewayDomainName": "<DOMAIN>",
"CertificateArn": "arn:aws:acm:us-east-1:<ACCOUNT_ID>:certificate/<CERT_ID>",
"CertificateName": "<DOMAIN>",
"DomainNameStatus": "AVAILABLE",
"EndpointType": "EDGE",
"SecurityPolicy": "TLS_1_2"
}
]
但这会导致以下错误:
调用 CreateDomainName 操作时发生错误 (BadRequestException):证书 ARN 无效:arn:aws:acm:us-east-1:924441585974:certificate/b88f0a3f-1393-4a16-a876-9830852b5207。证书必须在“eu-west-1”中。
我目前的状态是 API Gateway 只允许自定义证书位于 us-east-1,所以这个错误让我更加困惑。
总结:我完全不知道如何将自定义域名附加到我的 WebSocket API 阶段。我很高兴看到正确方向的每一个提示!
【问题讨论】:
标签: amazon-web-services websocket aws-api-gateway serverless-framework