Mengonfigurasi API Anda untuk menggunakan kunci API. Hal ini diperlukan agar
Endpoints dapat mengidentifikasi project Google Cloud
yang terkait dengan aplikasi yang melakukan panggilan. Lihat
Membagikan API yang dilindungi oleh kunci API
untuk mengetahui informasi selengkapnya.
Menambahkan kuota ke file konfigurasi gRPC API Anda
Prosedur berikut menjelaskan cara menambahkan setelan yang diperlukan ke file konfigurasi gRPC API untuk menyiapkan kuota. Untuk mempermudah, halaman ini merujuk pada file konfigurasi gRPC API sebagai file api_config.yaml.
Anda menambahkan tiga bagian berikut ke file api_config.yaml:
metrics: Metrik bernama yang menghitung permintaan ke API Anda. Anda memberikan
nama yang menjelaskan penghitung. Nama tersebut bisa berupa kategori, seperti
read-requests atau write-requests. Atau, jika Anda menentukan
kuota untuk metode tertentu, Anda mungkin ingin menyertakan nama metode, misalnya,echo-api/echo_requests.
quota.limits: Merepresentasikan satu batas yang dapat diterapkan pada metrik bernama.
Di sinilah Anda mengonfigurasi jumlah permintaan yang diizinkan untuk metrik yang telah Anda tentukan. Saat ini, hanya batas per menit, per project yang didukung.
quota.metric_rules: metric_rule memetakan metode ke metrik (banyak-ke-banyak).
Permintaan ke suatu metode mengalokasikan penghitung untuk setiap metrik yang dipetakan.
Saat mengaitkan metode dengan metrik, Anda selalu menentukan biaya untuk permintaan. Anda dapat mengonfigurasi biaya setiap metode secara terpisah. Hal ini memungkinkan metode yang berbeda untuk menggunakan metrik bernama yang sama dengan kecepatan yang berbeda. Jika tidak memiliki persyaratan kuota yang kompleks, Anda dapat mengonfigurasi
biaya setiap metrik menjadi 1.
Untuk mengonfigurasi kuota di API Anda:
Buka file api_config.yaml project Anda di editor teks.
Tambahkan kolom metrics di tingkat teratas file (tidak diindentasi atau
bertumpuk), setelah kolom apis.`
Ganti YOUR_LIMIT_NAME dengan nama yang
mendeskripsikan batas.
Ganti YOUR_METRIC_NAME dengan metric.name yang ditentukan sebelumnya.
Kolom unit harus berupa "1/min/{project}". Ini adalah ID
untuk batas per menit per project.
Kolom values harus berisi STANDARD.
Ganti VALUE_FOR_THE_LIMIT dengan nilai bilangan bulat.
Ini adalah jumlah permintaan yang dapat dibuat oleh aplikasi yang terkait dengan
project Google Cloud konsumen dalam satu menit.
Secara opsional, tentukan metrik dan batas tambahan untuk setiap metrik.
Tambahkan baris metric_rules yang diindentasi di bawah quota, setelah bagian limits.
Dalam bagian metric_rules, kaitkan metrik yang telah ditentukan sebelumnya
dengan metode, sebagai berikut:
Ganti YOUR_METRIC_NAME dengan metric.name yang ditentukan sebelumnya.
Ganti YOUR_METRIC_COST dengan bilangan bulat. Untuk
setiap permintaan, penghitung permintaan untuk metrik akan bertambah sesuai
dengan jumlah yang Anda tentukan untuk biaya.
Untuk kolom selector, Anda dapat menentukan salah satu hal berikut:
Untuk mengaitkan semua metode di semua API dengan penggunaan metric_cost, gunakan
selector: "*"
Untuk mengaitkan semua metode dalam API dengan penggunaan metric_cost, gunakan
selector: YOUR_API_NAME.*
Untuk mengaitkan metode tertentu dalam API dengan metric_cost
gunakan selector: YOUR_API_NAME.YOUR_METHOD_NAME
Simpan file api_config.yaml.
Contoh konfigurasi kuota
Tiga contoh berikut menunjukkan cara mengonfigurasi kuota di API Anda.
Contoh berikut menunjukkan cara mengonfigurasi kolom metric:
Deploy file api_config.yaml ke Pengelolaan Layanan, yang memperbarui
konfigurasi di Endpoint. Untuk mengetahui langkah-langkah mendetail, lihat
Men-deploy konfigurasi Endpoints.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 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)."]]