As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
AWS::Serverless::HttpApi
Cria uma API HTTP do Amazon API Gateway, que permite criar RESTful APIs com menor latência e custos mais baixos do que o REST APIs. Para obter mais informações, consulte Trabalhando com HTTP APIs no Guia do Desenvolvedor do API Gateway.
Recomendamos que você use AWS CloudFormation ganchos ou políticas do IAM para verificar se os recursos do API Gateway têm autorizadores vinculados a eles para controlar o acesso a eles.
Para obter mais informações sobre o uso de AWS CloudFormation ganchos, consulte Registrando ganchos no guia do usuário da AWS CloudFormation CLI e no repositório. apigw-enforce-authorizer
Para obter mais informações sobre o uso de políticas do IAM, consulte Exigir que as rotas de API tenham autorização no Guia do desenvolvedor do API Gateway.
nota
Quando você implanta AWS CloudFormation, AWS SAM transforma seus AWS SAM recursos em AWS CloudFormation recursos. Para obter mais informações, consulte AWS CloudFormation Recursos gerados para AWS SAM.
Sintaxe
Para declarar essa entidade em seu modelo AWS Serverless Application Model (AWS SAM), use a sintaxe a seguir.
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
Propriedades
-
AccessLogSettings -
As configurações para o registro em log de acesso em um estágio.
Digite: AccessLogSettings
Obrigatório: não
AWS CloudFormation compatibilidade: essa propriedade é passada diretamente para a
AccessLogSettingspropriedade de umAWS::ApiGatewayV2::Stagerecurso. -
Auth -
Configura a autorização para controlar o acesso à sua API HTTP do API Gateway.
Para obter mais informações, consulte Controle do acesso ao HTTP APIs com autorizadores JWT no Guia do desenvolvedor do API Gateway.
Digite: HttpApiAuth
Obrigatório: não
AWS CloudFormation compatibilidade: essa propriedade é exclusiva AWS SAM e não tem AWS CloudFormation equivalente.
-
CorsConfiguration -
Gerencia o compartilhamento de recursos de origem cruzada (CORS) para todo o seu API Gateway HTTP. APIs Especifique o domínio a ser permitido como uma string ou especifique um objeto
HttpApiCorsConfiguration. Observe que o CORS AWS SAM precisa modificar sua definição de OpenAPI, então o CORS funciona somente seDefinitionBodya propriedade for especificada.Para obter mais informações, consulte Configurar o CORS para uma API HTTP no Guia do desenvolvedor do API Gateway.
nota
Se
CorsConfigurationfor definido em uma definição de OpenAPI e no nível da propriedade, AWS SAM mesclará as duas fontes de configuração com as propriedades que têm precedência. Se essa propriedade for definida comotrue, todas as origens serão permitidas.Tipo: String | HttpApiCorsConfiguration
Obrigatório: não
AWS CloudFormation compatibilidade: essa propriedade é exclusiva AWS SAM e não tem AWS CloudFormation equivalente.
-
DefaultRouteSettings -
As configurações de rota padrão para essa API HTTP. Essas configurações se aplicam a todas as rotas, a menos que sejam substituídas pela propriedade
RouteSettingspara determinadas rotas.Digite: RouteSettings
Obrigatório: não
AWS CloudFormation compatibilidade: essa propriedade é passada diretamente para a
RouteSettingspropriedade de umAWS::ApiGatewayV2::Stagerecurso. -
DefinitionBody -
A definição de OpenAPI que descreve sua API HTTP. Se você não especificar um
DefinitionUriou umDefinitionBody, AWS SAM gera umDefinitionBodypara você com base na configuração do seu modelo.Type: JSON
Obrigatório: não
AWS CloudFormation compatibilidade: essa propriedade é semelhante à
Bodypropriedade de umAWS::ApiGatewayV2::Apirecurso. Se determinadas propriedades forem fornecidas, AWS SAM poderá inserir conteúdo ou modificar oDefinitionBodyantes de ser passado para AWS CloudFormation. As propriedades incluemAuthe umEventSourcedo tipo HttpApi para umAWS::Serverless::Functionrecurso correspondente. -
DefinitionUri -
O URI, o caminho de arquivo local ou o objeto de localização do Amazon Simple Storage Service (Amazon S3) da definição de OpenAPI que define a API HTTP. O objeto Amazon S3 ao qual essa propriedade faz referência deve ser um arquivo de definição de OpenAPI válido. Se você não especificar a
DefinitionUriou seDefinitionBodyfor especificado, AWS SAM gera umDefinitionBodypara você com base na configuração do seu modelo.Se você fornecer um caminho de arquivo local, o modelo deverá passar pelo fluxo de trabalho que inclui o comando
sam deployousam packagepara que a definição seja transformada adequadamente.As funções intrínsecas não são suportadas nos arquivos de OpenApi definição externos aos quais você faz referência.
DefinitionUriPara importar uma OpenApi definição para o modelo, use aDefinitionBodypropriedade com a transformação Include.Tipo: String | HttpApiDefinition
Obrigatório: não
AWS CloudFormation compatibilidade: essa propriedade é semelhante à
BodyS3Locationpropriedade de umAWS::ApiGatewayV2::Apirecurso. As propriedades aninhadas do Amazon S3 têm nomes diferentes. -
Description -
A descrição do recurso de API HTTP.
Quando você especificar
Description, AWS SAM modificará a OpenApi definição do recurso da API HTTP definindo odescriptioncampo. Os seguintes cenários resultarão em um erro:-
A
DefinitionBodypropriedade é especificada com odescriptioncampo definido na definição da Open API — isso resulta em um conflito dodescriptioncampo que AWS SAM não será resolvido. -
A
DefinitionUripropriedade é especificada — AWS SAM não modificará uma definição de API aberta que é recuperada do Amazon S3.
Type: string
Obrigatório: não
AWS CloudFormation compatibilidade: essa propriedade é exclusiva AWS SAM e não tem AWS CloudFormation equivalente.
-
-
DisableExecuteApiEndpoint -
Especifica se os clientes podem invocar sua API HTTP usando o endpoint
execute-apipadrãohttps://{api_id}.execute-api.{region}.amazonaws.com. Por padrão, os clientes podem invocar sua API com o endpoint padrão. Para exigir que os clientes usem somente um nome de domínio personalizado para invocar sua API, desabilite o endpoint padrão.Para usar essa propriedade, você deve especificar a propriedade
DefinitionBodyem vez da propriedadeDefinitionUriou definirx-amazon-apigateway-endpoint-configurationcomdisableExecuteApiEndpointna definição de OpenAPI.Tipo: booliano
Obrigatório: não
AWS CloudFormation compatibilidade: essa propriedade é semelhante à
DisableExecuteApiEndpointpropriedade de umAWS::ApiGatewayV2::Apirecurso. Ele é passado diretamente para a propriedadedisableExecuteApiEndpointde uma extensãox-amazon-apigateway-endpoint-configuration, que é adicionada à propriedadeBodyde um recursoAWS::ApiGatewayV2::Api. -
Domain -
Configura um domínio personalizado para essa API HTTP do API Gateway.
Digite: HttpApiDomainConfiguration
Obrigatório: não
AWS CloudFormation compatibilidade: essa propriedade é exclusiva AWS SAM e não tem AWS CloudFormation equivalente.
-
FailOnWarnings -
Especifica se deve reverter a criação da API HTTP (
true) ou não (false) quando um aviso é encontrado. O valor padrão éfalse.Tipo: booliano
Obrigatório: não
AWS CloudFormation compatibilidade: essa propriedade é passada diretamente para a
FailOnWarningspropriedade de umAWS::ApiGatewayV2::Apirecurso. Name-
O nome do recurso API HTTP.
Quando você especificar
Name, AWS SAM modificará a definição de openAPI do recurso da API HTTP definindo otitlecampo. Os seguintes cenários resultarão em um erro:-
A
DefinitionBodypropriedade é especificada com otitlecampo definido na definição da Open API — isso resulta em um conflito dotitlecampo que AWS SAM não será resolvido. -
A
DefinitionUripropriedade é especificada — AWS SAM não modificará uma definição de API aberta que é recuperada do Amazon S3.
Type: string
Obrigatório: não
AWS CloudFormation compatibilidade: essa propriedade é exclusiva AWS SAM e não tem AWS CloudFormation equivalente.
-
-
Indique se deseja ou não passar as tags da propriedade
Tagspara os recursos AWS::Serverless::HttpApi gerados. EspecifiqueTruepara propagar as tags nos recursos gerados.Tipo: booliano
Obrigatório: não
Padrão:
FalseAWS CloudFormation compatibilidade: essa propriedade é exclusiva AWS SAM e não tem AWS CloudFormation equivalente.
-
RouteSettings -
As configurações de rota, por rota, para essa API HTTP. Para obter mais informações, consulte Como trabalhar com rotas para HTTP APIs no Guia do desenvolvedor do API Gateway.
Digite: RouteSettings
Obrigatório: não
AWS CloudFormation compatibilidade: essa propriedade é passada diretamente para a
RouteSettingspropriedade de umAWS::ApiGatewayV2::Stagerecurso. -
StageName -
O nome do estágio da API. Se nenhum nome for especificado, AWS SAM usa o
$defaultestágio do API Gateway.Type: string
Obrigatório: não
Padrão: $default
AWS CloudFormation compatibilidade: essa propriedade é passada diretamente para a
StageNamepropriedade de umAWS::ApiGatewayV2::Stagerecurso. -
StageVariables -
Um mapa que define as variáveis da etapa. Os nomes das variáveis podem ter caracteres alfanuméricos e sublinhados. Os valores devem corresponder a [A-Za-z0-9-._~:/? #&=,] +.
Type: Json
Obrigatório: não
AWS CloudFormation compatibilidade: essa propriedade é passada diretamente para a
StageVariablespropriedade de umAWS::ApiGatewayV2::Stagerecurso. -
Um mapa (string para string) que especifica as tags a serem adicionadas a esse estágio do API Gateway. As chaves podem ter de 1 a 128 caracteres Unicode e não podem incluir o prefixo
aws:. Use qualquer um dos seguintes caracteres: o conjunto de letras, dígitos, espaço em branco,_,.,/,=,+e-. Os valores podem ter de 1 a 256 caracteres Unicode.Tipo: mapa
Obrigatório: não
AWS CloudFormation compatibilidade: essa propriedade é exclusiva AWS SAM e não tem AWS CloudFormation equivalente.
Observações adicionais: a
Tagspropriedade AWS SAM precisa modificar sua definição de OpenAPI. Portanto, as tags são adicionadas somente se aDefinitionBodypropriedade for especificada. Nenhuma tag será adicionada se a propriedade for especificada.DefinitionUriAWS SAM adiciona automaticamente umahttpapi:createdBy:SAMtag. As tags também são adicionadas ao recursoAWS::ApiGatewayV2::Stagee ao recursoAWS::ApiGatewayV2::DomainName(seDomainNamefor especificado).
Valores de retorno
Ref.
Quando você transmite o ID lógico desse recurso para a função intrínseca Ref, Ref retorna o ID da API do recurso AWS::ApiGatewayV2::Api subjacente, como a1bcdef2gh.
Para obter mais informações sobre como usar a função Ref, consulte Ref no Guia do usuário do AWS CloudFormation .
Exemplos
Simples HttpApi
O exemplo a seguir mostra o mínimo necessário para configurar um endpoint de API HTTP apoiado por uma função do Lambda. Este exemplo usa a API HTTP padrão que AWS SAM cria.
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 com Auth
O exemplo a seguir mostra como configurar a autorização em endpoints da 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"
HttpApicom definição de OpenAPI
O exemplo a seguir mostra como adicionar uma definição de OpenAPI ao modelo.
Observe que AWS SAM preenche todas as integrações Lambda ausentes HttpApi para eventos que fazem referência a essa API HTTP. AWS SAM também adiciona todos os caminhos ausentes aos quais os HttpApi eventos fazem referência.
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 com definições de configuração
O exemplo a seguir mostra como adicionar configurações da API HTTP e do estágio ao modelo.
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