Api-gateway integration response settings are removed after second terraform apply with same code

I’m trying to create REST API in AWS API Gateway with terraform.

To enable CORS, option methods and related integration settings are prepared in my tf code. It works well when I did “terraform plan” -> “terraform apply” for the first time. Checking from AWS management console, I found an option method was created as I wrote.

However, when I did “terraform plan” -> “terraform apply” second time without any change of API Gateway, Integration Response settings for Option method was removed even though the apply was completed.(“removed” means all Integration response disappears from management console).

Is this usual behaviors? Do I need additional settings to my terraform code?

My present code is following:

resource "aws_api_gateway_rest_api" "rest_api_test" {
  name = "rest_api_test"

  endpoint_configuration {
    types = ["REGIONAL"]
  }
}

resource "aws_api_gateway_deployment" "rest_api_test_deploy" {
  depends_on = [
    "aws_api_gateway_integration_response.integration_response",
    "aws_api_gateway_method.rest_api_test_method",
    "aws_api_gateway_integration.rest_api_test_integration",
  ]

  rest_api_id = "${aws_api_gateway_rest_api.rest_api_test.id}"
  stage_name  = "dev"
}

# resource
resource "aws_api_gateway_resource" "rest_api_test_resource" {
  rest_api_id = "${aws_api_gateway_rest_api.rest_api_test.id}"
  parent_id   = "${aws_api_gateway_rest_api.rest_api_test.root_resource_id}"
  path_part   = "rest_api_test_resource"
}

resource "aws_api_gateway_method" "rest_api_test_method" {
  rest_api_id   = "${aws_api_gateway_rest_api.rest_api_test.id}"
  resource_id   = "${aws_api_gateway_resource.rest_api_test_resource.id}"
  http_method   = "GET"
  authorization = "NONE"
}

resource "aws_api_gateway_integration" "rest_api_test_integration_request" {
  rest_api_id             = "${aws_api_gateway_rest_api.rest_api_test.id}"
  resource_id             = "${aws_api_gateway_resource.rest_api_test_resource.id}"
  http_method             = "${aws_api_gateway_method.rest_api_test_method.http_method}"
  integration_http_method = "POST"
  type                    = "AWS"
  uri                     = "arn:aws:apigateway:ap-northeast-1:lambda:path/2015-03-31/functions/${var.lambda_func_arn}/invocations"
}

resource "aws_api_gateway_method_response" "http_status_value" {
  rest_api_id = "${aws_api_gateway_rest_api.rest_api_test.id}"
  resource_id = "${aws_api_gateway_resource.rest_api_test_resource.id}"
  http_method = "${aws_api_gateway_method.rest_api_test_method.http_method}"
  status_code = "200"

  response_models = {
    "application/json" = "Empty"
  }

  response_parameters = {
    "method.response.header.Access-Control-Allow-Origin" = true
  }
}

resource "aws_api_gateway_integration_response" "integration_response" {
  rest_api_id = "${aws_api_gateway_rest_api.rest_api_test.id}"
  resource_id = "${aws_api_gateway_resource.rest_api_test_resource.id}"
  http_method = "${aws_api_gateway_method.rest_api_test_method.http_method}"
  status_code = "${aws_api_gateway_method_response.http_status_value.status_code}"

  response_templates = {
    "application/json" = "${file("../../module/apigw/src/json/response_template.json")}"
  }

  response_parameters = {
    "method.response.header.Access-Control-Allow-Origin" = "'*'"
  }
}

# cors
resource "aws_api_gateway_method" "rest_api_test_method_options" {
  rest_api_id      = "${aws_api_gateway_rest_api.rest_api_test.id}"
  resource_id      = "${aws_api_gateway_resource.rest_api_test_resource.id}"
  http_method      = "OPTIONS"
  authorization    = "NONE"
  api_key_required = false
}

resource "aws_api_gateway_method_response" "rest_api_test_method_response_options_200" {
  rest_api_id = "${aws_api_gateway_rest_api.rest_api_test.id}"
  resource_id = "${aws_api_gateway_resource.rest_api_test_resource.id}"
  http_method = "${aws_api_gateway_method.rest_api_test_method_options.http_method}"
  status_code = "200"

  response_models = {
    "application/json" = "Empty"
  }

  response_parameters = {
    "method.response.header.Access-Control-Allow-Headers" = true,
    "method.response.header.Access-Control-Allow-Methods" = true,
    "method.response.header.Access-Control-Allow-Origin"  = true
  }
  depends_on = ["aws_api_gateway_method.rest_api_test_method_options"]
}

resource "aws_api_gateway_integration" "rest_api_test_integration" {
  rest_api_id             = "${aws_api_gateway_rest_api.rest_api_test.id}"
  resource_id             = "${aws_api_gateway_resource.rest_api_test_resource.id}"
  http_method             = "${aws_api_gateway_method.rest_api_test_method_options.http_method}"
  integration_http_method = "OPTIONS"
  type                    = "MOCK"

  request_templates = {
    "application/json" = "${file("../../module/apigw/src/json/request_template.json")}"
  }
  depends_on = ["aws_api_gateway_method.rest_api_test_method_options"]
}

resource "aws_api_gateway_integration_response" "rest_api_test_integration_response_options_200" {
  depends_on = [
    "aws_api_gateway_integration.rest_api_test_integration",
    "aws_api_gateway_method_response.rest_api_test_method_response_options_200"
  ]
  rest_api_id       = "${aws_api_gateway_rest_api.rest_api_test.id}"
  resource_id       = "${aws_api_gateway_resource.rest_api_test_resource.id}"
  http_method       = "${aws_api_gateway_method.rest_api_test_method_options.http_method}"
  status_code       = "${aws_api_gateway_method_response.rest_api_test_method_response_options_200.status_code}"
  selection_pattern = ""

  response_templates = {
    "application/json" = ""
  }

  response_parameters = {
    "method.response.header.Access-Control-Allow-Headers" = "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'",
    "method.response.header.Access-Control-Allow-Methods" = "'GET,OPTIONS'",
    "method.response.header.Access-Control-Allow-Origin"  = "'*'"
  }
}

Any update on this, I seem to be having a similar situation happening for a MOCK method