AWS::Serverless::HttpApi - AWS Serverless Application Model

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS::Serverless::HttpApi

REST API よりもレイテンシーとコストが低い RESTful API を作成できる Amazon API Gateway HTTP API を作成します。詳細については、API Gateway デベロッパーガイドの「HTTP API の操作」を参照してください。

CloudFormation フックまたは IAM ポリシーを使用して、API Gateway リソースにアクセスを制御するオーソライザーがアタッチされていることを確認することをお勧めします。

CloudFormation フックの使用の詳細については、CloudFormation CLI ユーザーガイド「フックの登録」およびapigw-enforce-authorizer GitHub リポジトリ」を参照してください。

IAM ポリシーの使用の詳細については、「API ゲートウェイデベロッパーガイド」の「API ルートに認可を要求する」を参照してください。

注記

にデプロイすると AWS CloudFormation、 は AWS SAM リソースを CloudFormation リソース AWS SAM に変換します。詳細については、「の生成済み CloudFormation リソース AWS SAM」を参照してください。

構文

AWS Serverless Application Model (AWS SAM) テンプレートでこのエンティティを宣言するには、次の構文を使用します。

プロパティ

AccessLogSettings

ステージのアクセスロギングのための設定です。

タイプ: AccessLogSettings

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::ApiGatewayV2::Stageリソースの AccessLogSettingsプロパティに直接渡されます。

Auth

API Gateway HTTP API へのアクセスを制御するための認可を設定します。

詳細については、API Gateway デベロッパーガイドの「JWT オーソライザーを使用した HTTP API へのアクセスの制御」を参照してください。

タイプ: HttpApiAuth

必須: いいえ

CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 CloudFormation 同等のものはありません。

CorsConfiguration

すべての API Gateway HTTP API のクロスオリジンリソース共有 (CORS) を管理します。文字列として許可するドメインを指定、または HttpApiCorsConfiguration オブジェクトを指定します。CORS では OpenAPI 定義を変更 AWS SAM する必要があるため、CORS は DefinitionBodyプロパティが指定されている場合にのみ機能することに注意してください。

詳細については、API Gateway デベロッパーガイドの「HTTP API の CORS の設定」を参照してください。

注記

CorsConfiguration が OpenAPI 定義とプロパティレベルの両方で設定されている場合、 は両方の設定ソースをプロパティを優先して AWS SAM マージします。このプロパティが true に設定されている場合、すべてのオリジンが許可されます。

タイプ: 文字列 | HttpApiCorsConfiguration

必須: いいえ

CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 CloudFormation 同等のものはありません。

DefaultRouteSettings

この HTTP API のデフォルトルート設定です。これらの設定は、特定のルートの RouteSettings プロパティによって上書きされる場合を除き、すべてのルートに適用されます。

Type: RouteSettings

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::ApiGatewayV2::Stageリソースの RouteSettingsプロパティに直接渡されます。

DefinitionBody

HTTP API を説明する OpenAPI 定義です。DefinitionUri または を指定しない場合DefinitionBody、 はテンプレート設定に基づいて DefinitionBody AWS SAM を生成します。

Type: JSON

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::ApiGatewayV2::Apiリソースの Bodyプロパティに似ています。特定のプロパティが指定されている場合、渡されるDefinitionBody前に にコンテンツを挿入したり、 を変更 AWS SAM したりできます CloudFormation。プロパティには Auth、および対応する AWS::Serverless::Function のための HttpApi タイプの EventSource が含まれます。

DefinitionUri

HTTP API を定義する OpenAPI 定義の Amazon Simple Storage Service (Amazon S3) URI、ローカルファイルパス、またはロケーションオブジェクトです。このプロパティが参照する Amazon S3 オブジェクトは、有効な OpenAPI 定義ファイルである必要があります。を指定しない場合、DefinitionUriまたは が指定されている場合、 DefinitionBodyはテンプレート設定に基づいて DefinitionBody AWS SAM を生成します。

ローカルファイルパスを指定する場合は、定義が適切に変換されるようにするために、テンプレートが sam deploy または sam package コマンドを含むワークフローを実行する必要があります。

DefinitionUri を使用して参照する外部 OpenApi 定義ファイルでは、組み込み関数はサポートされていません。OpenApi 定義をテンプレートにインポートするには、Include transform が含まれる DefinitionBody プロパティを使用します。

タイプ: 文字列 | HttpApiDefinition

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::ApiGatewayV2::Apiリソースの BodyS3Locationプロパティに似ています。ネストされた Amazon S3 プロパティには異なる名前が付けられています。

Description

HTTP API リソースの説明です。

を指定するとDescription、 AWS SAM は descriptionフィールドを設定して HTTP API リソースの OpenApi 定義を変更します。次のシナリオではエラーが発生します。

  • DefinitionBody プロパティは、Open API 定義で設定された description フィールドで指定されます。これにより、解決 AWS SAM されない descriptionフィールドの競合が発生します。

  • DefinitionUri プロパティが指定されています。Amazon AWS SAM S3 から取得される Open API 定義は変更されません。 Amazon S3

タイプ: 文字列

必須: いいえ

CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 CloudFormation 同等のプロパティはありません。

DisableExecuteApiEndpoint

