Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
AWS::Serverless::HttpApi
Crea un'API HTTP Amazon API Gateway, che ti consente di creare RESTful APIs con una latenza inferiore e costi inferiori rispetto a REST APIs. Per ulteriori informazioni, consulta Working with HTTP APIs nella API Gateway Developer Guide.
Ti consigliamo di utilizzare AWS CloudFormation hook o policy IAM per verificare che alle risorse API Gateway siano associate autorizzazioni per controllarne l'accesso.
Per ulteriori informazioni sull'uso degli AWS CloudFormation hook, consulta Registrazione degli hook nella guida per l'utente della AWS CloudFormation CLI e nel repository. apigw-enforce-authorizer
Per ulteriori informazioni sull'utilizzo delle policy IAM, consulta Require che le route API abbiano l'autorizzazione nella API Gateway Developer Guide.
Nota
Quando esegui la distribuzione a AWS CloudFormation, AWS SAM trasforma le tue AWS SAM risorse in AWS CloudFormation risorse. Per ulteriori informazioni, consulta AWS CloudFormation Risorse generate per AWS SAM.
Sintassi
Per dichiarare questa entità nel tuo modello AWS Serverless Application Model (AWS SAM), usa la seguente sintassi.
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
Proprietà
-
AccessLogSettings -
Le impostazioni per la registrazione degli accessi in una fase.
Tipo: AccessLogSettings
Required: No
AWS CloudFormation compatibilità: questa proprietà viene passata direttamente alla
AccessLogSettingsproprietà di unaAWS::ApiGatewayV2::Stagerisorsa. -
Auth -
Configura l'autorizzazione per il controllo dell'accesso all'API HTTP API Gateway.
Per ulteriori informazioni, consulta Controllare l'accesso a HTTP APIs con gli autorizzatori JWT nella API Gateway Developer Guide.
Tipo: HttpApiAuth
Required: No
AWS CloudFormation compatibilità: questa proprietà è unica AWS SAM e non ha un AWS CloudFormation equivalente.
-
CorsConfiguration -
Gestisce la condivisione delle risorse tra origini (CORS) per tutti i tuoi API Gateway HTTP. APIs Specificate il dominio da consentire come stringa o specificate un
HttpApiCorsConfigurationoggetto. Nota che CORS richiede AWS SAM di modificare la definizione OpenAPI, quindi CORS funziona solo seDefinitionBodyla proprietà è specificata.Per ulteriori informazioni, consulta Configurazione di CORS per un'API HTTP nella Guida per sviluppatori di API Gateway.
Nota
Se
CorsConfigurationè impostato sia in una definizione OpenAPI che a livello di proprietà, AWS SAM unisce entrambe le fonti di configurazione con le proprietà che hanno la precedenza. Se questa proprietà è impostata sutrue, tutte le origini sono consentite.Tipo: String | HttpApiCorsConfiguration
Required: No
AWS CloudFormation compatibilità: Questa proprietà è unica AWS SAM e non ha un AWS CloudFormation equivalente.
-
DefaultRouteSettings -
Le impostazioni di routing predefinite per questa API HTTP. Queste impostazioni si applicano a tutti i percorsi a meno che non vengano sovrascritte dalla
RouteSettingsproprietà per determinati percorsi.Tipo: RouteSettings
Required: No
AWS CloudFormation compatibilità: questa proprietà viene passata direttamente alla
RouteSettingsproprietà di unaAWS::ApiGatewayV2::Stagerisorsa. -
DefinitionBody -
La definizione OpenAPI che descrive la tua API HTTP. Se non specifichi a
DefinitionUrio aDefinitionBody, AWS SAM genera unaDefinitionBodyper te in base alla configurazione del modello.Type: JSON
Required: No
AWS CloudFormation compatibilità: questa proprietà è simile alla
Bodyproprietà di unaAWS::ApiGatewayV2::Apirisorsa. Se vengono fornite determinate proprietà, AWS SAM può inserire o modificare il contenutoDefinitionBodyprima che venga passato a AWS CloudFormation. Le proprietà includonoAuthe unEventSourcetipo HttpApi per unaAWS::Serverless::Functionrisorsa corrispondente. -
DefinitionUri -
L'URI, il percorso del file locale o l'oggetto location di Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) che definisce l'API HTTP. L'oggetto Amazon S3 a cui fa riferimento questa proprietà deve essere un file di definizione OpenAPI valido. Se non specifichi a
DefinitionUrio a are, AWS SAM genera unDefinitionBodymessaggioDefinitionBodyper te in base alla configurazione del modello.Se fornite un percorso di file locale, il modello deve passare attraverso il flusso di lavoro che include il
sam packagecomandosam deployo affinché la definizione venga trasformata correttamente.Le funzioni intrinseche non sono supportate nei file di OpenApi definizione esterni a cui si fa riferimento.
DefinitionUriPer importare una OpenApi definizione nel modello, utilizzate laDefinitionBodyproprietà con la trasformazione Include.Tipo: String | HttpApiDefinition
Required: No
AWS CloudFormation compatibilità: Questa proprietà è simile alla
BodyS3Locationproprietà di unaAWS::ApiGatewayV2::Apirisorsa. Le proprietà annidate di Amazon S3 sono denominate in modo diverso. -
Description -
La descrizione della risorsa API HTTP.
Quando si specifica
Description, AWS SAM modificherà la OpenApi definizione della risorsa API HTTP impostando ildescriptioncampo. I seguenti scenari genereranno un errore:-
La
DefinitionBodyproprietà viene specificata con ildescriptioncampo impostato nella definizione di Open API: ciò genera un conflitto deldescriptioncampo che AWS SAM non verrà risolto. -
La
DefinitionUriproprietà è specificata: AWS SAM non modificherà una definizione di Open API recuperata da Amazon S3.
Tipo: Stringa
Required: No
AWS CloudFormation compatibilità: questa proprietà è unica AWS SAM e non ha un AWS CloudFormation equivalente.
-
-
DisableExecuteApiEndpoint -
Speciifica se i client possono richiamare l'API HTTP utilizzando l'endpoint predefinito
execute-api.https://{api_id}.execute-api.{region}.amazonaws.com.rproxy.govskope.caPer impostazione predefinita, i client possono richiamare l'API con l'endpoint predefinito. Per richiedere che i client utilizzino solo un nome di dominio personalizzato per richiamare l'API, disabilita l'endpoint predefinito.Per utilizzare questa proprietà, è necessario specificare la
DefinitionBodyproprietà anziché laDefinitionUriproprietà o definirex-amazon-apigateway-endpoint-configurationcondisableExecuteApiEndpointnella definizione OpenAPI.Tipo: Booleano
Required: No
AWS CloudFormation compatibilità: Questa proprietà è simile alla
DisableExecuteApiEndpointproprietà di unaAWS::ApiGatewayV2::Apirisorsa. Viene passato direttamente alladisableExecuteApiEndpointproprietà di un'x-amazon-apigateway-endpoint-configurationestensione, che viene aggiunta allaBodyproprietà di unaAWS::ApiGatewayV2::Apirisorsa. -
Domain -
Configura un dominio personalizzato per questa API HTTP API Gateway.
Tipo: HttpApiDomainConfiguration
Required: No
AWS CloudFormation compatibilità: questa proprietà è unica AWS SAM e non ha un AWS CloudFormation equivalente.
-
FailOnWarnings -
Speciifica se ripristinare la creazione dell'API HTTP (
true) o meno (false) quando viene rilevato un avviso. Il valore predefinito èfalse.Tipo: Booleano
Required: No
AWS CloudFormation compatibilità: questa proprietà viene passata direttamente alla
FailOnWarningsproprietà di unaAWS::ApiGatewayV2::Apirisorsa. Name-
Il nome della risorsa API HTTP.
Quando si specifica
Name, AWS SAM modificherà la definizione OpenAPI della risorsa API HTTP impostando iltitlecampo. I seguenti scenari genereranno un errore:-
La
DefinitionBodyproprietà viene specificata con iltitlecampo impostato nella definizione di Open API: ciò genera un conflitto deltitlecampo che AWS SAM non verrà risolto. -
La
DefinitionUriproprietà è specificata: AWS SAM non modificherà una definizione di Open API recuperata da Amazon S3.
Tipo: Stringa
Required: No
AWS CloudFormation compatibilità: questa proprietà è unica AWS SAM e non ha un AWS CloudFormation equivalente.
-
-
Indica se passare o meno i tag dalla
Tagsproprietà alle risorse AWS::Serverless::HttpApi generate.TrueSpecificate di propagare i tag nelle risorse generate.Tipo: Booleano
Required: No
Default:
FalseAWS CloudFormation compatibilità: questa proprietà è unica AWS SAM e non ha un AWS CloudFormation equivalente.
-
RouteSettings -
Le impostazioni del percorso, per percorso, per questa API HTTP. Per ulteriori informazioni, consulta Working with routes for HTTP APIs nella API Gateway Developer Guide.
Tipo: RouteSettings
Required: No
AWS CloudFormation compatibilità: questa proprietà viene passata direttamente alla
RouteSettingsproprietà di unaAWS::ApiGatewayV2::Stagerisorsa. -
StageName -
Il nome della fase API. Se non viene specificato alcun nome, AWS SAM utilizza lo
$defaultstage di API Gateway.Tipo: Stringa
Required: No
Predefinito: $default
AWS CloudFormation compatibilità: questa proprietà viene passata direttamente alla
StageNameproprietà di unaAWS::ApiGatewayV2::Stagerisorsa. -
StageVariables -
Mappa che definisce le variabili delle fasi. I nomi delle variabili possono avere caratteri alfanumerici e caratteri di sottolineatura. I valori devono corrispondere a [a-zA-Z0-9-._~:/? #&=,] +.
Type: Json
Required: No
AWS CloudFormation compatibilità: questa proprietà viene passata direttamente alla
StageVariablesproprietà di unaAWS::ApiGatewayV2::Stagerisorsa. -
Una mappa (da stringa a stringa) che specifica i tag da aggiungere a questa fase di API Gateway. Le chiavi possono contenere da 1 a 128 caratteri Unicode e non possono includere il prefisso.
aws:Puoi utilizzare uno qualsiasi dei seguenti caratteri: l'insieme delle lettere Unicode, cifre, spazi,_,.,/,=,+e-. I valori possono contenere da 1 a 256 caratteri Unicode.Tipo: Mappa
Required: No
AWS CloudFormation compatibilità: questa proprietà è unica AWS SAM e non ha un AWS CloudFormation equivalente.
Note aggiuntive: La
Tagsproprietà richiede di AWS SAM modificare la definizione di OpenAPI, quindi i tag vengono aggiunti solo se laDefinitionBodyproprietà è specificata, non viene aggiunto alcun tag se la proprietà è specificata.DefinitionUriAWS SAM aggiunge automaticamente un tag.httpapi:createdBy:SAMI tag vengono aggiunti anche allaAWS::ApiGatewayV2::Stagerisorsa e allaAWS::ApiGatewayV2::DomainNamerisorsa (seDomainNamespecificato).
Valori restituiti
Ref
Quando si passa l'ID logico di questa risorsa alla Ref funzione intrinseca, Ref restituisce l'ID API della AWS::ApiGatewayV2::Api risorsa sottostante, ad esempio. a1bcdef2gh
Per ulteriori informazioni sull'utilizzo della Ref funzione, consulta Refla Guida per l'AWS CloudFormation utente.
Esempi
Semplice HttpApi
L'esempio seguente mostra il minimo necessario per configurare un endpoint API HTTP supportato da una funzione Lambda. Questo esempio utilizza l'API HTTP predefinita che AWS SAM crea.
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 Auth
L'esempio seguente mostra come impostare l'autorizzazione sugli endpoint dell'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"
HttpApicon definizione OpenAPI
L'esempio seguente mostra come aggiungere una definizione OpenAPI al modello.
Tieni presente che AWS SAM compila tutte le integrazioni Lambda mancanti HttpApi per gli eventi che fanno riferimento a questa API HTTP. AWS SAM aggiunge anche eventuali percorsi mancanti a cui fanno riferimento gli HttpApi eventi.
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 impostazioni di configurazione
L'esempio seguente mostra come aggiungere API HTTP e configurazioni di stage al modello.
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