Issue
I'd like to change a VMSS capacity through API. On the Azure webpage there is a "Try it" button for check a request: href="https://learn.microsoft.com/en-us/rest/api/compute/virtual-machine-scale-sets/update?tabs=HTTP#code-try-0" rel="nofollow noreferrer">https://learn.microsoft.com/en-us/rest/api/compute/virtual-machine-scale-sets/update?tabs=HTTP#code-try-0
and my JSON is working fine from that link. But with curl I've got an answer:
"code":"UnsupportedResourceOperation","message":"The resource type 'virtualMachineScaleSets' does not support this operation."
My request looks like this:
curl -s -X PATCH \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-type: application/json" \
-d @body.json \
https://management.azure.com/subscriptions/${SUBSCRIPTION}/resourceGroups/${RG}/providers/Microsoft.Compute/virtualMachineScaleSets/${SCALE_SET_NAME}?api-version=2022-11-01
and the content of a body.json file is:
{
"sku": {
"tier": "Standard",
"capacity": 1,
"name": "Standard_B2s"
}
}
The same json body is working fine on "Try it" so it may be something wrong with my curl request. I'm able to GET information using curl. Could you please show me where did I make a mistake?
Solution
I created an Azure AD Application and added API permissions like below:
Now, I generated auth-code using below authorize endpoint:
https://login.microsoftonline.com/TenantID/oauth2/v2.0/authorize?
&client_id=ClientID
&response_type=code
&redirect_uri=https://jwt.ms
&response_mode=query
&scope=https://management.azure.com/.default
&state=12345
Now, I generated access token by using below parameters:
https://login.microsoftonline.com/TenantID/oauth2/v2.0/token
client_id:ClientID
grant_type:authorization_code
scope:https://management.azure.com/.default
code:code
redirect_uri:https://jwt.ms
client_secret:ClientSecret
By using the above token, I am able to update the VMSS successfully like below:
PATCH https://management.azure.com/subscriptions/SubID/resourceGroups/RGName/providers/Microsoft.Compute/virtualMachineScaleSets/vmss?api-version=2023-03-01
{
"sku": {
"tier": "Standard",
"capacity": 1,
"name": "Standard_B2s"
}
}
Answered By - Imran Answer Checked By - Timothy Miller (WPSolving Admin)