You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/azure-resource-manager/management/request-limits-and-throttling.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -113,7 +113,7 @@ Microsoft Compute implements throttling to provide an optimal experience for Vir
113
113
114
114
[Azure Resource Graph](../../governance/resource-graph/overview.md) limits the number of requests to its operations. The steps in this article to determine the remaining requests and how to respond when the limit is reached also apply to Resource Graph. However, Resource Graph sets its own limit and reset rate. For more information, see [Resource Graph throttling headers](../../governance/resource-graph/concepts/guidance-for-throttled-requests.md#understand-throttling-headers).
115
115
116
-
Azure Resource Graph also has a solution that enables an additional mechanism for getting resource data when you have reached resource provider throttling limits by seamlessly integrating with existing Azure Resource Manager control plane GET and LIST APIs—offering a powerful, scalable solution for resource data access. For more information, see [ARG GET/LIST API](./arg-get-list-api.md).
116
+
Azure Resource Graph also has a solution that enables an additional mechanism for getting resource data when you have reached resource provider throttling limits by seamlessly integrating with existing Azure Resource Manager control plane GET and LIST APIs—offering a powerful, scalable solution for resource data access. For more information, see [ARG GET/LIST API](../../governance/resource-graph/concepts/arg-get-list-api.md)
Copy file name to clipboardExpand all lines: articles/governance/resource-graph/concepts/arg-get-list-api.md
+24-24Lines changed: 24 additions & 24 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,26 +8,26 @@ ms.custom: devx-track-csharp
8
8
9
9
# Azure Resource Graph (ARG) GET/LIST API
10
10
11
-
ARG GET/LIST API significantly reduces READ throttling by serving all incoming GET and LIST calls against ARG platform with smart routing controls in control plane. The API aligns with the existing request and response contracts of Azure control plane APIs while addressing throttling issues for customers.
11
+
The ARG GET/LIST API significantly reduces READ throttling by serving all incoming GET and LIST calls against ARG platform with smart routing controls in control plane. The API aligns with the existing request and response contracts of Azure control plane APIs while addressing throttling issues for customers.
12
12
13
-
ARG GET/LIST provides a default quota of 4k /min /user /subscription on a moving window. This is not a hard limit; we can support more than this based on scenario requirement. The API provides a response header “x-ms-user-quota-remaining" indicating remaining quota and "x-ms-user-quota-resets-after" indicating the time for a full quota reset based on which you can understand your quota consumption.
13
+
ARG GET/LIST provides a default quota of 4k /min /user /subscription on a moving window. This range isn't a hard limit; we can support more than this based on scenario requirement. The API provides a response header “x-ms-user-quota-remaining" indicating remaining quota and "x-ms-user-quota-resets-after" indicating the time for a full quota reset based on which you can understand your quota consumption.
14
14
15
15
> [!NOTE]
16
-
> Please keep in mind that the Azure Resource Manager (ARM) quota applies to these calls. Read about the ARM limits here : Understand how Azure Resource Manager throttles requests - Azure Resource Manager | Microsoft Learn. Refer to section "Migrating to regionalthrottlingandtokenbucketalgorithm" , these are the new limits which ARM follows for Azure Public cloud.
16
+
> Keep in mind that the Azure Resource Manager (ARM) quota applies to these calls. Read about the [Azure Resource Manager limits](../../../azure-resource-manager/management/request-limits-and-throttling.md#migrating-to-regional-throttling-and-token-bucket-algorithm), which are the new limits that ARM follows for Azure Public cloud.
17
17
18
18
## Using the ARG GET/LIST API
19
19
20
-
Using the ARG GET/LIST API is very straightforward. If you feel your scenario matches the conditions mentioned [here](./guidance-for-throttled-requests.md#arg-getlist-api), you can simply append the flag `&useResourceGraph=true` to your control plane API calls, and the request will be routed to the ARG GET/LIST API backend.
20
+
To use the ARG GET/LIST API identify whether or not your scenario matches the conditions mentioned [here](./guidance-for-throttled-requests.md#arg-getlist-api), you can append the flag `&useResourceGraph=true` to your control plane API calls, and the request is routed to the ARG GET/LIST API backend.
21
21
22
-
Contact the ARG product group by sending an email to Azure Resource Graph team sharing a brief overview of your scenario and the ARG team will reach out to you with next steps. Callers must also design appropriate retry logic and implement fallback mechanisms to ensure smooth and reliable experience. This opt-in model has been deliberately chosen to allow the Azure Resource Graph team to better understand customer usage patterns and make improvements as needed.
22
+
Contact the ARG product group by sending an email to Azure Resource Graph team sharing a brief overview of your scenario and the ARG team will reach out to you with next steps. Callers must also design appropriate retry logic and implement fallback mechanisms to ensure smooth and reliable experience. This opt-in model was deliberately chosen to allow the Azure Resource Graph team to better understand customer usage patterns and make improvements as needed.
23
23
24
24
Refer to some known limitations [here](#known-limitations) and [frequently asked questions](#frequently-asked-questions).
25
25
26
26
## ARG GET/LIST API Contract
27
27
28
28
### Resource Point Get
29
29
30
-
This request is used for looking up a single resource by providing resource Id.
30
+
This request is used for looking up a single resource by providing resource D.
31
31
32
32
**Traditional Point Get Request:**
33
33
@@ -63,7 +63,7 @@ GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups
63
63
64
64
## Some frequently used examples
65
65
66
-
### Scenario: Get VM with InstanceView
66
+
### Scenario: Get virtual machine (VM) with InstanceView
67
67
68
68
For this specific example, use the following requests to get a virtual machine with InstanceView.
69
69
@@ -162,23 +162,23 @@ HTTP GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGro
162
162
163
163
## Known Limitations
164
164
165
-
1.**VMSS VM Health status**is not supported by default. If you have a requirement for that, do let us know by emailing Azure Resource Graph team.
166
-
2.**Supported Resources** - The ARG GET/LIST API supports resources part of ‘resources’ and ‘computeresources’ table. If you have a requirement for a specific resource type outside of these tables do let us know by emailing Azure Resource Graph team.
167
-
3.**Single API Version Support** - ARG GET/LIST today only supports a single API version for each resource type. This is generally the latest non-preview version of the type that exists in the Azure REST API spec. The `api-version` parameter in the request URL is ignored by ARG GET/LIST today. ARG GET/LIST returns `apiVersion` field in resource payloads in responses; this is the version that ARG GET/LIST indexed the resource in. Callers can leverage this field to understand the apiVersion to use, if its relevant for their scenario.
168
-
4.**Client Support** - Azure REST API: Supported | Azure SDK: Supported [sample .NET code shared below](#sample-sdk-code)| PowerShell: Currently not supported | Azure CLI: Currently not supported | Azure Portal: Currently not supported
165
+
1.**VMSS VM Health status**isn't supported by default. If you have a requirement, do let us know by emailing the Azure Resource Graph team.
166
+
2.**Supported Resources** - The ARG GET/LIST API supports resources part of ‘resources’ and ‘computeresources’ table. If you have a requirement for a specific resource type outside of these tables, do let us know by emailing team.
167
+
3.**Single API Version Support** - ARG GET/LIST today only supports a single API version for each resource type, which is generally the latest non-preview version of the type that exists in the Azure REST API spec. The `api-version` parameter in the request URL is ignored by the ARG GET/LIST today. ARG GET/LIST returns `apiVersion` field in resource payloads in responses; this is the version that ARG GET/LIST indexed the resource in. Callers can apply this field to understand the apiVersion to use, if its relevant for their scenario.
168
+
4.**Client Support** - Azure REST API: Supported | Azure SDK: Supported [sample .NET code](#sample-sdk-code)| PowerShell: Currently not supported | Azure CLI: Currently not supported | Azure portal: Currently not supported
169
169
5.**Client Deserialization Concerns**
170
170
- If a client uses REST API to issue GET calls, there should generally be no concerns regarding deserialization due to API version differences.
171
-
- If a client uses Azure SDK to issue GET calls, due to relaxed deserialization setting across all languages, the deserialization issue should not be a concern, unless there are contract breaking changes among different versions for the target resource type.
171
+
- If a client uses Azure SDK to issue GET calls, due to relaxed deserialization setting across all languages, the deserialization issue shouldn't be a concern, unless there are contract breaking changes among different versions for the target resource type.
172
172
6.**Unprocessable Resource Request**
173
-
- There are rare scenarios where ARG GET/LIST is not able to index a resource correctly, other than the existence of the resource. To not sacrifice data quality, ARG GET/LIST will refuse serving GET calls for these resources and return an error code of HTTP 422.
174
-
- Clients of ARG GET/LIST should treat HTTP 422 as a permanent error. Clients should retry by falling back to RP (by removing useResourceGraph=true flag). Since the error is applicable specifically to ARG GET/LIST, fallback to RPs should result in an E2E success.
173
+
- There are rare scenarios where ARG GET/LIST isn't able to index a resource correctly, other than the existence of the resource. To not sacrifice data quality, ARG GET/LIST refuses serving GET calls for these resources and return an error code of HTTP 422.
174
+
- Clients of ARG GET/LIST should treat HTTP 422 as a permanent error. Clients should retry by falling back to the resource provider (by removing useResourceGraph=true flag). Since the error is applicable specifically to ARG GET/LIST, fallback to resource providers should result in an E2E success.
175
175
7.**Consistency**
176
176
- As an index of Azure resources, ARG GET/LIST ingests the latest updates within seconds. ARG GET/LIST therefore provides a strict bounded staleness consistency level for all resources. This differs from the strong consistency model of Resource Providers.
177
177
- In resource Point Get responses, ARG GET/LIST provides a response header x-ms-arg-snapshot-timestamp that indicates the timestamp when the returned resource snapshot was indexed. The value of the header is UTC time in ISO8601 format. (An example, "x-ms-arg-snapshot-timestamp" : "2023-01-20T18:55:59.5610084Z").
178
178
179
179
### Sample SDK code
180
180
181
-
The following is a .NET Code sample to call ARG GET/LIST API by creating an ARMClient with policy that adds the flag `useResourceGraph=true` to each call:
181
+
The following example is a .NET Code sample to call ARG GET/LIST API by creating an ARMClient with policy that adds the flag `useResourceGraph=true` to each call:
182
182
183
183
First, We create custom ArmClientOption with policy that adds the `useResourceGraph=True` flag per call:
184
184
@@ -222,34 +222,34 @@ internal class ARG GET/LISTHttpPipelinePolicy : HttpPipelineSynchronousPolicy
222
222
223
223
## Frequently asked questions
224
224
225
-
1. How do you ensure the response is returned by ARG GET/LIST API?
225
+
1. How do you ensure the response is returned by the ARG GET/LIST API?
226
226
227
-
There are a few ways that you can identify when a request is served by ARG GET/LIST:
227
+
There are a few ways that you can identify when a request the ARG GET/LIST:
228
228
- In the response body, the `apiVersion` field of resources will be populated, if served by ARG GET/LIST.
229
-
- ARG GET/LIST/ARG returns some additional response headers, some of which are:
229
+
- ARG GET/LIST/ARG returns some more response headers, some of which are:
230
230
- x-ms-arg-snapshot
231
231
- x-ms-user-quota-remaining
232
232
- x-ms-user-quota-resets-after
233
233
- x-ms-resource-graph-request-duration
234
234
235
235
2. How do you know which API version was used by ARG GET/LIST?
236
236
237
-
This is returned in “apiVersion” field in resource response today.
237
+
This value is returned in “apiVersion” field in resource response today.
238
238
239
239
3. What happens if a caller calls ARG GET/LIST API with `useResourceGraph=true` flag for a resource not supported by ARG GET/LIST?
240
240
241
-
Any unsupported/unroutable requests will result in `useResourceGraph=true` ignored and the call will be automatically routed to be Resource Provider. User does not have to take any action.
241
+
Any unsupported/unroutable requests result in `useResourceGraph=true` ignored and the call is automatically routed to the resource provider. The user doesn't have to take any action.
242
242
243
243
4. What permissions are required for querying ARG GET/LIST APIs?
244
244
245
-
No special permissions are required for ARG GET/LIST APIs; ARG GET/LIST APIs are equivalent to native Resource provider based GET APIs and therefore, standard RBAC applies. Callers need to have at least READ permissions to resources/scopes they are trying to access.
245
+
No special permissions are required for ARG GET/LIST APIs; ARG GET/LIST APIs are equivalent to native Resource provider based GET APIs and therefore, standard RBAC applies. Callers need to have at least READ permissions to resources/scopes they're trying to access.
246
246
247
247
5. What is the rollback strategy, if we find issues while using ARG GET/LIST APIs?
248
248
249
-
If onboarded through the flag `useResourceGraph=true`, the caller may choose to remove the flag (or) `useResourceGraph=false` and the call will be automatically routed to be Resource Provider.
249
+
If onboarded through the flag `useResourceGraph=true`, the caller may choose to remove the flag (or) set the value to `useResourceGraph=false`, and the call is automatically routed to be Resource Provider.
250
250
251
251
6. What if you're getting a 404 Not Found when trying to get a resource from ARG GET/LIST that was recently created?
252
252
253
-
This is a common scenario with a lot of services where customers create resources and immediately issue a GET in 1-2 secs as part of another WRITE workflow. For example - customers create a new resource and right after trying to create a metric alert that monitors it. The resource might not have been indexed by ARG GET/LIST yet. There are 2 ways to work around this:
253
+
This is a common scenario with many services where customers create resources and immediately issue a GET in 1-2 seconds part of another WRITE workflow. For example, customers create a new resource and right after trying to create a metric alert that monitors it. The resource might not have been indexed by ARG GET/LIST yet. There are two ways to work around this situation:
254
254
- Retry on ARG GET/LIST a few times until it returns status code 200.
255
-
- Retry without ARG GET/LIST flag to fall back on the RP. True 404s will not hit the RP since ARM will return the error directly, whereas a false 404 should be served by RPs to get actual data.
255
+
- Retry without ARG GET/LIST flag to fall back on the resource provider. True 404 seconds doesn't hit the RP since ARM returns the error directly, whereas a false 404 should be served by the resource providers to get actual data.
Copy file name to clipboardExpand all lines: articles/governance/resource-graph/concepts/guidance-for-throttled-requests.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ ms.custom: devx-track-csharp
8
8
9
9
# Guidance for throttled requests in Azure Resource Graph
10
10
11
-
When programmatically using Azure Resource Graph data, it is important to consider how throttling affects the results of the queries. Changing the way data is requested can help you and your organization avoid throttling issues and maintain the flow of timely data about your Azure resources.
11
+
When programmatically using Azure Resource Graph data, it's important to consider how throttling affects the results of the queries. Changing the way data is requested can help you and your organization avoid throttling issues and maintain the flow of timely data about your Azure resources.
12
12
13
13
This article covers four areas and patterns related to the creation of queries in Azure Resource
14
14
Graph:
@@ -230,9 +230,9 @@ while (!string.IsNullOrEmpty(azureOperationResponse.Body.SkipToken))
230
230
231
231
ARG is introducing an alternative approach to the existing Azure control plane GET and List API calls that improve scalability and performance, while addressing throttling issues for Azure customers. This API is currently supported only for resources in the ‘resources’ table and ‘computeresources’ table.
232
232
233
-
The ARG GET/LIST API is specifically meant to address scenarios where you need a lookup of a single resource by Id, or you’re listing resources under the same type and within a certain scope (subscription, resource group or parent resource).
233
+
The ARG GET/LIST API is meant to address scenarios where you need a lookup of a single resource by ID, or you’re listing resources under the same type and within a certain scope (subscription, resource group, or parent resource).
234
234
235
-
You should consider Pacific if your service falls into one (or many) of categories below:
235
+
You should consider Pacific if your service falls into one (or many) of the following categories:
236
236
237
237
- Your service is issuing a large volume of simple GET calls within the context of a single subscription or a single resource group and not batches of records from multiple subscriptions.
238
238
- Your service issues a large volume of simple GET requests, and is at risk of:
@@ -246,7 +246,7 @@ If the resource you’re interested in, is in the ‘resources’ table or ‘co
246
246
247
247
## Still being throttled?
248
248
249
-
If you used this article's recommendations as well as the Azure Resource Graph and your Azure Resource Graph GET/LIST API solution and your queries are still being throttled, contact the [Azure Resource Graph team](mailto:[email protected]). The team supports Azure Resource Graph but doesn't support [Microsoft Graph throttling](/graph/throttling).
249
+
If you used this article's recommendations and the Azure Resource Graph and your Azure Resource Graph GET/LIST API solution and your queries are still being throttled, contact the [Azure Resource Graph team](mailto:[email protected]). The team supports Azure Resource Graph but doesn't support [Microsoft Graph throttling](/graph/throttling).
250
250
251
251
Provide these details when you contact the Azure Resource Graph team:
0 commit comments