翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS::Serverless::HttpApi
REST API よりもレイテンシーとコストが低い RESTful API を作成できる Amazon API Gateway HTTP API を作成します。詳細については、API Gateway デベロッパーガイドの「HTTP API の操作」を参照してください。
AWS CloudFormation フックまたは IAM ポリシーを使用して、API Gateway リソースにアクセスを制御するオーソライザーがアタッチされていることを確認することをお勧めします。
AWS CloudFormation フックの使用の詳細については、AWS CloudFormation CLI ユーザーガイドの「フックの登録」およびapigw-enforce-authorizer
IAM ポリシーの使用の詳細については、「API ゲートウェイデベロッパーガイド」の「API ルートに認可を要求する」を参照してください。
注記
にデプロイすると AWS CloudFormation、 は AWS SAM リソースを AWS CloudFormation リソース AWS SAM に変換します。詳細については、「用に生成された AWS CloudFormation リソース AWS SAM」を参照してください。
構文
AWS Serverless Application Model (AWS SAM) テンプレートでこのエンティティを宣言するには、次の構文を使用します。
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
プロパティ
-
AccessLogSettings -
ステージのアクセスロギングのための設定です。
タイプ: AccessLogSettings
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGatewayV2::StageリソースのAccessLogSettingsプロパティに直接渡されます。 -
Auth -
API Gateway HTTP API へのアクセスを制御するための認可を設定します。
詳細については、API Gateway デベロッパーガイドの「JWT オーソライザーを使用した HTTP API へのアクセスの制御」を参照してください。
タイプ: HttpApiAuth
必須: いいえ
AWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS 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
必須: いいえ
AWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS CloudFormation 同等のものはありません。
-
DefaultRouteSettings -
この HTTP API のデフォルトルート設定です。これらの設定は、特定のルートの
RouteSettingsプロパティによって上書きされる場合を除き、すべてのルートに適用されます。Type: RouteSettings
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGatewayV2::StageリソースのRouteSettingsプロパティに直接渡されます。 -
DefinitionBody -
HTTP API を説明する OpenAPI 定義です。
DefinitionUriまたは を指定しない場合DefinitionBody、 はテンプレート設定DefinitionBodyに基づいて AWS SAM を生成します。Type: JSON
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGatewayV2::ApiリソースのBodyプロパティに似ています。特定のプロパティが指定されている場合、渡されるDefinitionBody前に にコンテンツを挿入したり、 を変更 AWS SAM したりできます AWS CloudFormation。プロパティにはAuth、および対応するAWS::Serverless::Functionのための HttpApi タイプのEventSourceが含まれます。 -
DefinitionUri -
HTTP API を定義する OpenAPI 定義の Amazon Simple Storage Service (Amazon S3) URI、ローカルファイルパス、またはロケーションオブジェクトです。このプロパティが参照する Amazon S3 オブジェクトは、有効な OpenAPI 定義ファイルである必要があります。を指定しない場合、
DefinitionUriまたは が指定されている場合、DefinitionBodyはテンプレート設定に基づいてDefinitionBodyAWS SAM を生成します。ローカルファイルパスを指定する場合は、定義が適切に変換されるようにするために、テンプレートが
sam deployまたはsam packageコマンドを含むワークフローを実行する必要があります。DefinitionUriを使用して参照する外部 OpenApi 定義ファイルでは、組み込み関数はサポートされていません。OpenApi 定義をテンプレートにインポートするには、Include transform が含まれるDefinitionBodyプロパティを使用します。タイプ: 文字列 | HttpApiDefinition
必須: いいえ
AWS 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
型: 文字列
必須: いいえ
AWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS CloudFormation 同等のものはありません。
-
-
DisableExecuteApiEndpoint -
クライアントがデフォルトの
execute-apiエンドポイントhttps://{api_id}.execute-api.{region}.amazonaws.comを使用して HTTP API を呼び出すことができるかどうかを指定します。デフォルトで、クライアントはデフォルトのエンドポイントを使用して API を呼び出すことができます。クライアントが API の呼び出しにカスタムドメイン名以外を使用しないようにするには、デフォルトのエンドポイントを無効にします。このプロパティを使用するには、
DefinitionBodyプロパティではなくDefinitionUriプロパティを指定するか、OpenAPI 定義のx-amazon-apigateway-endpoint-configurationをdisableExecuteApiEndpointに定義する必要があります。タイプ: ブール
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGatewayV2::ApiリソースのDisableExecuteApiEndpointプロパティに似ています。これはx-amazon-apigateway-endpoint-configuration拡張機能のdisableExecuteApiEndpointプロパティに直接渡され、AWS::ApiGatewayV2::ApiリソースのBodyプロパティに追加されます。 -
Domain -
この API Gateway HTTP API のカスタムドメインを設定します。
タイプ: HttpApiDomainConfiguration
必須: いいえ
AWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS CloudFormation 同等のプロパティはありません。
-
FailOnWarnings -
警告が発生したときに HTTP API の作成をロールバックするか (
true) しないか (false) を指定します。デフォルト値はfalseです。タイプ: ブール
必須: いいえ
AWS 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
型: 文字列
必須: いいえ
AWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS CloudFormation 同等のものはありません。
-
-
AWS::Serverless::HttpApi が生成したリソースに
Tagsプロパティからのタグを渡すかどうかを指定します。Trueを指定して、生成されたリソースにタグを伝播します。タイプ: ブール
必須: いいえ
デフォルト:
FalseAWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS CloudFormation 同等のものはありません。
-
RouteSettings -
この HTTP API に対するルートごとのルート設定です。詳細については、API Gateway デベロッパーガイドの「HTTP API のルートの使用」を参照してください。
Type: RouteSettings
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGatewayV2::StageリソースのRouteSettingsプロパティに直接渡されます。 -
StageName -
API ステージの名前です。名前が指定されていない場合、 は API Gateway から
$defaultステージ AWS SAM を使用します。型: 文字列
必須: いいえ
デフォルト: $default
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGatewayV2::StageリソースのStageNameプロパティに直接渡されます。 -
StageVariables -
ステージ変数を定義するマップです。変数名には、英数字とアンダースコアを使用できます。値は [A-Za-z0-9-._~:/?#&=,]+ に一致する必要があります。
タイプ: Json
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGatewayV2::StageリソースのStageVariablesプロパティに直接渡されます。 -
この API Gateway ステージに追加するタグを指定するマップ (文字列対文字列) です。キーの長さは 1~128 文字の Unicode 文字で、プレフィックス
aws:を含めることはできません。以下の文字を使用できます。一連の Unicode 文字、数字、空白、_、.、/、=、+、-。値は 1~256 文字の Unicode 文字にすることができます。タイプ: マップ
必須: いいえ
AWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS CloudFormation 同等のものはありません。
その他の注意点:
Tagsプロパティは AWS SAM OpenAPI 定義を変更する必要があるため、タグはDefinitionBodyプロパティが指定されている場合のみ追加されます。DefinitionUriプロパティが指定されている場合、タグは追加されません。 は タグ AWS SAM を自動的に追加しますhttpapi:createdBy: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 入力することに注意してください。 AWS SAM また、 はHttpApi イベントが参照する欠落しているパスも追加します。
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