Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
AWS::Serverless::HttpApi
Erstellt eine Amazon API Gateway Gateway-HTTP-API, mit der Sie RESTful APIs mit geringerer Latenz und geringeren Kosten als REST erstellen können APIs. Weitere Informationen finden Sie unter Working with HTTP APIs im API Gateway Developer Guide.
Wir empfehlen, CloudFormation Hooks oder IAM-Richtlinien zu verwenden, um zu überprüfen, ob an API-Gateway-Ressourcen Autorisatoren angehängt sind, um den Zugriff darauf zu kontrollieren.
Weitere Informationen zur Verwendung von CloudFormation Hooks finden Sie unter Hooks registrieren im CloudFormation CLI-Benutzerhandbuch und im apigw-enforce-authorizer
Weitere Informationen zur Verwendung von IAM-Richtlinien finden Sie unter Erfordern, dass API-Routen autorisiert sind im API Gateway Developer Guide.
Anmerkung
Bei der Bereitstellung auf werden AWS CloudFormation Ihre AWS SAM Ressourcen in Ressourcen umgewandelt CloudFormation . AWS SAM Weitere Informationen finden Sie unter Generierte CloudFormation Ressourcen für AWS SAM.
Syntax
Verwenden Sie die folgende Syntax, um diese Entität in Ihrer Vorlage AWS Serverless Application Model (AWS SAM) zu deklarieren.
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
Eigenschaften
-
AccessLogSettings -
Die Einstellungen für die Zugriffsprotokollierung in einer Phase.
Typ: AccessLogSettings
Required: No
CloudFormation Kompatibilität: Diese Eigenschaft wird direkt an die
AccessLogSettingsEigenschaft einerAWS::ApiGatewayV2::StageRessource übergeben. -
Auth -
Konfiguriert die Autorisierung für die Steuerung des Zugriffs auf Ihre API Gateway Gateway-HTTP-API.
Weitere Informationen finden Sie unter Steuern des Zugriffs auf HTTP APIs mit JWT-Autorisierern im API Gateway Developer Guide.
Typ: HttpApiAuth
Required: No
CloudFormation Kompatibilität: Diese Eigenschaft ist einzigartig für AWS SAM und hat kein Äquivalent. CloudFormation
-
CorsConfiguration -
Verwaltet Cross-Origin Resource Sharing (CORS) für Ihr gesamtes API-Gateway-HTTP. APIs Geben Sie die Domäne, die zugelassen werden soll, als Zeichenfolge an, oder geben Sie ein Objekt an
HttpApiCorsConfiguration. Beachten Sie, dass CORS Ihre OpenAPI-Definition ändern muss AWS SAM , sodass CORS nur funktioniert, wenn dieDefinitionBodyEigenschaft angegeben ist.Weitere Informationen finden Sie unter Konfiguration von CORS für eine HTTP-API im API Gateway Developer Guide.
Anmerkung
Wenn sowohl in einer OpenAPI-Definition als auch auf Eigenschaftsebene festgelegt
CorsConfigurationist, werden beide Konfigurationsquellen AWS SAM zusammengeführt, wobei die Eigenschaften Vorrang haben. Wenn diese Eigenschaft auf gesetzt isttrue, sind alle Ursprünge zulässig.Typ: Zeichenfolge | HttpApiCorsConfiguration
Required: No
CloudFormation Kompatibilität: Diese Eigenschaft ist einzigartig für AWS SAM und hat kein CloudFormation Äquivalent.
-
DefaultRouteSettings -
Die Standardrouteneinstellungen für diese HTTP-API. Diese Einstellungen gelten für alle Routen, sofern sie nicht durch die
RouteSettingsEigenschaft für bestimmte Routen außer Kraft gesetzt werden.Typ: RouteSettings
Required: No
CloudFormation Kompatibilität: Diese Eigenschaft wird direkt an die
RouteSettingsEigenschaft einerAWS::ApiGatewayV2::StageRessource übergeben. -
DefinitionBody -
Die OpenAPI-Definition, die Ihre HTTP-API beschreibt. Wenn Sie a
DefinitionUrioder a nicht angebenDefinitionBody, AWS SAM generiert es auf der Grundlage Ihrer Vorlagenkonfiguration eineDefinitionBodyfür Sie.Type: JSON
Required: No
CloudFormation Kompatibilität: Diese Eigenschaft ähnelt der
BodyEigenschaft einerAWS::ApiGatewayV2::ApiRessource. Wenn bestimmte Eigenschaften angegeben sind, AWS SAM kann Inhalt in die Datei eingefügt oder geändert werden,DefinitionBodybevor sie an sie übergeben CloudFormation werden. Zu den Eigenschaften gehören einEventSourceTypAuthund ein Typ HttpApi für eine entsprechendeAWS::Serverless::FunctionRessource. -
DefinitionUri -
Der Amazon Simple Storage Service (Amazon S3) -URI, der lokale Dateipfad oder das Speicherortobjekt der OpenAPI-Definition, die die HTTP-API definiert. Das Amazon S3 S3-Objekt, auf das diese Eigenschaft verweist, muss eine gültige OpenAPI-Definitionsdatei sein. Wenn Sie a nicht angeben
DefinitionUrioder a angegebenDefinitionBodysind, AWS SAM generiert es eineDefinitionBodyfür Sie auf der Grundlage Ihrer Vorlagenkonfiguration.Wenn Sie einen lokalen Dateipfad angeben, muss die Vorlage den Workflow durchlaufen, der den
sam packageBefehlsam deployoder enthält, damit die Definition ordnungsgemäß transformiert wird.Systeminterne Funktionen werden in externen OpenApi Definitionsdateien, auf die Sie verweisen, nicht unterstützt.
DefinitionUriUm eine OpenApi Definition in die Vorlage zu importieren, verwenden Sie dieDefinitionBodyEigenschaft zusammen mit der Include-Transformation.Typ: Zeichenfolge | HttpApiDefinition
Required: No
CloudFormation Kompatibilität: Diese Eigenschaft ähnelt der
BodyS3LocationEigenschaft einerAWS::ApiGatewayV2::ApiRessource. Die verschachtelten Amazon S3 S3-Eigenschaften sind unterschiedlich benannt. -
Description -
Die Beschreibung der HTTP-API-Ressource.
Wenn Sie angeben
Description, AWS SAM wird die OpenApi Definition der HTTP-API-Ressource geändert, indem dasdescriptionFeld festgelegt wird. Die folgenden Szenarien führen zu einem Fehler:-
Die
DefinitionBodyEigenschaft wird mit dem in der Open API-Definition festgelegtendescriptionFeld angegeben. Dies führt zu einem Konflikt imdescriptionFeld, der AWS SAM nicht gelöst werden kann. -
Die
DefinitionUriEigenschaft ist angegeben — ändert AWS SAM keine Open-API-Definition, die von Amazon S3 abgerufen wird.
Typ: Zeichenfolge
Required: No
CloudFormation Kompatibilität: Diese Eigenschaft ist einzigartig für AWS SAM und hat kein CloudFormation Äquivalent.
-
-
DisableExecuteApiEndpoint -
Gibt an, ob Clients Ihre HTTP-API mithilfe des
execute-apiStandardendpunktshttps://{api_id}.execute-api.{region}.amazonaws.com.rproxy.govskope.caaufrufen können. Standardmäßig können Kunden Ihre API mit dem standardmäßigen -Endpunkt aufrufen. Um zu verlangen, dass Clients nur einen benutzerdefinierten Domainnamen verwenden, um Ihre API aufzurufen, deaktivieren Sie den Standardendpunkt.Um diese Eigenschaft zu verwenden, müssen Sie
disableExecuteApiEndpointin Ihrer OpenAPI-Definition dieDefinitionBodyDefinitionUriEigenschaft anstelle der Eigenschaft angeben oderx-amazon-apigateway-endpoint-configurationmit definieren.Typ: Boolesch
Required: No
CloudFormation Kompatibilität: Diese Eigenschaft ähnelt der
DisableExecuteApiEndpointEigenschaft einerAWS::ApiGatewayV2::ApiRessource. Sie wird direkt an diedisableExecuteApiEndpointEigenschaft einerx-amazon-apigateway-endpoint-configurationErweiterung übergeben, die derBodyEigenschaft einerAWS::ApiGatewayV2::ApiRessource hinzugefügt wird. -
Domain -
Konfiguriert eine benutzerdefinierte Domain für diese API Gateway Gateway-HTTP-API.
Typ: HttpApiDomainConfiguration
Required: No
CloudFormation Kompatibilität: Diese Eigenschaft ist einzigartig für AWS SAM und hat kein CloudFormation Äquivalent.
-
FailOnWarnings -
Gibt an, ob die HTTP-API-Erstellung rückgängig gemacht werden soll (
true) oder nicht (false), wenn eine Warnung auftritt. Der Standardwert istfalse.Typ: Boolesch
Required: No
CloudFormation Kompatibilität: Diese Eigenschaft wird direkt an die
FailOnWarningsEigenschaft einerAWS::ApiGatewayV2::ApiRessource übergeben. Name-
Der Name der HTTP-API-Ressource.
Wenn Sie angeben
Name, AWS SAM wird die OpenAPI-Definition der HTTP-API-Ressource geändert, indem dastitleFeld festgelegt wird. Die folgenden Szenarien führen zu einem Fehler:-
Die
DefinitionBodyEigenschaft wird mit dem in der Open API-Definition festgelegtentitleFeld angegeben. Dies führt zu einem Konflikt imtitleFeld, der AWS SAM nicht gelöst werden kann. -
Die
DefinitionUriEigenschaft ist angegeben — ändert AWS SAM keine Open-API-Definition, die von Amazon S3 abgerufen wird.
Typ: Zeichenfolge
Required: No
CloudFormation Kompatibilität: Diese Eigenschaft ist einzigartig für AWS SAM und hat kein CloudFormation Äquivalent.
-
-
Geben Sie an, ob Tags von der
TagsEigenschaft an Ihre AWS::Serverless::HttpApi generierten Ressourcen weitergegeben werden sollen oder nicht. Geben SieTruean, dass Tags in Ihren generierten Ressourcen verbreitet werden sollen.Typ: Boolesch
Required: No
Standardwert:
FalseCloudFormation Kompatibilität: Diese Eigenschaft ist einzigartig für AWS SAM und hat kein CloudFormation Äquivalent.
-
RouteSettings -
Die Routeneinstellungen pro Route für diese HTTP-API. Weitere Informationen finden Sie unter Working with routes for HTTP APIs im API Gateway Developer Guide.
Typ: RouteSettings
Required: No
CloudFormation Kompatibilität: Diese Eigenschaft wird direkt an die
RouteSettingsEigenschaft einerAWS::ApiGatewayV2::StageRessource übergeben. -
StageName -
Der Name der API-Stufe. Wenn kein Name angegeben ist, wird der
$defaultStagingbereich von API Gateway AWS SAM verwendet.Typ: Zeichenfolge
Required: No
Standard: $default
CloudFormation Kompatibilität: Diese Eigenschaft wird direkt an die
StageNameEigenschaft einerAWS::ApiGatewayV2::StageRessource übergeben. -
StageVariables -
Eine Zuweisung, welche die Stufenvariablen definiert. Variablennamen können alphanumerische Zeichen und Unterstriche enthalten. Die Werte müssen mit [a-Za-Z0-9-._~:/? #&=,] +.
Type: Json
Required: No
CloudFormation Kompatibilität: Diese Eigenschaft wird direkt an die
StageVariablesEigenschaft einerAWS::ApiGatewayV2::StageRessource übergeben. -
Eine Zuordnung (Zeichenfolge zu Zeichenfolge), die die Tags angibt, die zu diesem API-Gateway-Schritt hinzugefügt werden sollen. Schlüssel können 1 bis 128 Unicode-Zeichen lang sein und dürfen das Präfix nicht enthalten
aws:. Sie können eines der folgenden Zeichen verwenden: Unicode-Zeichen, Ziffern, Leerraum,_,.,/,=,+und-. Werte können 1 bis 256 Unicode-Zeichen lang sein.Typ: Karte
Required: No
CloudFormation Kompatibilität: Diese Eigenschaft ist einzigartig AWS SAM und hat kein CloudFormation Äquivalent.
Zusätzliche Hinweise: Die
TagsEigenschaft erfordert eine AWS SAM Änderung Ihrer OpenAPI-Definition, sodass Tags nur hinzugefügt werden, wenn dieDefinitionBodyEigenschaft angegeben ist — es werden keine Tags hinzugefügt, wenn die Eigenschaft angegeben ist.DefinitionUriAWS SAM fügt automatisch ein Tag hinzu.httpapi:createdBy:SAMDerAWS::ApiGatewayV2::StageRessource und derAWS::ApiGatewayV2::DomainNameRessource (fallsDomainNameangegeben) werden auch Tags hinzugefügt.
Rückgabewerte
Punkt
Wenn Sie die logische ID dieser Ressource an die systeminterne Ref Funktion übergeben, wird die API-ID der zugrunde liegenden AWS::ApiGatewayV2::Api Ressource Ref zurückgegeben, z. B. a1bcdef2gh
Weitere Informationen zur Verwendung der Ref Funktion finden Sie Refim AWS CloudFormation Benutzerhandbuch.
Beispiele
Einfach HttpApi
Das folgende Beispiel zeigt das Minimum, das für die Einrichtung eines HTTP-API-Endpunkts erforderlich ist, der von einer Lambda-Funktion unterstützt wird. In diesem Beispiel wird die standardmäßige HTTP-API verwendet, die AWS SAM erstellt.
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 mit Auth
Das folgende Beispiel zeigt, wie die Autorisierung auf HTTP-API-Endpunkten eingerichtet wird.
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"
HttpApimit OpenAPI-Definition
Das folgende Beispiel zeigt, wie Sie der Vorlage eine OpenAPI-Definition hinzufügen.
Beachten Sie, dass alle fehlenden Lambda-Integrationen für HttpApi Ereignisse, die auf diese HTTP-API verweisen, AWS SAM ausgefüllt werden. AWS SAM fügt auch alle fehlenden Pfade hinzu, auf die HttpApi Ereignisse verweisen.
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 mit Konfigurationseinstellungen
Das folgende Beispiel zeigt, wie HTTP-API- und Staging-Konfigurationen zur Vorlage hinzugefügt werden.
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