13

AWS_API_GATEWAY_INTEGRATIONのTerraform ドキュメントでは、次のパラメータがサポートされています。

  • rest_api_id
  • resource_id
  • http_メソッド
  • タイプ
  • うり
  • integration_http_method

彼らはこの例を挙げています:

resource "aws_api_gateway_integration" "MyDemoIntegration" {
  rest_api_id = "${aws_api_gateway_rest_api.MyDemoAPI.id}"
  resource_id = "${aws_api_gateway_resource.MyDemoResource.id}"
  http_method = "${aws_api_gateway_method.MyDemoMethod.http_method}"
  type = "MOCK"
}

しかし、UI でできるように、マッピング テンプレート (および Lambda 統合) を指定したいと思います。

ここに画像の説明を入力

ただし、Terraform でそれを行う方法はありません。可能ですか?

注:私が現在行っているのはapply、構成の残りの部分 (ラムダ、s3、iam など) を作成し、後でマッピング テンプレートを手動で追加することです (ラムダの統合タイプも同様です)。

しかし、他の構成 (例: s3) を適用するたびにterraform apply、Terraform はマッピング テンプレートと統合タイプを元に戻します。

「元に戻す」計画は次のようになります。

~ aws_api_gateway_integration.post_hit_integration
    request_templates.#:                "1" => "0"
    request_templates.application/json: "{\n  \"body\" : $input.json('$'),\n  \"headers\": {\n    #foreach($param in $input.params().header.keySet())\n    \"$param\": \"$util.escapeJavaScript($input.params().header.get($param))\" #if($foreach.hasNext),#end\n    \n    #end  \n  },\n  \"stage\" : \"$context.stage\"\n}" => ""
    uri:                                "arn:aws:apigateway:eu-west-1:lambda:path/2015-03-31/functions/arn:aws:lambda:eu-west-1:000000000000:function:create_hit/invocations" => ""
4

4 に答える 4

3

Lambda 関数をエンドポイントとして使用している場合、統合タイプは「AWS」になります。

Lambda 統合の作成について説明している AWS のドキュメントは次のとおりです。

これは、Terraform を使用してこれを行う方法を示す GitHub 投稿です。

それが役立つことを願っています! ご不明な点がございましたら、お問い合わせください。

于 2016-03-29T17:23:33.393 に答える
1

同様の問題がありました。統合タイプが「AWS_PROXY」だったため、マッピング テンプレートを追加できませんでした。「AWS」に変更したところ、うまくいきました。

統合タイプが「AWS_PROXY」の場合、Terraform はマッピング テンプレートを考慮しません。

統合タイプの詳細については、こちらをご覧ください。

于 2019-06-12T04:09:54.953 に答える