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::Api
Crea una colección de recursos y métodos de Amazon API Gateway que se pueden invocarse a través de puntos de conexión HTTPS.
No es necesario añadir explícitamente un recurso de AWS::Serverless::Api a una plantilla de definición de aplicación sin servidor de AWS. Un recurso de este tipo se crea implícitamente a partir de la unión de eventos de API definidos en los recursos AWS::Serverless::Function definidos en la plantilla que no hacen referencia a un recurso AWS::Serverless::Api.
Se debe usar un recurso AWS::Serverless::Api para definir y documentar la API mediante OpenAPI, que proporciona más capacidad para configurar los recursos subyacentes de Amazon API Gateway.
Te recomendamos que utilices enlaces de AWS 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 AWS CloudFormation, consulta Registrar enlaces en la Guía del usuario de CLI de AWS CloudFormation y en el repositorio de GitHub apigw-enforce-autorizarr
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 AWS CloudFormation. Para obtener más información, consulta Recursos AWS CloudFormation de AWS SAM generados.
Sintaxis
Para declarar esta entidad en su plantilla de AWS Serverless Application Model (AWS SAM), usa la siguiente sintaxis:
YAML
Type: AWS::Serverless::Api Properties: AccessLogSetting:
AccessLogSetting
AlwaysDeploy:Boolean
ApiKeySourceType:String
Auth:ApiAuth
BinaryMediaTypes:List
CacheClusterEnabled:Boolean
CacheClusterSize:String
CanarySetting:CanarySetting
Cors:String | CorsConfiguration
DefinitionBody:JSON
DefinitionUri:String | ApiDefinition
Description:String
DisableExecuteApiEndpoint:Boolean
Domain:DomainConfiguration
EndpointConfiguration:EndpointConfiguration
FailOnWarnings:Boolean
GatewayResponses:Map
MergeDefinitions:Boolean
MethodSettings:MethodSettings
MinimumCompressionSize:Integer
Mode:String
Models:Map
Name:String
OpenApiVersion:String
PropagateTags:Boolean
StageName:String
Tags:Map
TracingEnabled:Boolean
Variables:Map
Propiedades
-
AccessLogSetting
-
Configuración de registros de acceso para una etapa.
Tipo: AccessLogSetting
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad se transfiere directamente a la propiedad
AccessLogSetting
de un recursoAWS::ApiGateway::Stage
. -
AlwaysDeploy
-
Siempre implementas la API, incluso cuando no se han detectado cambios en la API.
Tipo: Booleano
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente AWS CloudFormation.
-
ApiKeySourceType
-
Origen de la clave de API para medir las solicitudes de acuerdo con un plan de uso. Los valores válidos son
HEADER
yAUTHORIZER
.Tipo: cadena
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad se transfiere directamente a la propiedad
ApiKeySourceType
de un recursoAWS::ApiGateway::RestApi
. -
Auth
-
Configure la autorización para controlar el acceso a su API de API Gateway.
Para obtener más información sobre la configuración del acceso mediante AWS SAM, consulta Controla el acceso a la API con tu AWS SAM plantilla.
Tipo: APIAuth
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente AWS CloudFormation.
-
BinaryMediaTypes
-
Lista de tipos MIME que su API puede devolver. Utilice esto para habilitar la compatibilidad con datos binarios para las API. Utilice ~1 en lugar de/en los tipos MIME.
Tipo: lista
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad es similar a la propiedad
BinaryMediaTypes
de un recursoAWS::ApiGateway::RestApi
. La lista de BinaryMediatypes se añade tanto al recurso de AWS CloudFormation como al documento OpenAPI. -
CacheClusterEnabled
-
Indica si el almacenado en caché está habilitado para la etapa. Para almacenar en caché las respuestas, también debe configurar
CachingEnabled
paratrue
bajoMethodSettings
.Tipo: Booleano
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad se transfiere directamente a la propiedad
CacheClusterEnabled
de un recursoAWS::ApiGateway::Stage
. -
CacheClusterSize
-
El tamaño del clúster de caché de la etapa.
Tipo: cadena
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad se transfiere directamente a la propiedad
CacheClusterSize
de un recursoAWS::ApiGateway::Stage
. -
CanarySetting
-
Configure una prueba canario como una etapa de una implementación normal.
Type: CanarySetting
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad se transfiere directamente a la propiedad
CanarySetting
de un recursoAWS::ApiGateway::Stage
. -
Cors
-
Gestione el uso compartido de recursos entre orígenes (CORS) para todas sus API de API Gateway. Especifica el dominio que quieres permitir como cadena o especifica un diccionario con una configuración de Cors adicional.
nota
NOTA: CORS obliga a AWS SAM a modificar su definición de OpenAPI. Cree una definición de OpenAPI en línea en
DefinitionBody
el para activar CORS.Para obtener más información sobre CORS, consulta Habilitar CORS para un recurso de la API de REST de API Gateway en la Guía para desarrolladores de API Gateway.
Tipo: cadena | CorsConfiguration
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente AWS CloudFormation.
-
DefinitionBody
-
Especificación de OpenAPI que describe su API. Si no se especifica ni
DefinitionUri
niDefinitionBody
, SAM generaráDefinitionBody
para usted en función de la configuración de la plantilla.Para hacer referencia a un archivo local de OpenAPI que defina su API, usa la transformación
AWS::Include
. Para obtener más información, consulta ¿Cómo se AWS SAM cargan los archivos locales.Tipo: JSON
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad es similar a la propiedad
Body
de un recursoAWS::ApiGateway::RestApi
. Si se proporcionan determinadas propiedades, el contenido se puede insertar o modificar en el DefinitionBody antes de pasarlo a CloudFormation. Las propiedades incluyenAuth
,BinaryMediaTypes
,Cors
,GatewayResponses
,Models
y unaEventSource
del tipo Api para unaAWS::Serverless::Function
correspondiente. -
DefinitionUri
-
Amazon S3 Uri, la ruta de archivo local o el objeto de ubicación del documento de OpenAPI que define la API. El objeto Amazon S3 al que hace referencia esta propiedad debe ser un archivo OpenAPI válido. Si no se especifica ni
DefinitionUri
niDefinitionBody
, SAM generaráDefinitionBody
para usted en función de la configuración de la plantilla.Si se proporciona una ruta de archivo local, la plantilla debe seguir el flujo de trabajo que incluye el comando
sam deploy
osam package
para que la definición se transforme correctamente.Las funciones intrínsecas no son compatibles con los archivos OpenAPI externos a los que hace referencia
DefinitionUri
. En su lugar, utilice la propiedadDefinitionBody
con la transformación Include para importar una definición de OpenAPI a la plantilla.Tipo: cadena | ApiDefinition
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad es similar a la propiedad
BodyS3Location
de un recursoAWS::ApiGateway::RestApi
. Las propiedades anidadas de Amazon S3 tienen un nombre diferente. -
Description
-
Una descripción del recurso de la Api.
Tipo: cadena
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad se transfiere directamente a la propiedad
Description
de un recursoAWS::ApiGateway::RestApi
. -
DisableExecuteApiEndpoint
-
Especifica si los clientes pueden invocar la API mediante el punto de conexión
execute-api
predeterminado. De forma predeterminada, los clientes pueden invocar su API con elhttps://{api_id}.execute-api.{region}.amazonaws.com
predeterminado. Para exigir que los clientes utilicen un nombre de dominio personalizado para invocar su API, especificaTrue
.Tipo: Booleano
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad es similar a la propiedad
DisableExecuteApiEndpoint
de un recursoAWS::ApiGateway::RestApi
. Se pasa directamente a la propiedaddisableExecuteApiEndpoint
de una extensiónx-amazon-apigateway-endpoint-configuration
, que se agrega a la propiedadBody
de un recursoAWS::ApiGateway::RestApi
. -
Domain
-
Configura un dominio personalizado para esta API de API Gateway.
Tipo: DomainConfiguration
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente AWS CloudFormation.
-
EndpointConfiguration
-
El tipo de punto de conexión de una API de REST.
Tipo: EndpointConfiguration
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad es similar a la propiedad
EndpointConfiguration
de un recursoAWS::ApiGateway::RestApi
. Las propiedades anidadas de configuración tienen un nombre diferente. -
FailOnWarnings
-
Especifica si se va a restaurar la creación de API (
true
) o no (false
) cuando se encuentra una advertencia. El valor predeterminado esfalse
.Tipo: Booleano
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad se transfiere directamente a la propiedad
FailOnWarnings
de un recursoAWS::ApiGateway::RestApi
. -
GatewayResponses
-
Configura las respuestas de Gateway para una API. Las respuestas de Gateway son respuestas devueltas por API Gateway, ya sea directamente o mediante el uso de autorizadores Lambda. Para más información, consulta la documentación de la extensión OpenAPI de Api Gateway para Respuestas de Gateway.
Tipo: Mapa
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente AWS CloudFormation.
-
MergeDefinitions
-
AWS SAM genera una especificación de OpenAPI a partir del origen de eventos de la API. Especifica
true
si quieres fusionar AWS SAM con la especificación OpenAPI inline definida en su recurso deAWS::Serverless::Api
. Especifica quefalse
no se fusione.MergeDefinitions
requiere que la propiedad deDefinitionBody
paraAWS::Serverless::Api
se defina.MergeDefinitions
no es compatible con la propiedad deDefinitionUri
paraAWS::Serverless::Api
.Valor predeterminado:
false
Tipo: Booleano
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente AWS CloudFormation.
-
MethodSettings
-
Configura todos los ajustes de la etapa de la API, incluidos los de registro, métricas, cachetTL y la limitación controlada.
Tipo: lista de MethodSetting
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad se transfiere directamente a la propiedad
MethodSettings
de un recursoAWS::ApiGateway::Stage
. -
MinimumCompressionSize
-
Permita la compresión de los cuerpos de respuesta en función del encabezado Accept-Encoding del cliente. La compresión se desencadena cuando el tamaño del cuerpo de respuesta es superior o igual al umbral configurado. El umbral de tamaño máximo del cuerpo es de 10 MB (10.485.760 bytes). - Se admiten los siguientes tipos de compresión: gzip, deflate e identidad.
Tipo: entero
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad se transfiere directamente a la propiedad
MinimumCompressionSize
de un recursoAWS::ApiGateway::RestApi
. -
Mode
-
Esta propiedad solo se aplica cuando se utiliza OpenAPI para definir su API de REST. El
Mode
determina cómo API Gateway maneja las actualizaciones de recursos. Para obtener más información, consulta la propiedad Modo en el tipo de recurso AWS::ApiGateway::RestApi.Valores válidos:
overwrite
omerge
Tipo: cadena
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad se transfiere directamente a la propiedad
Mode
de un recursoAWS::ApiGateway::RestApi
. -
Models
-
Los esquemas que deben utilizar sus métodos API. Estos esquemas se pueden describir mediante JSON o YAML. Consulte la sección de ejemplos al final de esta página para ver ejemplos de modelos.
Tipo: mapa
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente AWS CloudFormation.
-
Name
-
Un nombre para el recurso RestAPI de API Gateway
Tipo: cadena
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad se transfiere directamente a la propiedad
Name
de un recursoAWS::ApiGateway::RestApi
. -
OpenApiVersion
-
La versión de OpenApi que se va a usar. Esto puede ser
2.0
para la especificación Swagger o para una de las versiones de OpenAPI 3.0; por ejemplo,3.0.1
. Para más información sobre OpenAPI, consulta la Especificación de OpenAPI.nota
AWS SAM crea una etapa llamada
Stage
por defecto. Si se establece esta propiedad en cualquier valor válido, se impedirá la creación de la etapaStage
.Tipo: cadena
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente AWS CloudFormation.
-
Indique si quiere pasar o no las etiquetas de la propiedad
Tags
a los recursos generados AWS::Serverless::Api. EspecificaTrue
para propagar las etiquetas en los recursos generados.Tipo: Booleano
Obligatorio: no
Valor predeterminado:
False
Compatibilidad con AWS CloudFormation: esta propiedad es exclusiva de AWS SAM y no tiene un equivalente AWS CloudFormation.
-
StageName
-
El nombre de la etapa, que API Gateway utiliza como el primer segmento de la ruta en el Identificador uniforme de recursos (URI) invocado.
Para hacer referencia al recurso de la etapa, utilice
. Para obtener más información sobre cómo hacer referencia a los recursos generados cuando se especifica un recurso AWS::Serverless::Api, consulta Recursos de AWS CloudFormation generados cuando se especifica AWS::Serverless::Api. Para obtener información general sobre los recursos generados de AWS CloudFormation, consulta Recursos AWS CloudFormation de AWS SAM generados.<api-logical-id>
.StageTipo: cadena
Obligatorio: sí
Compatibilidad con AWS CloudFormation: esta propiedad es similar a la propiedad
StageName
de un recursoAWS::ApiGateway::Stage
. Es obligatorio en SAM, pero no en API GatewayNotas adicionales: la API implícita tiene el nombre de etapa de “Prod”.
-
Un mapa (cadena a cadena) que especifica las etiquetas que deben añadirse a esta etapa de la API Gateway. Para obtener más información sobre las claves y los valores válidos de las etiquetas, consulta la etiqueta de recursos en la Guía del usuario de AWS CloudFormation.
Tipo: mapa
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad es similar a la propiedad
Tags
de un recursoAWS::ApiGateway::Stage
. La propiedad de etiquetas en SAM consta de pares Clave:Valor; en CloudFormation, consta de una lista de objetos de etiquetas. -
TracingEnabled
-
Indica si se ha habilitado el rastreo activo con X-Ray para la fase. Para más información acerca de X-Ray, consulta Rastreo de solicitudes de usuario a API de REST mediante X-Ray en la Guía para desarrolladores de API Gateway.
Tipo: Booleano
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad se transfiere directamente a la propiedad
TracingEnabled
de un recursoAWS::ApiGateway::Stage
. -
Variables
-
Un mapa (cadena a cadena) que define las variables de la fase, donde el nombre de la variable es la clave y el valor de la variable es el valor. Los nombres de variables están limitados a caracteres alfanuméricos. Los valores deben coincidir con las siguientes expresiones regulares:
[A-Za-z0-9._~:/?#&=,-]+
.Tipo: mapa
Obligatorio: no
Compatibilidad con AWS CloudFormation: esta propiedad se transfiere directamente a la propiedad
Variables
de un recursoAWS::ApiGateway::Stage
.
valores devueltos
Ref.
Cuando se proporciona el ID lógico de este recurso a la función intrínseca Ref
, devuelve el ID del API de API Gateway subyacente.
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.
Fn::GetAtt
Fn::GetAtt
devuelve un valor para un atributo especificado de este tipo. A continuación se indican los atributos disponibles y los valores devueltos de muestra.
Para obtener más información acerca de cómo usar Fn::GetAtt
, consulta Fn::GetAtt
en la Guía del usuario de AWS CloudFormation.
RootResourceId
-
El ID del recurso raíz de un recurso
RestApi
, como por ejemploa0bc123d4e
.
Ejemplos
SimpleApiExample
Un archivo de plantillas Hello World de AWS SAM que contiene una función de Lambda con un punto de conexión de API. Se trata de un archivo de plantillas de AWS SAM completo para una aplicación sin servidor en funcionamiento.
YAML
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: AWS SAM template with a simple API definition Resources: ApiGatewayApi: Type: AWS::Serverless::Api Properties: StageName: prod ApiFunction: # Adds a GET method at the root resource via an Api event Type: AWS::Serverless::Function Properties: Events: ApiEvent: Type: Api Properties: Path: / Method: get RestApiId: Ref: ApiGatewayApi Runtime: python3.10 Handler: index.handler InlineCode: | def handler(event, context): return {'body': 'Hello World!', 'statusCode': 200}
ApiCorsExample
Un fragmento de plantilla de AWS SAM con una API definida en un archivo Swagger externo junto con integraciones de Lambda y configuraciones de CORS. Esta es solo una parte de un archivo de plantilla de AWS SAM que muestra una definición AWS::Serverless::Api.
YAML
Resources: ApiGatewayApi: Type: AWS::Serverless::Api Properties: StageName: Prod # Allows www.example.com to call these APIs # SAM will automatically add AllowMethods with a list of methods for this API Cors: "'www.example.com'" DefinitionBody: # Pull in an OpenApi definition from S3 'Fn::Transform': Name: 'AWS::Include' # Replace "bucket" with your bucket name Parameters: Location: s3://bucket/swagger.yaml
ApiCognitoAuthExample
Un fragmento de plantilla de AWS SAM con una API que utiliza Amazon Cognito para autorizar las solicitudes frente a la API. Esta es solo una parte de un archivo de plantilla de AWS SAM que muestra una definición AWS::Serverless::Api.
YAML
Resources: ApiGatewayApi: Type: AWS::Serverless::Api Properties: StageName: Prod Cors: "'*'" Auth: DefaultAuthorizer: MyCognitoAuthorizer Authorizers: MyCognitoAuthorizer: UserPoolArn: Fn::GetAtt: [MyCognitoUserPool, Arn]
ApiModelsExample
Un fragmento de plantilla de AWS SAM con una API que incluye un esquema de Modelos. Esta es solo una parte de un archivo de plantilla de AWS SAM que muestra una definición AWS::Serverless::Api con dos esquemas modelo.
YAML
Resources: ApiGatewayApi: Type: AWS::Serverless::Api Properties: StageName: Prod Models: User: type: object required: - username - employee_id properties: username: type: string employee_id: type: integer department: type: string Item: type: object properties: count: type: integer category: type: string price: type: integer
Ejemplo de almacenamiento en caché
Un archivo de plantillas Hello World de AWS SAM que contiene una función de Lambda con un punto de conexión de API. La API tiene habilitado el almacenamiento en caché para un recurso y un método. Para obtener más información acerca del almacenamiento en caché, consulta Habilitar el almacenamiento en caché de la API para mejorar la capacidad de respuesta en la Guía para desarrolladores de API Gateway.
YAML
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: AWS SAM template with a simple API definition with caching turned on Resources: ApiGatewayApi: Type: AWS::Serverless::Api Properties: StageName: prod CacheClusterEnabled: true CacheClusterSize: '0.5' MethodSettings: - ResourcePath: / HttpMethod: GET CachingEnabled: true CacheTtlInSeconds: 300 Tags: CacheMethods: All ApiFunction: # Adds a GET method at the root resource via an Api event Type: AWS::Serverless::Function Properties: Events: ApiEvent: Type: Api Properties: Path: / Method: get RestApiId: Ref: ApiGatewayApi Runtime: python3.10 Handler: index.handler InlineCode: | def handler(event, context): return {'body': 'Hello World!', 'statusCode': 200}