Tôi đã tạo Cổng API cho ổ cắm web bằng CDK.
Để dễ nhớ URL hơn, tôi muốn cung cấp cho sadjl342r.execute-api.amazonaws một ALIAS trong Route53
Một cái gì đó như "my-ws-api.mydomain.tld"
Đây là cách tôi tạo cổng API
const websocketEventsLambda: IFunction = this.createWebsocketsLambda(props.stage);
this.apiGatewayWebSockets = new CfnApi(this, apiGatewayId, {
tên: apiGatewayId,
loại giao thức: "WEBSOCKET",
routeSelectionExpression: "$request.body.topic",
apiKeySelectionExpression: "$request.header.x-api-key"
});
const connectIntegration = new CfnIntegration(
cái này,
"websockets-connect-lambda-integration-" + props.stage,
{
apiId: this.apiGatewayWebSockets.ref,
Loại kết nối: "INTERNET",
loại tích hợp: "AWS_PROXY",
tích hợpMethod: "POST",
tích hợpUri:
"arn:aws:apigateway:eu-central-1:lambda:path/2015-03-31/functions/arn:aws:lambda" +
":<REGION>:<ACCOUNT_ID>:function:" + websocketEventsLambda.functionName +
"/lời gọi",
passthroughBehavior: "WHEN_NO_MATCH",
payloadFormatVersion: "1.0",
}
);
const connectRoute = new CfnRoute(
cái này,
"apigateway-websockets-connect-route-" + props.stage,
{
apiId: this.apiGatewayWebSockets.ref,
routeKey: "$connect",
loại ủy quyền: "KHÔNG CÓ",
mục tiêu: "tích hợp/" + connectIntegration.ref
}
);
triển khai const = CfnDeployment mới (
cái này,
`apigatewayv2-websockets-deployment-` + props.stage,
{
apiId: this.apiGatewayWebSockets.ref
}
);
new CfnStage(this, `apigateway-stage-${props.stage}`, {
apiId: this.apiGatewayWebSockets.ref,
tự động triển khai: đúng,
triển khaiId: triển khai.ref,
tên sân khấu: props.stage
});
triển khai.addDependsOn (connectRoute);
triển khai.addDependsOn (ngắt kết nối);
triển khai.addDependsOn (đăng kýRoute);
triển khai.addDependsOn (tuyến đường mặc định);
this.webSocketsApiURL =
triển khai.apiId +
".execute-api." +
này.khu vực +
".amazonaws.com/" + props.stage;
Bây giờ tôi cố gắng tạo ARecord trong cùng phạm vi (tôi đã sử dụng câu trả lời này làm điểm bắt đầu: https://stackoverflow.com/a/56599567/15013406)
const domainName: string = "ws-api-" + props.stage + "." + MIỀN;
route53.ARecord mới (cái này, "AliasRecord", {
recordName: domainName,
mục tiêu: route53.RecordTarget.fromAlias({
trói buộc() {
trở lại {
tên dns: webSocketsApiURL,
hostsZoneId: idontknowwhattoenterhere
};
}
}),
vùng: hostsZone
});
Tôi không biết phải nhập gì cho hostsZoneId trong đoạn mã cuối cùng. Lưu ý rằng câu trả lời này nói rằng đây phải là một số vùng khác với vùng miền của riêng tôi sẽ trỏ đến Cổng API
Nhìn thấy https://stackoverflow.com/a/56599567/15013406:
Lưu ý: hostsZoneId cho bản ghi bí danh của bạn không giống với id khu vực được lưu trữ của khu vực của riêng bạn.
)