Пользовательское доменное имя для API WebSockets с Serverless - PullRequest
1 голос
/ 14 марта 2020

Я управляю REST API для приложения с Serverless и хочу расширить эту настройку с помощью API WebSockets в том же регионе. Все должно обрабатываться с одинаковым сертификатом, но с разными поддоменами.

Сначала я создал новый пользовательский домен с sls create_domain --stage=.... Затем я попытался добавить его в новый стек WebSockets, но закончился этой ошибкой:

Ошибка: не удалось найти ресурсы CloudFormation для ...

Я нашел его на Github, что это, похоже, не поддерживается CloudFormation прямо сейчас, поэтому Serverless не поддерживает его.

Поэтому я попытался присоединить свою сцену к пользовательскому имени домена вручную в пользовательском интерфейсе:

Смешивание API-интерфейсов REST и HTTP-API для одного и того же доменного имени может быть выполнено только через API-интерфейс V2 DomainName шлюза. В настоящее время API-интерфейсы WebSocket могут быть присоединены только к имени домена с другими API-интерфейсами WebSocket. Это также должно происходить через интерфейс API DomainName шлюза V2.

Больше путаницы возникает, поскольку в данном случае это даже не одно и то же доменное имя. Новое доменное имя было sockets.<DOMAIN>.com, а существующее - api.<DOMAIN>.com. Или разные субдомены попадают в «одно и то же доменное имя»?

Тем не менее я попытался создать собственный домен заново через CLI apigatewayv2:

aws apigatewayv2 create-domain-name --domain-name <DOMAIN> --domain-name-configurations file://domain-configuration.json --region eu-west-1

domain-configuration. 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"
}

]

Но это приводит к следующей ошибке:

Произошла ошибка (BadRequestException) при вызове операции CreateDomainName: Неверный сертификат ARN: arn : aws: ACM: мы-восток-1: 924441585974: сертификат / b88f0a3f-1393-4a16-a876-9830852b5207. Сертификат должен быть в 'eu-west-1'.

Мое текущее состояние состояло в том, что API-шлюз позволяет размещать только пользовательские сертификаты в us-east-1, поэтому эта ошибка смущает меня еще больше.

Сводка : Я полностью застрял в том, как привязать собственное доменное имя к моей стадии API WebSocket. Я рад каждому намеку в правильном направлении!

...