クライアントがデフォルトの execute-api エンドポイント https://{api_id}.execute-api.{region}.amazonaws.com を使用して HTTP API を呼び出すことができるかどうかを指定します。デフォルトで、クライアントはデフォルトのエンドポイントを使用して API を呼び出すことができます。クライアントが API の呼び出しにカスタムドメイン名以外を使用しないようにするには、デフォルトのエンドポイントを無効にします。

このプロパティを使用するには、 DefinitionBody プロパティではなく DefinitionUriプロパティを指定するか、OpenAPI 定義の x-amazon-apigateway-endpoint-configurationdisableExecuteApiEndpoint に定義する必要があります。

型: ブール

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::ApiGatewayV2::Apiリソースの DisableExecuteApiEndpointプロパティに似ています。これは x-amazon-apigateway-endpoint-configuration 拡張機能の disableExecuteApiEndpoint プロパティに直接渡され、AWS::ApiGatewayV2::Api リソースの Body プロパティに追加されます。

Domain

この API Gateway HTTP API のカスタムドメインを設定します。

タイプ: HttpApiDomainConfiguration

必須: いいえ

CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 CloudFormation 同等のものはありません。

FailOnWarnings

警告が発生したときに HTTP API の作成をロールバックするか (true) しないか (false) を指定します。デフォルト値は false です。

タイプ: ブール

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::ApiGatewayV2::Apiリソースの FailOnWarningsプロパティに直接渡されます。

Name

HTTP API リソースの名前。

を指定するとName、 AWS SAM は titleフィールドを設定して HTTP API リソースの OpenAPI 定義を変更します。次のシナリオではエラーが発生します。

  • DefinitionBody プロパティは、Open API 定義で設定された title フィールドで指定されます。これにより、解決 AWS SAM されない titleフィールドの競合が発生します。

  • DefinitionUri プロパティが指定されています。Amazon AWS SAM S3 から取得される Open API 定義は変更されません。 Amazon S3

タイプ: 文字列

必須: いいえ

CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 CloudFormation 同等のプロパティはありません。

PropagateTags

AWS::Serverless::HttpApi が生成したリソースに Tags プロパティからのタグを渡すかどうかを指定します。True を指定して、生成されたリソースにタグを伝播します。

型: ブール

必須: いいえ

デフォルト: False

CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 CloudFormation 同等のプロパティはありません。

RouteSettings

この HTTP API に対するルートごとのルート設定です。詳細については、API Gateway デベロッパーガイドの「HTTP API のルートの使用」を参照してください。

Type: RouteSettings

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::ApiGatewayV2::Stageリソースの RouteSettingsプロパティに直接渡されます。

StageName

API ステージの名前です。名前が指定されていない場合、 は API Gateway の $defaultステージ AWS SAM を使用します。

タイプ: 文字列

必須: いいえ

デフォルト: $default

CloudFormation 互換性: このプロパティは、 AWS::ApiGatewayV2::Stageリソースの StageNameプロパティに直接渡されます。

StageVariables

ステージ変数を定義するマップです。変数名には、英数字とアンダースコアを使用できます。値は [A-Za-z0-9-._~:/?#&=,]+ に一致する必要があります。

タイプ: Json

必須: いいえ

CloudFormation 互換性: このプロパティは、 AWS::ApiGatewayV2::Stageリソースの StageVariablesプロパティに直接渡されます。

Tags

この API Gateway ステージに追加するタグを指定するマップ (文字列対文字列) です。キーの長さは 1~128 文字の Unicode 文字で、プレフィックス aws: を含めることはできません。以下の文字を使用できます。一連の Unicode 文字、数字、空白、_./=+-。値は 1~256 文字の Unicode 文字にすることができます。

タイプ: マップ

必須: いいえ

CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 CloudFormation 同等のものはありません。

追加の注意: Tagsプロパティは OpenAPI 定義を変更する必要がある AWS SAM ため、タグは DefinitionBodyプロパティが指定されている場合のみ追加されます。 DefinitionUri プロパティが指定されている場合、タグは追加されません。 はhttpapi:createdBy:SAMタグ AWS SAM を自動的に追加します。タグは、AWS::ApiGatewayV2::Stage リソースと AWS::ApiGatewayV2::DomainName リソース (DomainName が指定されている場合) にも追加されます。

戻り値

参照番号

このリソースの論理 ID を Ref 組み込み関数に渡すと、Ref は基盤となる AWS::ApiGatewayV2::Api リソースの API ID (a1bcdef2gh など) を返します。

Ref 関数の使用方法の詳細については、AWS CloudFormation ユーザーガイドの「Ref」を参照してください。

シンプルな HttpApi

以下の例は、Lambda 関数によってサポートされる HTTP API エンドポイントをセットアップするために必要な最小限の内容を示しています。この例では、 が AWS SAM 作成するデフォルトの HTTP API を使用します。

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

Auth を使用した HTTP API

以下の例は、API エンドポイントで認可をセットアップする方法を示しています。

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"

OpenAPI 定義を使用した HttpAPI

以下の例は、テンプレートに OpenAPI 定義を追加する方法を示しています。

は、この HTTP API を参照する HttpApi イベントの欠落している Lambda 統合をすべて AWS SAM 入力することに注意してください。 は、HttpApi イベントが参照する欠落しているパス AWS SAM も追加します。

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

以下の例は、テンプレートに HTTP API とステージ構成を追加する方法を示しています。

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