После проверки, я думаю, до сих пор terraform не поддерживает эту функцию.
Однако есть обходной путь с помощью aws cli commend.
Ссылка на эту ссылку:
https://github.com/terraform-providers/terraform-provider-aws/issues/5901
Я процитировал работу здесь
variable "method_throttling" {
type = "list"
description = "example method throttling"
default = [
"\\\"/<RESOURCE1>/<METHOD1>\\\":{\\\"rateLimit\\\":400,\\\"burstLimit\\\":150}",
"\\\"/<RESOURCE2>/<METHOD2>\\\":{\\\"rateLimit\\\":1000,\\\"burstLimit\\\":303}"
]
}
# locals
locals {
# Delimiter for later usage
delimiter = "'"
# Base aws cli command
base_command = "aws apigateway update-usage-plan --usage-plan-id ${aws_api_gateway_usage_plan.usage_plan.id} --patch-operations op"
# Later aws cli command
base_path = "path=/apiStages/${var.api_gateway_rest_api_id}:${var.api_gateway_stage_name}/throttle,value"
# Join method throttling variable to string
methods_string = "${local.delimiter}\"{${join(",", var.method_throttling)}}\"${local.delimiter}"
}
resource "null_resource" "method_throttling" {
count = "${length(var.method_throttling) != 0 ? 1 : 0}"
# create method throttling
provisioner "local-exec" {
when = "create"
command = "${local.base_command}=add,${local.base_path}=${local.methods_string}"
on_failure = "continue"
}
# edit method throttling
provisioner "local-exec" {
command = "${local.base_command}=replace,${local.base_path}=${local.methods_string}"
on_failure = "fail"
}
# delete method throttling
provisioner "local-exec" {
when = "destroy"
command = "${local.base_command}=remove,${local.base_path}="
on_failure = "fail"
}
triggers = {
usage_plan_change = "${aws_api_gateway_usage_plan.usage_plan.id}"
methods_change = "${local.methods_string}"
}
depends_on = [
"aws_api_gateway_usage_plan.usage_plan"
]
}