Hai configurato l'API in modo che utilizzi una chiave API. Questo è necessario per
consentire a Endpoints di identificare il progetto Google Cloud
a cui è associata l'applicazione chiamante. Per ulteriori informazioni, consulta
Condivisione di API protette da chiave API.
Aggiunta di una quota al file di configurazione dell'API gRPC
La seguente procedura descrive l'aggiunta delle impostazioni richieste al file di configurazione dell'API gRPC per configurare le quote. Per semplicità, questa pagina fa riferimento al file di configurazione dell'API gRPC come file api_config.yaml.
Aggiungi le seguenti tre sezioni al file api_config.yaml:
metrics: una metrica denominata che conteggia le richieste alla tua API. Fornisci un nome che descriva il contatore. Il nome potrebbe essere una categoria, ad esempio
read-requests o write-requests. In alternativa, se stai definendo una quota per un metodo specifico, potresti includere il nome del metodo, ad esempio echo-api/echo_requests.
quota.limits: rappresenta un singolo limite applicabile a una metrica denominata.
Qui puoi configurare il numero consentito di richieste per una metrica che hai definito. Al momento sono supportati solo i limiti al minuto e per progetto.
quota.metric_rules: un metodo di mappatura metric_rule alle metriche (molti a molti).
Una richiesta a un metodo alloca un contatore per ciascuna delle metriche mappate.
Quando associ un metodo a una metrica, devi sempre specificare un costo per la
richiesta. Puoi configurare il costo di ogni metodo in modo indipendente. Ciò
consente di utilizzare metodi diversi per il consumo a tariffe diverse dalla stessa metrica
denominata. Se non hai un requisito di quota complesso, puoi configurare il costo di ogni metrica su 1.
Per configurare le quote nell'API:
Apri il file api_config.yaml del progetto in un editor di testo.
Aggiungi il campo metrics al livello superiore del file (non rientrato o
nidificato), dopo il campo apis.`
Sostituisci YOUR_LIMIT_NAME con un nome che
descriva il limite.
Sostituisci YOUR_METRIC_NAME con un metric.name
definito in precedenza.
Il campo unit deve essere "1/min/{project}". Questo è l'identificatore
per il limite al minuto per progetto.
Il campo values deve contenere STANDARD.
Sostituisci VALUE_FOR_THE_LIMIT con un valore intero.
Numero di richieste che un'applicazione associata a un progetto Google Cloud di un consumer può effettuare in un minuto.
Facoltativamente, definisci metriche e limiti aggiuntivi per ogni metrica.
Aggiungi una riga metric_rules rientrata sotto quota, dopo la sezione limits.
Nella sezione metric_rules, associa una metrica definita in precedenza
a un metodo, nel seguente modo:
Sostituisci YOUR_METRIC_NAME con un metric.name
definito in precedenza.
Sostituisci YOUR_METRIC_COST con un numero intero. Per
ogni richiesta, il contatore delle richieste per la metrica viene incrementato del
numero specificato per il costo.
Per il campo selector, puoi specificare una delle seguenti opzioni:
Per associare tutti i metodi in tutte le API all'utilizzo di metric_cost, utilizza
selector: "*"
Per associare tutti i metodi all'interno di un'API all'utilizzo di metric_cost, utilizza
selector: YOUR_API_NAME.*
Per associare un metodo specifico all'interno di un'API a metric_cost
utilizza selector: YOUR_API_NAME.YOUR_METHOD_NAME
Salva il file api_config.yaml.
Esempi di configurazione delle quote
I tre esempi seguenti mostrano come configurare le quote per l'API.
Il seguente esempio mostra come configurare il campo metric:
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-09-11 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)."]]