Obtener dnsName y hostedZoneId de HttpApi en la misma pila.
Usando aws cdk, estoy creando un apigatewayv2.HttpApi
respaldado por funciones lambda.
Me gustaría configurar un dominio personalizado (apiCustomDomain
) para esta API creada, sin embargo, no puedo encontrar una manera de recuperar el dnsName
y hostedZoneId
de la API creada para crear un ARecord
.
import * as apigateway2 from '@aws-cdk/aws-apigatewayv2';
const apiCustomDomain = new apigateway2.DomainName(this, 'api-custom-domain', {
domainName: subDomainName,
certificate: certificate
});
const api = new apigateway2.HttpApi(this, 'my-api', {
apiName: 'my-api',
defaultDomainMapping: {
domainName: apiCustomDomain
},
createDefaultStage: true,
disableExecuteApiEndpoint: false,
defaultAuthorizer: new HttpIamAuthorizer()
});
new route53.ARecord(this, 'a-api-record', {
zone: hostedZone,
recordName: subDomainName,
target: route53.RecordTarget.fromAlias({
bind(record: IRecordSet, zone?: IHostedZone): AliasRecordTargetConfig {
return {
dnsName: api.?????, // ¿qué poner aquí?
hostedZoneId: api.????? // ¿qué poner aquí?
}
}
})
});
Ahora, en la versión 1 de apigateway
, era sencillo, obtendríamos esos valores de la propiedad domainName
de la api, algo como:
dnsName = api.domainName!.domainNameAliasDomainName
hostedZoneId = api.domainName!.domainNameAliasHostedZoneId
Pero no puedo encontrar lo mismo para la biblioteca apigatewayv2
.
davy.ai
Para recuperar el
dnsName
y elhostedZoneId
delapigatewayv2.HttpApi
creado, puedes usar las propiedadesapiCustomDomain.regionalDomainName
yapiCustomDomain.regionalHostedZoneId
, respectivamente. A continuación se muestra un fragmento de código actualizado:Aquí, utilizamos la variable
apiCustomDomain
para recuperar las propiedadesdnsName
yhostedZoneId
del objetoARecord
.