翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS::Serverless::Api
HTTPS エンドポイント経由で呼び出すことができる Amazon API Gateway リソースとメソッドのコレクションを作成します。
AWS::Serverless::Api リソースを AWS サーバーレスアプリケーション定義テンプレートに明示的に追加する必要はありません。このタイプのリソースは、AWS::Serverless::Function リソースを参照しないテンプレートで定義された AWS::Serverless::Api リソースに定義される Api イベントの和集合から暗黙的に作成されます。
AWS::Serverless::Api リソースは、OpenApi を使用して API を定義および文書化するために使用する必要があります。これは、基盤となる Amazon API Gateway リソースを設定する機能をより多く提供します。
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::Api Properties: AccessLogSetting:AccessLogSettingAlwaysDeploy:BooleanApiKeySourceType:StringAuth:ApiAuthBinaryMediaTypes:ListCacheClusterEnabled:BooleanCacheClusterSize:StringCanarySetting:CanarySettingCors:String | CorsConfigurationDefinitionBody:JSONDefinitionUri:String | ApiDefinitionDescription:StringDisableExecuteApiEndpoint:BooleanDomain:DomainConfigurationEndpointConfiguration:EndpointConfigurationFailOnWarnings:BooleanGatewayResponses:MapMergeDefinitions:BooleanMethodSettings:MethodSettingsMinimumCompressionSize:IntegerMode:StringModels:MapName:StringOpenApiVersion:StringPropagateTags:BooleanPolicy:JSONStageName:StringTags:MapTracingEnabled:BooleanVariables:Map
プロパティ
-
AccessLogSetting -
ステージのアクセスログ設定を行います。
タイプ: AccessLogSetting
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::StageリソースのAccessLogSettingプロパティに直接渡されます。 -
AlwaysDeploy -
API への変更が検出されない場合でも、常に API をデプロイします。
型: ブール
必須: いいえ
AWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS CloudFormation 同等のプロパティはありません。
-
ApiKeySourceType -
使用量プランに沿ってリクエストを計測するための API キーのソース。有効な値は、
HEADERおよびAUTHORIZERです。タイプ:文字列
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::RestApiリソースのApiKeySourceTypeプロパティに直接渡されます。 -
Auth -
API Gateway API へのアクセスを制御するための認可を設定します。
を使用したアクセスの設定の詳細については、 AWS SAM 「」を参照してくださいAWS SAM テンプレートを使用して API アクセスを制御する。グローバルオーソライザーを上書きする方法の例については、「」を参照してくださいAmazon API Gateway REST API のグローバルオーソライザーをオーバーライドする。
タイプ: ApiAuth
必須: いいえ
AWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS CloudFormation 同等のものはありません。
-
BinaryMediaTypes -
API が返すことができる MIME タイプのリストです。これは、API のバイナリサポートを有効化するために使用します。
タイプ: リスト
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::RestApiリソースのBinaryMediaTypesプロパティに似ています。BinaryMediaTypes のリストが AWS CloudFormation リソースと OpenAPI ドキュメントの両方に追加されます。 -
CacheClusterEnabled -
ステージでキャッシュが有効化されているかどうかを示します。レスポンスをキャッシュするには、
MethodSettingsでCachingEnabledをtrueに設定することも必要です。型: ブール
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::StageリソースのCacheClusterEnabledプロパティに直接渡されます。 -
CacheClusterSize -
ステージのキャッシュクラスターサイズです。
タイプ:文字列
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::StageリソースのCacheClusterSizeプロパティに直接渡されます。 -
CanarySetting -
通常のデプロイの段階に Canary 設定を設定します。
タイプ: CanarySetting
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::StageリソースのCanarySettingプロパティに直接渡されます。 -
Cors -
すべての API Gateway API のクロスオリジンリソース共有 (CORS) を管理します。許可するドメインを文字列として指定するか、追加の CORS 設定でディクショナリを指定します。
注記
CORS では AWS SAM 、OpenAPI 定義を変更する必要があります。CORS を有効にするには、
DefinitionBodyの中でインライン OpenAPI 定義を作成します。CORS の詳細については、Amazon API Gateway デベロッパーガイドの「REST API リソースの CORS を有効にする」を参照してください。
タイプ: 文字列 | CorsConfiguration
必須: いいえ
AWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS CloudFormation 同等のものはありません。
-
DefinitionBody -
API を説明する OpenAPI 仕様です。
DefinitionUriとDefinitionBodyのどちらも指定されていない場合、SAM はテンプレート設定に基づいてDefinitionBodyを生成します。API を定義するローカルの OpenAPI ファイルを参照するには、
AWS::Include変換を使用してください。詳細についてはがローカルファイル AWS SAM をアップロードする方法を参照してください。Type: JSON
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::RestApiリソースのBodyプロパティに似ています。特定のプロパティが提供されている場合、コンテンツは、CloudFormation に渡される前に DefinitionBody に挿入または変更される可能性があります。プロパティにはAuth、BinaryMediaTypes、Cors、GatewayResponses、Models、および、対応するAWS::Serverless::Function向けのEventSourceタイプの API が含まれます。 -
DefinitionUri -
Amazon S3 URI、ローカルファイルパス、または API を定義する OpenAPI ドキュメントのロケーションオブジェクトです。このプロパティが参照する Amazon S3 オブジェクトは、有効な OpenAPI ファイルである必要があります。
DefinitionUriとDefinitionBodyのどちらも指定されていない場合、SAM はテンプレート設定に基づいてDefinitionBodyを生成します。ローカルファイルパスを指定する場合は、定義が適切に変換されるようにするために、テンプレートが
sam deployまたはsam packageコマンドを含むワークフローを実行する必要があります。組み込み関数は、
DefinitionUriで参照される外部 OpenApi ファイルではサポートされていません。その代わりに、Include Transform でDefinitionBodyプロパティを使用して、OpenApi 定義をテンプレートにインポートします。タイプ: 文字列 | ApiDefinition
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::RestApiリソースのBodyS3Locationプロパティに似ています。ネストされた Amazon S3 プロパティには異なる名前が付けられています。 -
Description -
API リソースの説明です。
タイプ:文字列
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::RestApiリソースのDescriptionプロパティに直接渡されます。 -
DisableExecuteApiEndpoint -
クライアントがデフォルトの
execute-apiエンドポイントを使用して API を呼び出すことができるかどうかを指定します。デフォルトでは、クライアントはデフォルトのhttps://{api_id}.execute-api.{region}.amazonaws.comを使用して API を呼び出すことができます。クライアントがカスタムドメイン名を使用して API を呼び出すように要求するには、Trueを指定します。型: ブール
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::RestApiリソースのDisableExecuteApiEndpointプロパティに似ています。これはx-amazon-apigateway-endpoint-configuration拡張機能のdisableExecuteApiEndpointプロパティに直接渡され、AWS::ApiGateway::RestApiリソースのBodyプロパティに追加されます。 -
Domain -
この API Gateway API のカスタムドメインを設定します。
タイプ: DomainConfiguration
必須: いいえ
AWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS CloudFormation 同等のものはありません。
-
EndpointConfiguration -
REST API のエンドポイントタイプです。
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::RestApiリソースのEndpointConfigurationプロパティに似ています。ネストされた設定プロパティには異なる名前が付けられています。 -
FailOnWarnings -
警告が発生したときに、API 作成をロールバックするか (
true)、しないか (false) を指定します。デフォルト値はfalseです。タイプ: ブール
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::RestApiリソースのFailOnWarningsプロパティに直接渡されます。 -
GatewayResponses -
API のゲートウェイレスポンスを設定します。ゲートウェイレスポンスは、直接、または Lambda オーソライザーを使用して返される API Gateway からのレスポンスです。詳細については、ゲートウェイレスポンス用の API Gateway OpenApi 拡張機能に関するドキュメントを参照してください。
タイプ: マップ
必須: いいえ
AWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS CloudFormation 同等のものはありません。
-
MergeDefinitions -
AWS SAM は API イベントソースから OpenAPI 仕様を生成します。を指定
trueして、これをAWS::Serverless::Apiリソースで定義されたインラインOpenAPI仕様に AWS SAM マージします。マージしない場合はfalseを指定します。MergeDefinitionsでは、AWS::Serverless::ApiのDefinitionBodyプロパティを定義する必要があります。MergeDefinitionsはAWS::Serverless::ApiのDefinitionUriプロパティと互換性がありません。デフォルト値:
false型: ブール
必須: いいえ
AWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS CloudFormation 同等のものはありません。
-
MethodSettings -
ロギング、メトリクス、CacheTTL、スロットリングなどの API ステージのすべての設定を行います。
タイプ: MethodSetting のリスト
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::StageリソースのMethodSettingsプロパティに直接渡されます。 -
MinimumCompressionSize -
クライアントの Accept-Encoding ヘッダーに基づくレスポンス本文の圧縮を許可します。圧縮は、レスポンス本文のサイズが設定したしきい値以上の場合にトリガーされます。本文サイズの最大しきい値は 10 MB (10,485,760 バイト) です。gzip、deflate、および identity の圧縮タイプがサポートされます。
タイプ: 整数
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::RestApiリソースのMinimumCompressionSizeプロパティに直接渡されます。 -
Mode -
このプロパティは、OpenAPI を使用して REST API を定義するときにのみ適用されます。
Modeは、API Gateway がリソース更新を処理する方法を決定します。詳細については、AWS::ApiGateway::RestApi リソースタイプのModeプロパティを参照してください。有効な値:
overwriteまたはmergeタイプ:文字列
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::RestApiリソースのModeプロパティに直接渡されます。 -
Models -
API メソッドで使用されるスキーマです。これらのスキーマは、JSON または YAML を使用して記述できます。サンプルモデルについては、このページの下部にある「例」セクションを参照してください。
タイプ: マップ
必須: いいえ
AWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS CloudFormation 同等のプロパティはありません。
-
Name -
API Gateway RestApi リソースの名前です。
タイプ:文字列
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::RestApiリソースのNameプロパティに直接渡されます。 -
OpenApiVersion -
使用する OpenApi のバージョンです。これは、Swagger 仕様の
2.0、または3.0.1のような OpenApi 3.0 バージョンの 1 つにすることができます。OpenAPI の詳細については、「OpenAPI Specification」を参照してください。 注記
AWS SAM は
Stageデフォルトで というステージを作成します。このプロパティに有効な値を設定すると、ステージStageが作成されなくなります。タイプ: 文字列
必須: いいえ
AWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS CloudFormation 同等のプロパティはありません。
-
AWS::Serverless::Api が生成したリソースに
Tagsプロパティからのタグを渡すかどうかを指定します。Trueを指定して、生成されたリソースにタグを伝播します。型: ブール
必須: いいえ
デフォルト:
FalseAWS CloudFormation 互換性: このプロパティは に固有 AWS SAM であり、 AWS CloudFormation 同等のものはありません。
Policy-
API のアクセス許可を含むポリシードキュメント。ポリシーの ARN を設定するには、区切り記号および
"execute-api:/"と"*"の値として、""と!Join組み込み関数を使用します。Type: JSON
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::RestApiリソースの Policy プロパティに直接渡されます。 -
StageName -
API Gateway が invoke Uniform Resource Identifier (URI) の最初のパスセグメントとして使用するステージの名前です。
ステージリソースを参照するには、
を使用します。AWS::Serverless::Api リソースの指定時に生成されるリソースの参照に関する詳細については、「AWS CloudFormationAWS::Serverless::Apiが指定されたときに生成される リソース」を参照してください。生成された AWS CloudFormation リソースの一般的な情報については、「」を参照してください用に生成された AWS CloudFormation リソース AWS SAM。<api-logical-id>.Stageタイプ: 文字列
必須: はい
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::StageリソースのStageNameプロパティに似ています。SAM では必須ですが、API Gateway では必須ではありません。その他の注意点: 暗黙的な API には「prod」という名前のステージがあります。
-
この API Gateway ステージに追加されるタグを指定するマップ (文字列対文字列) です。タグの有効なキーと値の詳細については、AWS CloudFormation ユーザーガイドのリソースタグを参照してください。
タイプ: マップ
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::StageリソースのTagsプロパティに似ています。SAM の Tags プロパティは、キーバリューペアで構成されています。CloudFormation では、タグオブジェクトのリストで構成されています。 -
TracingEnabled -
このステージに X-Ray を使用したアクティブトレーシングが有効化されているかどうかを示します。X-Ray の詳細については、API Gateway デベロッパーガイドの「X-Ray を使用した REST API へのユーザーリクエストのトレース」を参照してください。
型: ブール
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::StageリソースのTracingEnabledプロパティに直接渡されます。 -
Variables -
ステージ変数を定義するマップ (文字列対文字列) で、変数名はキー、変数値は値です。変数名に使用できるのは英数字のみです。値は次の正規表現に一致する必要があります:
[A-Za-z0-9._~:/?#&=,-]+。タイプ: マップ
必須: いいえ
AWS CloudFormation 互換性: このプロパティは、
AWS::ApiGateway::StageリソースのVariablesプロパティに直接渡されます。
戻り値
参照番号
このリソースの論理 ID が Ref 組み込み関数に提供されると、基盤となる API Gateway API の ID が返されます。
Ref 関数の使用方法の詳細については、AWS CloudFormation ユーザーガイドの「Ref」を参照してください。
Fn::GetAtt
Fn::GetAtt は、このタイプの指定された属性の値を返します。利用可能な属性とサンプル戻り値は以下のとおりです。
Fn::GetAtt の使用の詳細については、AWS CloudFormation ユーザーガイドの「Fn::GetAtt」を参照してください。
RootResourceId-
RestApiリソースのルートソース ID (a0bc123d4eなど) です。
例
SimpleApiExample
API エンドポイントを持つ Lambda 関数を含む Hello World AWS SAM テンプレートファイル。これは、動作中のサーバーレスアプリケーションの完全な AWS SAM テンプレートファイルです。
YAML
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: AWS SAM template with a simple API definition Resources: ApiGatewayApi: Type: AWS::Serverless::Api Properties: StageName: prod ApiFunction: # Adds a GET method at the root resource via an Api event Type: AWS::Serverless::Function Properties: Events: ApiEvent: Type: Api Properties: Path: / Method: get RestApiId: Ref: ApiGatewayApi Runtime: python3.10 Handler: index.handler InlineCode: | def handler(event, context): return {'body': 'Hello World!', 'statusCode': 200}
ApiCorsExample
Lambda 統合と CORS 設定とともに、外部 Swagger ファイルで定義された API を持つ AWS SAM テンプレートスニペット。これは、AWS::Serverless::Api定義を示す AWS SAM テンプレートファイルの一部にすぎません。
YAML
Resources: ApiGatewayApi: Type: AWS::Serverless::Api Properties: StageName: Prod # Allows www.example.com to call these APIs # SAM will automatically add AllowMethods with a list of methods for this API Cors: "'www.example.com'" DefinitionBody: # Pull in an OpenApi definition from S3 'Fn::Transform': Name: 'AWS::Include' # Replace "bucket" with your bucket name Parameters: Location: s3://bucket/swagger.yaml
ApiCognitoAuthExample
Amazon Cognito を使用して API に対するリクエストを承認する API を含む AWS SAM テンプレートスニペット。これは、AWS::Serverless::Api定義を示す AWS SAM テンプレートファイルの一部にすぎません。
YAML
Resources: ApiGatewayApi: Type: AWS::Serverless::Api Properties: StageName: Prod Cors: "'*'" Auth: DefaultAuthorizer: MyCognitoAuthorizer Authorizers: MyCognitoAuthorizer: UserPoolArn: Fn::GetAtt: [MyCognitoUserPool, Arn]
ApiModelsExample
Models スキーマを含む API を含む AWS SAM テンプレートスニペット。これは AWS SAM テンプレートファイルの一部にすぎず、2 つのモデルスキーマを持つAWS::Serverless::Api定義を示しています。
YAML
Resources: ApiGatewayApi: Type: AWS::Serverless::Api Properties: StageName: Prod Models: User: type: object required: - username - employee_id properties: username: type: string employee_id: type: integer department: type: string Item: type: object properties: count: type: integer category: type: string price: type: integer
キャッシュの例
API エンドポイントを持つ Lambda 関数を含む Hello World AWS SAM テンプレートファイル。API では、1 つのリソースとメソッドに対してキャッシュが有効になっています。キャッシュの詳細については、「API Gateway デベロッパーガイド」の「API キャッシュを有効にして応答性を強化する」を参照してください。
YAML
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: AWS SAM template with a simple API definition with caching turned on Resources: ApiGatewayApi: Type: AWS::Serverless::Api Properties: StageName: prod CacheClusterEnabled: true CacheClusterSize: '0.5' MethodSettings: - ResourcePath: / HttpMethod: GET CachingEnabled: true CacheTtlInSeconds: 300 Tags: CacheMethods: All ApiFunction: # Adds a GET method at the root resource via an Api event Type: AWS::Serverless::Function Properties: Events: ApiEvent: Type: Api Properties: Path: / Method: get RestApiId: Ref: ApiGatewayApi Runtime: python3.10 Handler: index.handler InlineCode: | def handler(event, context): return {'body': 'Hello World!', 'statusCode': 200}
プライベート API を使用したカスタムドメインの例
プライベートドメインにマッピングされた API エンドポイントを持つ Lambda 関数を含む Hello World AWS SAM テンプレートファイル。テンプレートは、VPC エンドポイントとプライベートドメインの間にドメインアクセスの関連付けを作成します。詳細については、「API Gateway のプライベート APIs」を参照してください。
YAML
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: AWS SAM template configured with a custom domain using a private API Parameters: DomainName: Type: String Default: mydomain.example.com CertificateArn: Type: String HostedZoneId: Type: String VpcEndpointId: Type: String VpcEndpointDomainName: Type: String VpcEndpointHostedZoneId: Type: String Resources: MyFunction: Type: AWS::Serverless::Function Properties: InlineCode: | def handler(event, context): return {'body': 'Hello World!', 'statusCode': 200} Handler: index.handler Runtime: python3.13 Events: Fetch: Type: Api Properties: RestApiId: Ref: MyApi Method: Get Path: /get MyApi: Type: AWS::Serverless::Api Properties: StageName: Prod EndpointConfiguration: Type: PRIVATE VPCEndpointIds: - !Ref VpcEndpointId Policy: Version: '2012-10-17 ' Statement: - Effect: Allow Principal: '*' Action: execute-api:Invoke Resource: execute-api:/* - Effect: Deny Principal: '*' Action: execute-api:Invoke Resource: execute-api:/* Condition: StringNotEquals: aws:SourceVpce: !Ref VpcEndpointId Domain: DomainName: !Ref DomainName CertificateArn: !Ref CertificateArn EndpointConfiguration: PRIVATE BasePath: - / Route53: HostedZoneId: !Ref HostedZoneId VpcEndpointDomainName: !Ref VpcEndpointDomainName VpcEndpointHostedZoneId: !Ref VpcEndpointHostedZoneId AccessAssociation: VpcEndpointId: !Ref VpcEndpointId Policy: Version: '2012-10-17 ' Statement: - Effect: Allow Principal: '*' Action: execute-api:Invoke Resource: execute-api:/* - Effect: Deny Principal: '*' Action: execute-api:Invoke Resource: execute-api:/* Condition: StringNotEquals: aws:SourceVpce: !Ref VpcEndpointId