x-amazon-apigateway-integration オブジェクト - Amazon API Gateway

x-amazon-apigateway-integration オブジェクト

このメソッドのために使用するバックエンド統合の詳細を指定します。この拡張は、OpenAPI Operation オブジェクトの拡張プロパティです。その結果、 API Gateway 統合オブジェクトが作成されます。

プロパティ
プロパティ名 タイプ 説明
cacheKeyParameters string の配列 値がキャッシュされるリクエストパラメーターのリスト。
cacheNamespace string キャッシュされた関連パラメーターの API 固有のタググループ。
connectionId string プライベート統合の VpcLink の ID。
connectionType string 統合の接続タイプ。有効な値は、プライベート統合の場合は "VPC_LINK"、それ以外の場合は "INTERNET" です。
credentials string

AWS IAM ロールベースの認証情報については、該当する IAM ロールの ARN を指定します。指定しない場合、認証情報はデフォルトでリソースベースのアクセス許可に設定されます。API がリソースにアクセスできるようにするためには、リソースベースのアクセス許可を手動で追加する必要があります。詳細については、「リソースポリシーを使用してアクセス許可を付与する」を参照してください。

注意: IAM 認証情報を使用するときは、この API が最適なパフォーマンスのためにデプロイされているリージョンで AWS STS リージョンのエンドポイントが有効化されていることを確認してください。

contentHandling string リクエストのペイロードエンコード変換タイプ。有効な値は、1) バイナリペイロードを Base64 でエンコードされた文字列に変換する場合、テキストペイロードを utf-8 でエンコードされた文字列に変換する場合、変更なしでテキストペイロードをネイティブに渡す場合の CONVERT_TO_TEXT と、2) テキストペイロードを Base64 でデコードされた BLOB に変換する場合、または変更なしでバイナリペイロードをネイティブに渡す場合の CONVERT_TO_BINARY です。
httpMethod string 統合リクエストで使用される HTTP メソッドです。Lambda 関数の呼び出しでは、値は POST である必要があります。
integrationSubtype string AWS のサービス統合の統合サブタイプを指定します。HTTP API に対してのみサポートされます。サポートされている統合サブタイプについては、「統合サブタイプのリファレンス」を参照してください。
passthroughBehavior string マッピングされていないコンテンツタイプのリクエストペイロードを、変更なしで統合リクエストに渡す方法を指定します。サポートされる値は when_no_templateswhen_no_matchnever です。詳細については、「Integration.passthroughBehavior」を参照してください。
payloadFormatVersion string 統合に送信されるペイロードの形式を指定します。HTTP API に必須です。HTTP API の場合、Lambda プロキシ統合でサポートされている値は 1.0 および 2.0 です。他のすべての統合では、1.0 が唯一サポートされている値です。詳細については、「HTTP API の AWS Lambda プロキシ統合の使用」と「統合サブタイプのリファレンス」を参照してください。
requestParameters x-amazon-apigateway-integration.requestParameters オブジェクト

REST API では、メソッドリクエストパラメータから統合リクエストパラメータへのマッピングを指定します。サポートされているリクエストパラメーターは、querystringpathheader、および body です。

HTTP API の場合、リクエストパラメータは、指定した AWS_PROXYintegrationSubtype の統合に渡すパラメータを指定するキーと値のマップです。静的値、マップリクエストデータ、ランタイムに評価されるステージ変数やコンテキスト変数のいずれかを指定できます。詳細については、「HTTP API の AWS のサービス統合の使用」を参照してください。

requestTemplates x-amazon-apigateway-integration.requestTemplates オブジェクト 指定された MIME タイプのリクエストペイロード用のマッピングテンプレートです。
responses x-amazon-apigateway-integration.responses オブジェクト メソッドのレスポンスを定義し、統合レスポンスからメソッドレスポンスまで必要なパラメーターマッピングまたはペイロードマッピングを指定します。
timeoutInMillis integer 統合タイムアウトは 50 ミリ秒~29,000 ミリ秒です。
type string

特定のバックエンドを持つ統合のタイプ。有効な値は次のとおりです。

  • http または http_proxy (HTTP バックエンドとの統合の場合)。

  • aws_proxy (AWS Lambda 関数との統合の場合)。

  • aws (AWS Lambda 関数または AWS のその他サービス (Amazon DynamoDB、Amazon Simple Notification Service、Amazon Simple Queue Service など) と統合する場合)。

  • mock (バックエンドを呼び出さずに API Gateway と統合する場合)。

統合タイプの詳細については、「integration:type」を参照してください。

tlsConfig x-amazon-apigateway-integration.tlsConfig オブジェクト 統合の TLS 設定を指定します。
uri string バックエンドのエンドポイント URI。aws タイプの統合の場合、この URI は ARN 値です。HTTP 統合の場合、この URI は、https または http スキームを含む HTTP エンドポイントの URL です。

x-amazon-apigateway-integration の例

HTTP API の場合、OpenAPI 定義のコンポーネントセクションで統合を定義できます。詳細については、「x-amazon-apigateway-integrations オブジェクト」を参照してください。

"x-amazon-apigateway-integration": { "$ref": "#/components/x-amazon-apigateway-integrations/integration1" }

次の例では、Lambda 関数との統合を作成します。デモンストレーションの目的で、以下の例の requestTemplates および responseTemplates のサンプルマッピングテンプレートは、{ "name":"value_1", "key":"value_2", "redirect": {"url" :"..."} } の JSON 出力または { "stage":"value_1", "user-id":"value_2" } の XML 出力を生成するために、<stage>value_1</stage> という JSON 形式のペイロードに適用されるものとします。

"x-amazon-apigateway-integration" : { "type" : "aws", "uri" : "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:012345678901:function:HelloWorld/invocations", "httpMethod" : "POST", "credentials" : "arn:aws:iam::012345678901:role/apigateway-invoke-lambda-exec-role", "requestTemplates" : { "application/json" : "#set ($root=$input.path('$')) { \"stage\": \"$root.name\", \"user-id\": \"$root.key\" }", "application/xml" : "#set ($root=$input.path('$')) <stage>$root.name</stage> " }, "requestParameters" : { "integration.request.path.stage" : "method.request.querystring.version", "integration.request.querystring.provider" : "method.request.querystring.vendor" }, "cacheNamespace" : "cache namespace", "cacheKeyParameters" : [], "responses" : { "2\\d{2}" : { "statusCode" : "200", "responseParameters" : { "method.response.header.requestId" : "integration.response.header.cid" }, "responseTemplates" : { "application/json" : "#set ($root=$input.path('$')) { \"stage\": \"$root.name\", \"user-id\": \"$root.key\" }", "application/xml" : "#set ($root=$input.path('$')) <stage>$root.name</stage> " } }, "302" : { "statusCode" : "302", "responseParameters" : { "method.response.header.Location" : "integration.response.body.redirect.url" } }, "default" : { "statusCode" : "400", "responseParameters" : { "method.response.header.test-method-response-header" : "'static value'" } } } }

マッピングテンプレートの JSON 文字列の二重引用符「"」は、エスケープ文字を付けて「\"」とする必要があります。