API 키를 사용하도록 API 구성. 이 작업은 Endpoints가 호출 애플리케이션과 연결된 Google Cloud 프로젝트를 식별하기 위해 필요합니다. 자세한 내용은 API 키로 보호되는 API 공유를 참조하세요.
gRPC API 구성 파일에 할당량 추가
다음 절차에서는 할당량 설정을 위해 gRPC API 구성 파일에 필요한 설정을 추가하는 방법을 설명합니다. 이 페이지에서는 gRPC API 구성 파일을 간단히 api_config.yaml 파일로 지칭하겠습니다.
다음 3개 섹션을 api_config.yaml 파일에 추가합니다.
metrics: API 요청 수를 계산하는 명명된 측정항목입니다. 카운터를 설명하는 이름을 지정하세요. 이름은 read-requests 또는 write-requests와 같은 카테고리일 수 있습니다. 또는 특정 메서드에 대한 할당량을 정의할 경우 메서드 이름을 포함할 수 있습니다(예: echo-api/echo_requests).
quota.limits: 명명된 측정항목에 적용 가능한 단일 한도를 나타냅니다.
여기에서는 정의한 측정항목의 허용 요청 수를 구성합니다. 현재는 분당, 프로젝트당 한도만 지원됩니다.
quota.metric_rules: metric_rule는 메서드를 측정항목에 매핑합니다(다대다).
메서드 요청은 매핑된 측정항목마다 카운터를 할당합니다.
메서드를 측정항목과 연결할 때는 항상 요청에 대한 비용을 지정합니다. 각 메서드 비용을 독립적으로 구성할 수 있습니다. 이를 통해 동일 측정항목에서 메서드별로 서로 다른 속도가 사용될 수 있습니다. 할당량을 복잡하게 구성할 필요가 없는 경우에는 모든 측정항목 비용을 1로 구성할 수 있습니다.
API에서 할당량을 구성하려면 다음 안내를 따르세요.
텍스트 편집기에서 프로젝트의 api_config.yaml 파일을 엽니다.
파일의 최상위 수준에서 apis 필드 아래에 metrics 필드를 추가합니다(들여쓰거나 중첩하지 않음).
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["이해하기 어려움","hardToUnderstand","thumb-down"],["잘못된 정보 또는 샘플 코드","incorrectInformationOrSampleCode","thumb-down"],["필요한 정보/샘플이 없음","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-09-04(UTC)"],[[["\u003cp\u003eThis guide details the process of configuring quotas for a gRPC API, involving modifications to the \u003ccode\u003eapi_config.yaml\u003c/code\u003e file and deployment of both the API configuration and the Extensible Service Proxy (ESP).\u003c/p\u003e\n"],["\u003cp\u003eQuotas are defined by adding \u003ccode\u003emetrics\u003c/code\u003e, \u003ccode\u003equota.limits\u003c/code\u003e, and \u003ccode\u003equota.metric_rules\u003c/code\u003e to the \u003ccode\u003eapi_config.yaml\u003c/code\u003e file, where \u003ccode\u003emetrics\u003c/code\u003e defines named counters, \u003ccode\u003equota.limits\u003c/code\u003e sets per-minute, per-project limits, and \u003ccode\u003equota.metric_rules\u003c/code\u003e associates methods with metrics and assigns costs.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003emetrics\u003c/code\u003e section requires a name, display name, \u003ccode\u003eINT64\u003c/code\u003e value type, and \u003ccode\u003eDELTA\u003c/code\u003e metric kind for the request counter.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003equota.limits\u003c/code\u003e section defines the allowed number of requests per minute per project, using the unit \u003ccode\u003e"1/min/{project}"\u003c/code\u003e and a \u003ccode\u003eSTANDARD\u003c/code\u003e value for the limit.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003equota.metric_rules\u003c/code\u003e section links methods to metrics, allowing for different costs per method, and uses selectors to apply metric costs to specific methods or all methods.\u003c/p\u003e\n"]]],[],null,["# Configuring quotas\n\n[OpenAPI](/endpoints/docs/openapi/quotas-configure \"View this page for the Cloud Endpoints OpenAPI docs\") \\| gRPC\n\n\u003cbr /\u003e\n\n|\n| **Beta**\n|\n|\n| This feature is subject to the \"Pre-GA Offerings Terms\" in the General Service Terms section\n| of the [Service Specific Terms](/terms/service-terms#1).\n|\n| Pre-GA features are available \"as is\" and might have limited support.\n|\n| For more information, see the\n| [launch stage descriptions](/products#product-launch-stages).\n\nThis page describes how to configure quotas for your API. At a high level, the\nsteps are:\n\n1. Add the information about the quota to your gRPC API configuration file.\n2. Deploy your gRPC API configuration file.\n3. Deploy the Extensible Service Proxy (ESP).\n\nFor an overview of the functionality provided by quotas, see\n[About quotas](/endpoints/docs/grpc/quotas-overview).\n\nPrerequisites\n-------------\n\nAs a starting point, this page assumes that you have:\n\n- [Configured Cloud Endpoints](/endpoints/docs/grpc/configure-endpoints).\n- [Deployed the Endpoints configuration](/endpoints/docs/grpc/deploy-endpoints-config).\n- [Deployed the API backend](/endpoints/docs/grpc/deploy-api-backend).\n- Configured your API to use an API key. This is needed for Endpoints to identify the Google Cloud project that the calling application is associated with. See [Sharing APIs protected by API key](/endpoints/docs/grpc/restricting-api-access-with-api-keys#sharing_apis_protected_by_api_key) for more information.\n\nAdding a quota to your gRPC API configuration file\n--------------------------------------------------\n\nThe following procedure describes adding the required settings to your gRPC API\nconfiguration file to set up quotas. For simplicity, this page refers to the\ngRPC API configuration file as the `api_config.yaml` file.\n\nYou add the following three sections to the `api_config.yaml` file:\n\n- `metrics`: A named metric that counts requests to your API. You provide a\n name that describes the counter. The name could be a category, such as\n `read-requests` or `write-requests`. Alternatively, if you are defining a\n quota for a specific method, you might want to include the method name, for\n example,`echo-api/echo_requests`.\n\n- `quota.limits`: Represents a single enforceable limit on a named metric.\n This is where you configure the allowed number of requests for a metric that\n you have defined. Currently, only per-minute, per-project limits are\n supported.\n\n- `quota.metric_rules`: A `metric_rule` maps methods to metrics (many-to-many).\n A request to a method allocates a counter for each of the mapped metrics.\n When you associate a method with a metric, you always specify a cost for the\n request. You can configure the cost of each method independently. This\n allows different methods to consume at different rates from the same named\n metric. If you don't have a complex quota requirement, you can configure the\n cost of every metric to 1.\n\nTo configure quotas on your API:\n\n1. Open your project's `api_config.yaml` file in a text editor.\n2. Add the `metrics` field at the top level of the file (not indented or\n nested), after the `apis` field.\\`\n\n ```\n metrics:\n - name: \"YOUR_METRIC_NAME\"\n display_name: \"YOUR_METRIC_DISPLAY_NAME\"\n value_type: INT64\n metric_kind: DELTA`\n ```\n - Replace \u003cvar translate=\"no\"\u003eYOUR_METRIC_NAME\u003c/var\u003e with a name that describes the API requests counter.\n - Replace \u003cvar translate=\"no\"\u003eYOUR_METRIC_DISPLAY_NAME\u003c/var\u003e with the text that is displayed on the **Endpoints** \\\u003e **Services** \\\u003e **Quotas** page to identify the metric.\n - The `value_type` field must be `INT64`.\n - The `metric_kind` field must be `DELTA`.\n3. Add a `quota` field at the same level as `metrics`, and add a `limits` field\n nested within the `quota` section.\n\n ```\n quota:\n limits:\n - name: \"YOUR_LIMIT_NAME\"\n metric: \"YOUR_METRIC_NAME\"\n unit: \"1/min/{project}\"\n values:\n STANDARD: VALUE_FOR_THE_LIMIT\n ```\n - Replace \u003cvar translate=\"no\"\u003eYOUR_LIMIT_NAME\u003c/var\u003e with a name that describes the limit.\n - Replace \u003cvar translate=\"no\"\u003eYOUR_METRIC_NAME\u003c/var\u003e with a previously defined `metric.name`.\n - The `unit` field must be `\"1/min/{project}\"`. This is the identifier for the per-minute per-project limit.\n - The `values` field must contain `STANDARD`.\n - Replace \u003cvar translate=\"no\"\u003eVALUE_FOR_THE_LIMIT\u003c/var\u003e with an integer value. This is the number of requests that an application associated with a consumer's Google Cloud project can make in a minute.\n4. Optionally, define additional metrics and limits for each metric.\n\n5. Add a `metric_rules` line indented under `quota`, after the `limits` section.\n Within the `metric_rules` section, associate a previously defined metric\n with a method, as follows:\n\n ```\n metric_rules:\n - metric_costs:\n YOUR_METRIC_NAME: YOUR_METRIC_COST\n selector: [METHODS]\n ```\n - Replace \u003cvar translate=\"no\"\u003eYOUR_METRIC_NAME\u003c/var\u003e with a previously defined `metric.name`.\n - Replace \u003cvar translate=\"no\"\u003eYOUR_METRIC_COST\u003c/var\u003e with an integer. For each request, the request counter for the metric is incremented by the number you specify for the cost.\n - For the `selector` field, you can specify one of the following:\n\n - To associate all methods in all APIs with the `metric_cost` use `selector: \"*\"`\n - To associate all methods within an API with the `metric_cost` use `selector: `\u003cvar translate=\"no\"\u003eYOUR_API_NAME\u003c/var\u003e`.*`\n - To associate a specific method within an API with the `metric_cost` use `selector: `\u003cvar translate=\"no\"\u003eYOUR_API_NAME\u003c/var\u003e`.`\u003cvar translate=\"no\"\u003eYOUR_METHOD_NAME\u003c/var\u003e\n6. Save the `api_config.yaml` file.\n\n### Quota configuration examples\n\nThe following three examples show how to configure quotas on your API.\n\nThe following example shows how configure the `metric` field: \n\n```carbon\nmetrics:\n # Define a metric for read requests.\n - name: \"read-requests\"\n display_name: \"Read requests\"\n value_type: INT64\n metric_kind: DELTA`\n```\n\nThe following example shows how to configure the `quota` and `limits` fields\nwithin the `quota` section: \n\n```carbon\nmetrics:\n # Define a metric for read requests.\n - name: \"read-requests\"\n display_name: \"Read requests\"\n value_type: INT64\n metric_kind: DELTA\nquota:\n limits:\n # Define the limit or the read-requests metric.\n - name: \"read-limit\"\n metric: \"read-requests\"\n unit: \"1/min/{project}\"\n values:\n STANDARD: 1000\n```\n\nThe following example shows how to configure the `metrics` line after the\n`limits` section: \n\n metrics:\n # Define a metric for read requests.\n - name: \"read-requests\"\n display_name: \"Read requests\"\n value_type: INT64\n metric_kind: DELTA\n quota:\n limits:\n # Define the limit or the read-requests metric.\n - name: \"read-limit\"\n metric: \"read-requests\"\n unit: \"1/min/{project}\"\n values:\n STANDARD: 1000\n metric_rules:\n - metric_costs:\n \"read-requests\": 1\n selector: *\n\nDeploying the `api_config.yaml` file and the ESP\n------------------------------------------------\n\nFor the quota to take effect, you must:\n\n1. Deploy the `api_config.yaml` file to Service Management, which updates the configuration in Endpoints. For detailed steps, see [Deploying the Endpoints configuration](/endpoints/docs/grpc/deploy-endpoints-config).\n2. Deploy the ESP. For detailed steps, see [Deploying the API backend](/endpoints/docs/grpc/deploy-api-backend)."]]