Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Vous pouvez définir votre API HTTP à l’aide d’un fichier de définition OpenAPI 3.0. Ensuite, vous pouvez importer la définition dans API Gateway pour créer une API. Pour en savoir plus sur les extensions API Gateway vers OpenAPI, consultez Extensions OpenAPI pour API Gateway.
Importation d'une API HTTP
Vous pouvez créer une API HTTP en important un fichier de définition OpenAPI 3.0.
Pour migrer d’une API REST vers une API HTTP, vous pouvez exporter votre API REST en tant que fichier de définition OpenAPI 3.0. Ensuite, importez la définition de l’API en tant qu’API HTTP. Pour en savoir plus sur l’exportation d’une API REST, consultez Exportation d’une API REST à partir d’API Gateway.
Note
Le protocole HTTP APIs prend en charge les mêmes AWS variables que le protocole REST APIs. Pour en savoir plus, consultez la section AWSVariables pour l’importation OpenAPI.
Importer des informations de validation
Lorsque vous importez une API, API Gateway fournit trois catégories d’informations de validation.
- Infos
-
Une propriété est valide selon la spécification OpenAPI, mais elle n'est pas prise en charge pour le protocole HTTP. APIs
Par exemple, l'extrait OpenAPI 3.0 suivant produit des informations sur l'importation car le protocole HTTP APIs ne prend pas en charge la validation des demandes. API Gateway ignore les champs
requestBody
etschema
."paths": { "/": { "get": { "x-amazon-apigateway-integration": { "type": "AWS_PROXY", "httpMethod": "POST", "uri": "arn:aws:lambda:us-east-2:123456789012:function:HelloWorld", "payloadFormatVersion": "1.0" }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Body" } } } } } } ... }, "components": { "schemas": { "Body": { "type": "object", "properties": { "key": { "type": "string" } } } ... } ... }
- Avertissement
-
Une propriété ou une structure n’est pas valide selon la spécification OpenAPI, mais elle ne bloque pas la création d’API. Vous pouvez spécifier si API Gateway doit ignorer ces avertissements et continuer à créer l’API, ou arrêter de créer l’API sur les avertissements.
Le document OpenAPI 3.0 suivant génère des avertissements lors de l'importation, car HTTP ne prend en APIs charge que les intégrations de proxy Lambda et de proxy HTTP.
"x-amazon-apigateway-integration": { "type": "AWS", "httpMethod": "POST", "uri": "arn:aws:lambda:us-east-2:123456789012:function:HelloWorld", "payloadFormatVersion": "1.0" }
- Erreur
-
La spécification OpenAPI n’est pas valide ou mal formée. API Gateway ne peut pas créer de ressources à partir du document mal formé. Vous devez corriger les erreurs, puis réessayer.
La définition d'API suivante génère des erreurs lors de l'importation car le protocole HTTP ne APIs prend en charge que la spécification OpenAPI 3.0.
{ "swagger": "2.0.0", "info": { "title": "My API", "description": "An Example OpenAPI definition for Errors/Warnings/ImportInfo", "version": "1.0" } ... }
Autre exemple, alors qu’OpenAPI permet aux utilisateurs de définir une API avec plusieurs exigences en matière de sécurité liées à une opération particulière, API Gateway ne prend pas en charge cette fonctionnalité. Chaque opération ne peut avoir qu’un seul des éléments suivants : autorisation IAM, mécanisme d’autorisation Lambda ou mécanisme d’autorisation JWT. Tenter de modéliser plusieurs exigences de sécurité entraîne une erreur.
Importez une API à l'aide du AWS CLI
La commande import-api suivante importe le fichier de définition d'OpenAPI 3.0 en api-definition.json
tant qu'API HTTP :
aws apigatewayv2 import-api --body file://api-definition.json
Vous pouvez importer l’exemple suivant de définition OpenAPI 3.0 pour créer une API HTTP.
{
"openapi": "3.0.1",
"info": {
"title": "Example Pet Store",
"description": "A Pet Store API.",
"version": "1.0"
},
"paths": {
"/pets": {
"get": {
"operationId": "GET HTTP",
"parameters": [
{
"name": "type",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "page",
"in": "query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "200 response",
"headers": {
"Access-Control-Allow-Origin": {
"schema": {
"type": "string"
}
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Pets"
}
}
}
}
},
"x-amazon-apigateway-integration": {
"type": "HTTP_PROXY",
"httpMethod": "GET",
"uri": "http://petstore.execute-api.us-west-1.amazonaws.com/petstore/pets",
"payloadFormatVersion": 1.0
}
},
"post": {
"operationId": "Create Pet",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NewPet"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "200 response",
"headers": {
"Access-Control-Allow-Origin": {
"schema": {
"type": "string"
}
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/NewPetResponse"
}
}
}
}
},
"x-amazon-apigateway-integration": {
"type": "HTTP_PROXY",
"httpMethod": "POST",
"uri": "http://petstore.execute-api.us-west-1.amazonaws.com/petstore/pets",
"payloadFormatVersion": 1.0
}
}
},
"/pets/{petId}": {
"get": {
"operationId": "Get Pet",
"parameters": [
{
"name": "petId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "200 response",
"headers": {
"Access-Control-Allow-Origin": {
"schema": {
"type": "string"
}
}
},
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Pet"
}
}
}
}
},
"x-amazon-apigateway-integration": {
"type": "HTTP_PROXY",
"httpMethod": "GET",
"uri": "http://petstore.execute-api.us-west-1.amazonaws.com/petstore/pets/{petId}",
"payloadFormatVersion": 1.0
}
}
}
},
"x-amazon-apigateway-cors": {
"allowOrigins": [
"*"
],
"allowMethods": [
"GET",
"OPTIONS",
"POST"
],
"allowHeaders": [
"x-amzm-header",
"x-apigateway-header",
"x-api-key",
"authorization",
"x-amz-date",
"content-type"
]
},
"components": {
"schemas": {
"Pets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Pet"
}
},
"Empty": {
"type": "object"
},
"NewPetResponse": {
"type": "object",
"properties": {
"pet": {
"$ref": "#/components/schemas/Pet"
},
"message": {
"type": "string"
}
}
},
"Pet": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string"
},
"price": {
"type": "number"
}
}
},
"NewPet": {
"type": "object",
"properties": {
"type": {
"$ref": "#/components/schemas/PetType"
},
"price": {
"type": "number"
}
}
},
"PetType": {
"type": "string",
"enum": [
"dog",
"cat",
"fish",
"bird",
"gecko"
]
}
}
}
}