amazon-web-services - example - rest api lambda aws
¿Cómo agregar un dominio personalizado para una API implementada/implementada en un framework sin servidor 1.0.0? (1)
Serverless-1.0.0-rc.1 permite implementar una API para que sea accesible a través de una puerta de enlace de la API de AWS.
La pregunta: ¿Necesito que la API desplegada esté expuesta a través de un dominio personalizado con certificado SSL en lugar de uno asignado aleatoriamente (URL https://qwertylgbtqert.execute-api....
)?
¿Se puede hacer eso desde serverless.yml
o framework sin servidor?
Aquí está mi simple servicio serverless.yml
definición:
service: my-service
provider:
name: aws
runtime: nodejs4.3
functions:
generate:
handler: handler.generate
events:
- http:
method: get
path: url
cors: true
Hay una pregunta que se relaciona con esto: la respuesta aquí , pero no proporciona respuestas aplicables. Especialmente cómo asignar el dominio personalizado desde el propio serverless.yml
.
Pensó que si es posible crear un recurso de AWS :: Route53 y aprovechar eso, sin embargo, no sé cómo hacerlo en serverless.
Primero debe crear el dominio personalizado y cargar los certificados. Esto no debe formar parte de este código ni de la implementación de este software.
Después de tener un dominio personalizado, debe pensar en términos de CloudFormation.
Como con todo lo demás en Serverless Framework; puede aprovechar las plantillas de CloudFormation para administrar recursos en AWS.
Entonces, su pregunta es: ¿cómo puede agregar su puerta de enlace API a su dominio personalizado en CloudFormation (sugerencia: hay mucha más ayuda en Google si busca CloudFormation en lugar de Serverless Framework)? Al crear un AWS::ApiGateway::BasePathMapping
en CloudFormation es la respuesta.
Esto se hace en los Recursos en su archivo serverless.yml
. Como este por ejemplo:
resources:
Resources:
pathmapping:
Type: AWS::ApiGateway::BasePathMapping
Properties:
BasePath: oauth2
DomainName: ${self:vars.domainName}
RestApiId:
Ref: ApiGatewayRestApi
Stage: ${self:vars.stage}
Esto requiere que tenga variables para el domainName
y stageName
en el archivo stageName
para las etapas que usa.
Edición: para las versiones de Serverless Framework 1 antes de rc1, debe agregar DependsOn: IamPolicyLambda
al recurso de mapeo de ruta. Esto se solucionó en: https://github.com/serverless/serverless/pull/1783
Antes de rc1 debes usar RestApiApigEvent
lugar de ApiGatewayRestApi