Рейтинг:0

AWS CDK добавляет запись псевдонима маршрута 53 самым простым способом

флаг us

Я создал шлюз API для веб-сокетов с CDK. Для облегчения запоминания URL-адреса я хочу дать sadjl342r.execute-api.amazonaws псевдоним в Route53.

Что-то вроде «my-ws-api.mydomain.tld»

Вот как я создал шлюз API

const websocketEventsLambda: IFunction = this.createWebsocketsLambda(props.stage);

this.apiGatewayWebSockets = новый CfnApi(это, apiGatewayId, {
    имя: apiGatewayId,
    тип протокола: "WEBSOCKET",
    routeSelectionExpression: "$request.body.topic",
    apiKeySelectionExpression: "$request.header.x-api-key"
});

const connectIntegration = новый CfnIntegration(
    это,
    "websockets-connect-lambda-integration-" + props.stage,
    {
        APIId: this.apiGatewayWebSockets.ref,
        тип подключения: "ИНТЕРНЕТ",
        тип интеграции: "AWS_PROXY",
        Метод интеграции: "POST",
        интеграцияUri:
            "arn:aws:apigateway:eu-central-1:лямбда:путь/2015-03-31/функции/arn:aws:лямбда" +
            ":<REGION>:<ACCOUNT_ID>:function:" + websocketEventsLambda.functionName +
            "/вызовы",
        passthroughBehavior: "WHEN_NO_MATCH",
        полезная нагрузкаFormatVersion: "1.0",
    }
);

const connectRoute = новый CfnRoute(
    это,
    "apigateway-websockets-connect-route-" + props.stage,
    {
        APIId: this.apiGatewayWebSockets.ref,
        маршрутКлюч: "$connect",
        авторизацияТип: "НЕТ",
        цель: "интеграции/" + connectIntegration.ref
    }
);

константное развертывание = новое CfnDeployment(
    это,
    `apigatewayv2-websockets-deployment-` + props.stage,
    {
        APIId: this.apiGatewayWebSockets.ref
    }
);

новый CfnStage(this, `apigateway-stage-${props.stage}`, {
    APIId: this.apiGatewayWebSockets.ref,
    авторазвертывание: правда,
    идентификатор развертывания: развертывание.ref,
    stageName: реквизит.стадия
});

развертывание.addDependsOn(connectRoute);
развертывание.addDependsOn(disconnectRoute);
развертывание.addDependsOn(subscribeRoute);
развертывание.addDependsOn(defaultRoute);

this.webSocketsApiURL =
    развертывание.apiid +
    ".execute-api." +
    этот.регион +
    ".amazonaws.com/" + props.stage;

Теперь я пытаюсь создать ARecord в той же области (я использовал этот ответ в качестве отправной точки: https://stackoverflow.com/a/56599567/15013406)

const domainName: string = "ws-api-" + props.stage + "." + ДОМЕН;

новый route53.ARecord (это, "AliasRecord", {
    имя_записи: имя_домена,
    цель: route53.RecordTarget.fromAlias({
        связывать() {
            возвращаться {
                dnsName: webSocketsApiURL,
                hostedZoneId: не знаю, что входить сюда
            };
        }
    }),
    зона: hostedZone
});

Я не знаю, что ввести для hostedZoneId в последнем фрагменте кода. Обратите внимание, что в этом ответе говорится, что это должна быть какая-то другая зона, отличная от зоны моего собственного домена, которая должна указывать на шлюз API.

Видеть https://stackoverflow.com/a/56599567/15013406:

Примечание: hostedZoneId для вашей записи псевдонима не совпадает с идентификатором размещенной зоны вашей собственной зоны.

)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.