Были заданы похожие вопросы, но ни один из них не смог помочь мне решить проблему, с которой я столкнулся. Я пытаюсь подключить мою функцию api-gateway / lamnda к пользовательскому доменному имени, и по какой-то причине при вызове api / domain не возвращается то, что я ожидал.
cdk version: 1.53.0
const lambdaFunction = new lambda.Function(this, 'LambdaApi', {
functionName: 'lambda-api',
handler: 'lambda.handler',
runtime: lambda.Runtime.NODEJS_12_X,
code: new lambda.AssetCode(join(process.cwd(), '../api/dist')),
memorySize: 128,
timeout: cdk.Duration.seconds(5),
})
const zone = route53.HostedZone.fromLookup(scope, 'Zone', {
'example.com',
privateZone: false,
})
const certificate = certificatemanager.Certificate.fromCertificateArn(
this,
'Certificate',
CERT_ARN,
)
const api = new apigateway.LambdaRestApi(this, 'LambdaApiGateway', {
handler: lambdaFunction,
proxy: true,
endpointTypes: [apigateway.EndpointType.EDGE],
defaultCorsPreflightOptions: {
allowOrigins: apigateway.Cors.ALL_ORIGINS,
},
options: {
restApiName: 'gateway-api',
domainName: {
domainName: 'api.example.com',
certificate,
},
deployOptions: {
stageName: 'prod',
metricsEnabled: true,
loggingLevel: apigateway.MethodLoggingLevel.INFO,
dataTraceEnabled: true,
},
},
})
new route53.ARecord(this, 'CustomDomainAliasRecord', {
zone,
recordName: 'api',
target: route53.RecordTarget.fromAlias(new targets.ApiGateway(api)),
})
Процесс развертывания работает нормально, ARecord создается на route53, который указывает на доменное имя api-gateway, создаются сопоставления api, также указывающие на prod
, как указано в stageName
, но когда вызов имени домена не работает, но при вызове конечной точки api-gateway он работает.
api.example.com/ping
возвращает healthy
{id}.execute-api.us-east-1.amazonaws.com/prod/ping
возвращает текущую дату
Изучал, но я не могу понять, почему api.example.com/ping
не работает