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.
AWS::Serverless::HttpApi
Crée une API HTTP Amazon API Gateway, qui vous permet de créer RESTful APIs avec une latence et des coûts inférieurs à ceux de REST APIs. Pour plus d'informations, consultez la section Working with HTTP APIs dans le guide du développeur d'API Gateway.
Nous vous recommandons d'utiliser AWS CloudFormation des hooks ou des politiques IAM pour vérifier que les ressources API Gateway sont associées à des autorisateurs afin de contrôler l'accès à celles-ci.
Pour plus d'informations sur l'utilisation AWS CloudFormation des hooks, consultez la section Enregistrement des hooks dans le guide de l'utilisateur de la AWS CloudFormation CLI et dans le apigw-enforce-authorizer
Pour plus d'informations sur l'utilisation de politiques IAM, veuillez consulter Exiger que les routes d'API disposent d'une autorisation dans le Guide du développeur API Gateway.
Note
Lorsque vous déployez vers AWS CloudFormation, vos AWS SAM ressources sont AWS SAM transformées en AWS CloudFormation ressources. Pour de plus amples informations, veuillez consulter AWS CloudFormation Ressources générées pour AWS SAM.
Syntaxe
Pour déclarer cette entité dans votre modèle AWS Serverless Application Model (AWS SAM), utilisez la syntaxe suivante.
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
Propriétés
-
AccessLogSettings -
Les paramètres pour la journalisation des accès dans une étape.
Type : AccessLogSettings
Obligatoire : non
AWS CloudFormation compatibilité : cette propriété est transmise directement à la
AccessLogSettingspropriété d'uneAWS::ApiGatewayV2::Stageressource. -
Auth -
Configure l'autorisation pour le contrôle de l'accès à votre API HTTP API Gateway.
Pour plus d'informations, consultez la section Contrôle de l'accès au protocole HTTP APIs avec les autorisateurs JWT dans le guide du développeur d'API Gateway.
Type : HttpApiAuth
Obligatoire : non
AWS CloudFormation compatibilité : cette propriété est unique AWS SAM et n'a pas d' AWS CloudFormation équivalent.
-
CorsConfiguration -
Gère le partage de ressources entre origines (CORS) pour tous vos API Gateway HTTP. APIs Spécifiez le domaine à autoriser en tant que chaîne ou spécifiez un objet
HttpApiCorsConfiguration. Notez que CORS nécessite AWS SAM de modifier votre définition OpenAPI. CORS ne fonctionne donc que siDefinitionBodyla propriété est spécifiée.Pour plus d'informations, consultez la Configuration CORS pour une API HTTP dans le Guide du développeur API Gateway.
Note
Il
CorsConfigurationest défini à la fois dans une définition OpenAPI et au niveau de la propriété, puis AWS SAM fusionne les deux sources de configuration avec les propriétés prioritaires. Si cette propriété est définie surtrue, alors toutes les origines sont autorisées.Type : Chaîne | HttpApiCorsConfiguration
Obligatoire : non
AWS CloudFormation compatibilité : cette propriété est unique AWS SAM et n'a pas d' AWS CloudFormation équivalent.
-
DefaultRouteSettings -
Les paramètres d'acheminement par défaut pour cette API HTTP. Ces paramètres s'appliquent à tous les acheminements sauf s'ils sont remplacés par le paramètre
RouteSettingspour certains acheminements.Type : RouteSettings
Obligatoire : non
AWS CloudFormation compatibilité : cette propriété est transmise directement à la
RouteSettingspropriété d'uneAWS::ApiGatewayV2::Stageressource. -
DefinitionBody -
La définition OpenAPI qui décrit votre API HTTP. Si vous ne spécifiez pas a
DefinitionUriou aDefinitionBody, AWS SAM génère unDefinitionBodypour vous en fonction de la configuration de votre modèle.Type : JSON
Obligatoire : non
AWS CloudFormation compatibilité : cette propriété est similaire à celle
Bodyd'uneAWS::ApiGatewayV2::Apiressource. Si certaines propriétés sont fournies, vous AWS SAM pouvez y insérer du contenu ou le modifierDefinitionBodyavant qu'il ne soit transmis à AWS CloudFormation. Les propriétés incluent le typeAuthet le typeEventSourceHttpApi de laAWS::Serverless::Functionressource correspondante. -
DefinitionUri -
L'URI Amazon Simple Storage Service (Amazon S3), le chemin d'accès au fichier local ou l'objet d'emplacement de la définition OpenAPI qui définit l'API HTTP. L'objet Amazon S3 auquel cette propriété fait référence doit être un fichier de définition OpenAPI valide. Si vous ne spécifiez pas a
DefinitionUriou n'DefinitionBodyêtes pas spécifié, AWS SAM génère unDefinitionBodypour vous en fonction de la configuration de votre modèle.Si vous fournissez un chemin d'accès au fichier local, le modèle doit passer par le flux de travail qui inclut le fichier
sam deployou la commandesam packagepour que la définition soit correctement transformée.Les fonctions intrinsèques ne sont pas prises en charge dans les fichiers de OpenApi définition externes auxquels vous faites référence
DefinitionUri. Pour importer une OpenApi définition dans le modèle, utilisez laDefinitionBodypropriété avec la transformation Include.Type : Chaîne | HttpApiDefinition
Obligatoire : non
AWS CloudFormation compatibilité : cette propriété est similaire à celle
BodyS3Locationd'uneAWS::ApiGatewayV2::Apiressource. Les propriétés imbriquées d'Amazon S3 sont nommées différemment. -
Description -
Description de la ressource d'API HTTP.
Lorsque vous spécifiez
Description, la OpenApi définition de la ressource d'API HTTP AWS SAM sera modifiée en définissant ledescriptionchamp. Les scénarios suivants entraînent une erreur :-
La
DefinitionBodypropriété est spécifiée avec ledescriptionchamp défini dans la définition de l'API ouverte. Cela entraîne un conflit dedescriptionchamp qui AWS SAM ne sera pas résolu. -
La
DefinitionUripropriété est spécifiée : elle AWS SAM ne modifiera pas une définition d'API ouverte extraite d'Amazon S3.
Type : chaîne
Obligatoire : non
AWS CloudFormation compatibilité : cette propriété est unique AWS SAM et n'a pas d' AWS CloudFormation équivalent.
-
-
DisableExecuteApiEndpoint -
Spécifie si les clients peuvent appeler votre API à l'aide du point de terminaison
execute-apipar défauthttps://{api_id}.execute-api.{region}.amazonaws.com. Par défaut, les clients peuvent appeler votre API avec le point de terminaison par défaut. Pour exiger que les clients utilisent uniquement un nom de domaine personnalisé pour appeler votre API, désactivez le point de terminaison par défaut.Pour utiliser cette propriété, vous devez spécifier la
DefinitionBodypropriété au lieu de laDefinitionUripropriété ou définirx-amazon-apigateway-endpoint-configurationavecdisableExecuteApiEndpointdans votre définition OpenAPI.Type : valeur booléenne
Obligatoire : non
AWS CloudFormation compatibilité : cette propriété est similaire à celle
DisableExecuteApiEndpointd'uneAWS::ApiGatewayV2::Apiressource. Il est transmis directement à la propriétédisableExecuteApiEndpointd'une extensionx-amazon-apigateway-endpoint-configuration, qui est ajoutée à la propriétéBodyd'une ressourceAWS::ApiGatewayV2::Api. -
Domain -
Configure un domaine personnalisé pour cette API HTTP API Gateway.
Type : HttpApiDomainConfiguration
Obligatoire : non
AWS CloudFormation compatibilité : cette propriété est unique AWS SAM et n'a pas d' AWS CloudFormation équivalent.
-
FailOnWarnings -
Spécifie si la création d'API HTTP doit être annulée (
true) ou non (false) lorsqu'un avertissement est rencontré. La valeur par défaut estfalse.Type : valeur booléenne
Obligatoire : non
AWS CloudFormation compatibilité : cette propriété est transmise directement à la
FailOnWarningspropriété d'uneAWS::ApiGatewayV2::Apiressource. Name-
Nom de la ressource d'API HTTP.
Lorsque vous le spécifiez
Name, AWS SAM il modifiera la définition OpenAPI de la ressource d'API HTTP en définissant letitlechamp. Les scénarios suivants entraînent une erreur :-
La
DefinitionBodypropriété est spécifiée avec letitlechamp défini dans la définition de l'API ouverte. Cela entraîne un conflit detitlechamp qui AWS SAM ne sera pas résolu. -
La
DefinitionUripropriété est spécifiée : elle AWS SAM ne modifiera pas une définition d'API ouverte extraite d'Amazon S3.
Type : chaîne
Obligatoire : non
AWS CloudFormation compatibilité : cette propriété est unique AWS SAM et n'a pas d' AWS CloudFormation équivalent.
-
-
Indiquez s'il faut ou non transmettre les balises de la propriété
Tagsaux ressources AWS::Serverless::HttpApi que vous avez générées. SpécifiezTruepour la propagation des balises dans vos ressources générées.Type : valeur booléenne
Obligatoire : non
Par défaut :
FalseAWS CloudFormation compatibilité : cette propriété est unique AWS SAM et n'a pas d' AWS CloudFormation équivalent.
-
RouteSettings -
Les paramètres d'acheminement par acheminement pour cette API HTTP. Pour plus d'informations, consultez la section Travailler avec des routes pour le protocole HTTP APIs dans le guide du développeur d'API Gateway.
Type : RouteSettings
Obligatoire : non
AWS CloudFormation compatibilité : cette propriété est transmise directement à la
RouteSettingspropriété d'uneAWS::ApiGatewayV2::Stageressource. -
StageName -
Le nom de l'étape d'API. Si aucun nom n'est spécifié, AWS SAM utilise le
$defaultstage d'API Gateway.Type : chaîne
Obligatoire : non
Par défaut : $default
AWS CloudFormation compatibilité : cette propriété est transmise directement à la
StageNamepropriété d'uneAWS::ApiGatewayV2::Stageressource. -
StageVariables -
Mappage qui définit les variables de l'étape. Les noms de variables peuvent comporter des caractères alphanumériques et des caractères de soulignement. Les valeurs doivent correspondre à [A-Za-Z0-9-._~ :/ ? #&=,] +.
Type : Json
Obligatoire : non
AWS CloudFormation compatibilité : cette propriété est transmise directement à la
StageVariablespropriété d'uneAWS::ApiGatewayV2::Stageressource. -
Un mappage (chaîne à chaîne) qui spécifie les balises à ajouter à cette étape API Gateway. Les clés peuvent comporter de 1 à 128 caractères Unicode de longueur et ne peuvent pas être précédée du préfixe
aws:. Les caractères suivants sont acceptés : l'ensemble des lettres Unicode, les chiffres, les espaces,_,.,/,=,+et-. Les valeurs de balise doivent comporter de 1 à 256 caractères Unicode en longueur.Type: carte (map)
Obligatoire : non
AWS CloudFormation compatibilité : cette propriété est unique AWS SAM et n'a pas d' AWS CloudFormation équivalent.
Remarques supplémentaires : La
Tagspropriété nécessite de AWS SAM modifier votre définition OpenAPI, de sorte que les balises ne sont ajoutées que si laDefinitionBodypropriété est spécifiée ; aucune balise n'est ajoutée si la propriété est spécifiée.DefinitionUriAWS SAM ajoute automatiquement unhttpapi:createdBy:SAMtag. Les balises sont également ajoutées à la ressourceAWS::ApiGatewayV2::Stageet à la ressourceAWS::ApiGatewayV2::DomainName(si leDomainNameest spécifié).
Valeurs renvoyées
Réf
Lorsque vous transmettez l'ID logique de cette ressource à la fonction intrinsèque Ref, Ref renvoie l'ID API de la ressource sous-jacente AWS::ApiGatewayV2::Api, par exemple, a1bcdef2gh.
Pour plus d'informations sur l'utilisation de la fonction Ref, consultez Ref dans le Guide de l'utilisateur AWS CloudFormation .
Exemples
Simple HttpApi
L'exemple suivant montre le minimum nécessaire pour configurer un point de terminaison d'API HTTP soutenu par une fonction Lambda. Cet exemple utilise l'API HTTP par défaut qui AWS SAM crée.
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 avec Auth
L'exemple suivant montre comment configurer l'autorisation sur les points de terminaison d'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"
HttpApiavec définition OpenAPI
L'exemple suivant montre comment ajouter une définition OpenAPI au modèle.
Notez que toutes AWS SAM les intégrations Lambda manquantes sont renseignées pour les HttpApi événements faisant référence à cette API HTTP. AWS SAM ajoute également tous les chemins manquants auxquels les HttpApi événements font référence.
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 avec paramètres de configuration
L'exemple suivant montre comment ajouter des configurations d'API HTTP et des configurations d'étape au modèle.
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