Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
AWS::Serverless::HttpApi
Cree una API HTTP de Amazon API Gateway, que permite crear API RESTful con menor latencia y costos que las API de REST. Para obtener más información, consulta Trabajar con API HTTP en la Guía del desarrollador de API Gateway.
Te recomendamos que utilices enlaces de CloudFormation o políticas de IAM para comprobar que los recursos de API Gateway tienen autorizadores adjuntos para controlar el acceso a ellos.
Para obtener más información sobre el uso de enlaces de CloudFormation, consulte Registrar enlaces en la Guía del usuario de CLI de CloudFormation y en el repositorio de GitHub apigw-enforce-authorizer
Para obtener más información sobre el uso de las políticas de IAM, consulta Exigir que las rutas de API tengan autorización en la Guía para desarrolladores de API Gateway.
nota
Al realizar la implementación en AWS CloudFormation, AWS SAM transforma sus recursos de AWS SAM en recursos de CloudFormation. Para obtener más información, consulta Recursos de CloudFormation generados para AWS SAM.
Sintaxis
Para declarar esta entidad en su plantilla de AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis:
YAML
Type: AWS::Serverless::HttpApi Properties: AccessLogSettings:AccessLogSettingsAuth:HttpApiAuthCorsConfiguration:String | HttpApiCorsConfigurationDefaultRouteSettings:RouteSettingsDefinitionBody:JSONDefinitionUri:String | HttpApiDefinitionDescription:StringDisableExecuteApiEndpoint:BooleanDomain:HttpApiDomainConfigurationFailOnWarnings:BooleanName:StringPropagateTags:BooleanRouteSettings:RouteSettingsStageName:StringStageVariables:JsonTags:Map
Propiedades
-
AccessLogSettings -
Configuración del registro de acceso en una etapa.
Type: AccessLogSettings
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
AccessLogSettingsde un recursoAWS::ApiGatewayV2::Stage. -
Auth -
Configure la autorización para controlar el acceso a la API HTTP de API Gateway.
Para obtener más información, consulta Control del acceso a las API HTTP con autorizadores de JWT en la Guía para desarrolladores de API Gateway.
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un CloudFormation equivalente.
-
CorsConfiguration -
Administre el uso compartido de recursos entre orígenes (CORS) para todas las API HTTP Gateway. Especifica el dominio que quieres permitir como cadena o especifica un objeto
HttpApiCorsConfiguration. Tenga en cuenta que CORS requiere AWS SAM para modificar su definición de OpenAPI, por lo que CORS solo funciona si se especifica la propiedadDefinitionBody.Para obtener más información, consulta Configuración de CORS para API HTTP en la Guía para desarrolladores de API Gateway.
nota
Si
CorsConfigurationse establece tanto en una definición de OpenAPI como en el nivel de propiedad, entonces AWS SAM fusiona ambas fuentes de configuración dando prioridad a las propiedades. Si esta propiedad está establecida entrue, se permiten todos los orígenes.Tipo: String | HttpApicOrsConfiguration
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.
-
DefaultRouteSettings -
Es la configuración de ruta predeterminada para esta API HTTP. Esta configuración se aplica a todas las rutas, a menos que la propiedad
RouteSettingsla anula para determinadas rutas.Type: RouteSettings
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
RouteSettingsde un recursoAWS::ApiGatewayV2::Stage. -
DefinitionBody -
La definición de OpenAPI que describe tu API HTTP. Si no especificas un
DefinitionUrioDefinitionBody, AWS SAM genera unDefinitionBodypara usted en función de la configuración de su plantilla.Tipo: JSON
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad es similar a la propiedad
Bodyde un recursoAWS::ApiGatewayV2::Api. Si se proporcionan determinadas propiedades, AWS SAM puede insertar contenido en ellas o modificar elDefinitionBodyantes de pasarlas a CloudFormation. Las propiedades incluyen unaAuthy unEventSourcedel tipo HttpAPI para el recursoAWS::Serverless::Functioncorrespondiente. -
DefinitionUri -
El URI, ruta de archivo local u objeto de ubicación de Amazon Simple Storage Service (Amazon S3) de la definición de OpenAPI que define la API HTTP. El objeto Amazon S3 al que hace referencia esta propiedad debe ser un archivo de definición de OpenAPI válido. Si no especificas un
DefinitionUrioDefinitionBody, AWS SAM genera unDefinitionBodypara usted en función de la configuración de su plantilla.Si proporcionas una ruta de archivo local, la plantilla debe seguir el flujo de trabajo que incluye el comando
sam deployosam packagepara que la definición se transforme correctamente.Las funciones intrínsecas no se admiten en los archivos de definición de OpenAPI externos a los que se hace referencia con
DefinitionUri. Para importar una definición de OpenAPI a la plantilla, utilice la propiedadDefinitionBodycon Include transform.Tipo: String | HttpApidDefinition
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad es similar a la propiedad
BodyS3Locationde un recursoAWS::ApiGatewayV2::Api. Las propiedades anidadas de Amazon S3 tienen un nombre diferente. -
Description -
La descripción del recurso de la API HTTP.
Cuando especifica
Description, AWS SAM modificará la definición de OpenAPI del recurso de la API HTTP configurando el campodescription. Las siguientes situaciones producirán un error:-
La propiedad
DefinitionBodyse especifica con el campodescriptionestablecido en la definición de API abierta. Esto provoca un conflicto en el campodescriptionque AWS SAM no resuelve. -
La propiedad
DefinitionUriestá especificada: AWS SAM no modificará una definición de API abierta que se recupere de Amazon S3.
Tipo: cadena
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.
-
-
DisableExecuteApiEndpoint -
Especifica si los clientes pueden invocar su API HTTP utilizando el
execute-apipunto de conexiónhttps://{api_id}.execute-api.{region}.amazonaws.com.rproxy.govskope.capredeterminado. De forma predeterminada, los clientes pueden invocar su API con el punto de enlace predeterminado. Para exigir que los clientes utilicen un nombre de dominio personalizado para invocar la API, desactive el punto de conexión predeterminado.Para usar esta propiedad, debe especificar la propiedad
DefinitionBodyen lugar de la propiedadDefinitionUrio definirx-amazon-apigateway-endpoint-configurationcondisableExecuteApiEndpointen su definición de OpenAPI.Tipo: Booleano
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad es similar a la propiedad
DisableExecuteApiEndpointde un recursoAWS::ApiGatewayV2::Api. Se pasa directamente a la propiedaddisableExecuteApiEndpointde una extensiónx-amazon-apigateway-endpoint-configuration, que se agrega a la propiedadBodyde un recursoAWS::ApiGatewayV2::Api. -
Domain -
Configura un dominio personalizado para esta API HTTP de API Gateway.
Tipo: HttpAPIDomainConfiguration
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.
-
FailOnWarnings -
Especifica si se va a restaurar la creación de HTTP API (
true) o no (false) cuando se encuentra una advertencia. El valor predeterminado esfalse.Tipo: Booleano
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
FailOnWarningsde un recursoAWS::ApiGatewayV2::Api. Name-
El nombre del recurso de HTTP API.
Cuando especifica
Name, AWS SAM modificará la definición de OpenAPI del recurso de la API HTTP configurando el campotitle. Las siguientes situaciones producirán un error:-
La propiedad
DefinitionBodyse especifica con el campotitleestablecido en la definición de API abierta. Esto provoca un conflicto en el campotitleque AWS SAM no resuelve. -
La propiedad
DefinitionUriestá especificada: AWS SAM no modificará una definición de API abierta que se recupere de Amazon S3.
Tipo: cadena
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.
-
-
Indique si quiere pasar o no las etiquetas de la propiedad
Tagsa los recursos generados AWS::Serverless::HttpApi. EspecificaTruepara propagar las etiquetas en los recursos generados.Tipo: Booleano
Obligatorio: no
Valor predeterminado:
FalseCompatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.
-
RouteSettings -
La configuración de ruta, por ruta, para esta API HTTP. Para obtener más información, consulta Trabajar con rutas para API HTTP en la Guía para desarrolladores de API Gateway.
Type: RouteSettings
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
RouteSettingsde un recursoAWS::ApiGatewayV2::Stage. -
StageName -
Es el nombre de la fase de la API. Si no se especifica ningún nombre, AWS SAM utiliza la etapa
$defaultde API Gateway.Tipo: cadena
Obligatorio: no
Valor predeterminado: $default
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
StageNamede un recursoAWS::ApiGatewayV2::Stage. -
StageVariables -
Una asignación que define las variables de la fase. Los nombres de las variables pueden tener caracteres alfanuméricos y de subrayado. Los valores deben coincidir con [A-Za-z0-9-._~:/?#&=,]+.
Type: Json
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad se transfiere directamente a la propiedad
StageVariablesde un recursoAWS::ApiGatewayV2::Stage. -
Un mapa (cadena a cadena) que especifica las etiquetas a añadir a esta etapa de API Gateway. Las claves pueden tener una longitud de entre 1 y 128 caracteres Unicode y no pueden incluir el prefijo
aws:. Puede utilizar cualquiera de los siguientes caracteres: el conjunto de letras Unicode, dígitos, espacio en blanco,_,.,/,=,+y-. Los valores pueden tener de 1 a 256 caracteres Unicode.Tipo: mapa
Obligatorio: no
Compatibilidad con CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente CloudFormation.
Notas adicionales: La propiedad
Tagsrequiere AWS SAM para modificar la definición de OpenAPI, por lo que las etiquetas se añaden solo si se especifica la propiedadDefinitionBody; no se añaden etiquetas si se especifica la propiedadDefinitionUri. AWS SAM añade automáticamente una etiquetahttpapi:createdBy:SAMLas etiquetas también se añaden al recursoAWS::ApiGatewayV2::Stagey al recursoAWS::ApiGatewayV2::DomainName(siDomainNamese especifica).
valores devueltos
Ref.
Cuando se pasa el ID lógico de este recurso a la función intrínseca Ref, Ref devuelve el ID de API del recurso subyacente AWS::ApiGatewayV2::Api, por ejemplo, a1bcdef2gh.
Para obtener más información sobre el uso de la función Ref, consulta Ref en la Guía del usuario de AWS CloudFormation.
Ejemplos
API HTTP sencilla
El siguiente ejemplo muestra el mínimo necesario para configurar un punto de conexión de la API HTTP respaldado por una función de Lambda. En este ejemplo, se utiliza la API HTTP predeterminada que crea AWS SAM.
YAML
AWSTemplateFormatVersion: '2010-09-09' Description: AWS SAM template with a simple API definition Resources: ApiFunction: Type: AWS::Serverless::Function Properties: Events: ApiEvent: Type: HttpApi Handler: index.handler InlineCode: | def handler(event, context): return {'body': 'Hello World!', 'statusCode': 200} Runtime: python3.7 Transform: AWS::Serverless-2016-10-31
HttpAPI con autenticación
El siguiente ejemplo muestra cómo configurar la autorización en puntos de conexión de API HTTP.
YAML
Properties: FailOnWarnings: true Auth: DefaultAuthorizer: OAuth2 Authorizers: OAuth2: AuthorizationScopes: - scope4 JwtConfiguration: issuer: "https://www.example.com/v1/connect/oauth2" audience: - MyApi IdentitySource: "$request.querystring.param"
HttpAPI con definición OpenAPI
El siguiente ejemplo muestra cómo añadir una definición de OpenAPI a la plantilla.
Tenga en cuenta que AWS SAM rellena las integraciones de Lambda que falten para los eventos HttpAPI que hacen referencia a esta API HTTP. AWS SAM también agrega las rutas faltantes a las que hacen referencia los eventos de HttpAPI.
YAML
Properties: FailOnWarnings: true DefinitionBody: info: version: '1.0' title: Ref: AWS::StackName paths: "/": get: security: - OpenIdAuth: - scope1 - scope2 responses: {} openapi: 3.0.1 securitySchemes: OpenIdAuth: type: openIdConnect x-amazon-apigateway-authorizer: identitySource: "$request.querystring.param" type: jwt jwtConfiguration: audience: - MyApi issuer: https://www.example.com/v1/connect/oidc openIdConnectUrl: https://www.example.com/v1/connect/oidc/.well-known/openid-configuration
HttpAPI con opciones de configuración
El siguiente ejemplo muestra cómo añadir la API HTTP y configuraciones de escenario a la plantilla.
YAML
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Parameters: StageName: Type: String Default: Prod Resources: HttpApiFunction: Type: AWS::Serverless::Function Properties: InlineCode: | def handler(event, context): import json return { "statusCode": 200, "body": json.dumps(event), } Handler: index.handler Runtime: python3.7 Events: ExplicitApi: # warning: creates a public endpoint Type: HttpApi Properties: ApiId: !Ref HttpApi Method: GET Path: /path TimeoutInMillis: 15000 PayloadFormatVersion: "2.0" RouteSettings: ThrottlingBurstLimit: 600 HttpApi: Type: AWS::Serverless::HttpApi Properties: StageName: !Ref StageName Tags: Tag: Value AccessLogSettings: DestinationArn: !GetAtt AccessLogs.Arn Format: $context.requestId DefaultRouteSettings: ThrottlingBurstLimit: 200 RouteSettings: "GET /path": ThrottlingBurstLimit: 500 # overridden in HttpApi Event StageVariables: StageVar: Value FailOnWarnings: true AccessLogs: Type: AWS::Logs::LogGroup Outputs: HttpApiUrl: Description: URL of your API endpoint Value: Fn::Sub: 'https://${HttpApi}.execute-api.${AWS::Region}.${AWS::URLSuffix}/${StageName}/' HttpApiId: Description: Api id of HttpApi Value: Ref: HttpApi