az_resource_group: Azure resource group class

az_resource_groupR Documentation

Azure resource group class


Class representing an Azure resource group.


An R6 object of class az_resource_group.


  • new(token, subscription, id, ...): Initialize a resource group object. See 'Initialization' for more details.

  • delete(confirm=TRUE): Delete this resource group, after a confirmation check. This is asynchronous: while the method returns immediately, the delete operation continues on the host in the background. For resource groups containing a large number of deployed resources, this may take some time to complete.

  • sync_fields(): Synchronise the R object with the resource group it represents in Azure.

  • list_templates(filter, top): List deployed templates in this resource group. filter and top are optional arguments to filter the results; see the Azure documentation for more details. If top is specified, the returned list will have a maximum of this many items.

  • get_template(name): Return an object representing an existing template.

  • deploy_template(...): Deploy a new template. See 'Templates' for more details. By default, AzureRMR will set the createdBy tag on a newly-deployed template to the value AzureR/AzureRMR.

  • delete_template(name, confirm=TRUE, free_resources=FALSE): Delete a deployed template, and optionally free any resources that were created.

  • get_resource(...): Return an object representing an existing resource. See 'Resources' for more details.

  • create_resource(...): Create a new resource. By default, AzureRMR will set the createdBy tag on a newly-created resource to the value AzureR/AzureRMR.

  • delete_resource(..., confirm=TRUE, wait=FALSE): Delete an existing resource. Optionally wait for the delete to finish.

  • resource_exists(...): Check if a resource exists.

  • list_resources(filter, expand, top): Return a list of resource group objects for this subscription. filter, expand and top are optional arguments to filter the results; see the Azure documentation for more details. If top is specified, the returned list will have a maximum of this many items.

  • do_operation(...): Carry out an operation. See 'Operations' for more details.

  • set_tags(..., keep_existing=TRUE): Set the tags on this resource group. The tags can be either names or name-value pairs. To delete a tag, set it to NULL.

  • get_tags(): Get the tags on this resource group.

  • create_lock(name, level): Create a management lock on this resource group (which will propagate to all resources within it).

  • get_lock(name): Returns a management lock object.

  • delete_lock(name): Deletes a management lock object.

  • list_locks(): List all locks that apply to this resource group. Note this includes locks created at the subscription level, and for any resources within the resource group.

  • add_role_assignment(name, ...): Adds a new role assignment. See 'Role-based access control' below.

  • get_role_assignment(id): Retrieves an existing role assignment.

  • remove_role_assignment(id): Removes an existing role assignment.

  • list_role_assignments(): Lists role assignments.

  • get_role_definition(id): Retrieves an existing role definition.

  • list_role_definitions() Lists role definitions.


Initializing a new object of this class can either retrieve an existing resource group, or create a new resource group on the host. Generally, the easiest way to create a resource group object is via the get_resource_group, create_resource_group or list_resource_groups methods of the az_subscription class, which handle this automatically.

To create a resource group object in isolation, supply (at least) an Oauth 2.0 token of class AzureToken, the subscription ID, and the resource group name. If this object refers to a new resource group, supply the location as well (use the list_locations method of the ⁠az_subscription class⁠ for possible locations). You can also pass any optional parameters for the resource group as named arguments to new().


To deploy a new template, pass the following arguments to deploy_template():

  • name: The name of the deployment.

  • template: The template to deploy. This can be provided in a number of ways:

    1. A nested list of name-value pairs representing the parsed JSON

    2. The name of a template file

    3. A vector of strings containing unparsed JSON

    4. A URL from which the template can be downloaded

  • parameters: The parameters for the template. This can be provided using any of the same methods as the template argument.

  • wait: Optionally, whether or not to wait until the deployment is complete before returning. Defaults to FALSE.

Retrieving or deleting a deployed template requires only the name of the deployment.


There are a number of arguments to get_resource(), create_resource() and delete_resource() that serve to identify the specific resource in question:

  • id: The full ID of the resource, including subscription ID and resource group.

  • provider: The provider of the resource, eg Microsoft.Compute.

  • path: The full path to the resource, eg virtualMachines.

  • type: The combination of provider and path, eg Microsoft.Compute/virtualMachines.

  • name: The name of the resource instance, eg myWindowsVM.

Providing the id argument will fill in the values for all the other arguments. Similarly, providing the type argument will fill in the values for provider and path. Unless you provide id, you must also provide name.

To create/deploy a new resource, specify any extra parameters that the provider needs as named arguments to create_resource(). Like deploy_template(), create_resource() also takes an optional wait argument that specifies whether to wait until resource creation is complete before returning.


The do_operation() method allows you to carry out arbitrary operations on the resource group. It takes the following arguments:

  • op: The operation in question, which will be appended to the URL path of the request.

  • options: A named list giving the URL query parameters.

  • ...: Other named arguments passed to call_azure_rm, and then to the appropriate call in httr. In particular, use body to supply the body of a PUT, POST or PATCH request, and api_version to set the API version.

  • http_verb: The HTTP verb as a string, one of GET, PUT, POST, DELETE, HEAD or PATCH.

Consult the Azure documentation for what operations are supported.

Role-based access control

AzureRMR implements a subset of the full RBAC functionality within Azure Active Directory. You can retrieve role definitions and add and remove role assignments, at the subscription, resource group and resource levels. See rbac for more information.

See Also

az_subscription, az_template, az_resource, Azure resource group overview, Resources API reference, Template API reference

For role-based access control methods, see rbac

For management locks, see lock


## Not run: 

# recommended way to retrieve a resource group object
rg <- get_azure_login("myaadtenant")$

# list resources & templates in this resource group

# get a resource (virtual machine)
rg$get_resource(type="Microsoft.Compute/virtualMachines", name="myvm")

# create a resource (storage account)
rg$create_resource(type="Microsoft.Storage/storageAccounts", name="mystorage",

# delete a resource
rg$delete_resource(type="Microsoft.Storage/storageAccounts", name="mystorage")

# deploy a template

# deploy a template with parameters inline
    parameters=list(parm1="foo", parm2="bar"))

# delete a template and free resources
rg$delete_template("tplname", free_resources=TRUE)

# delete the resource group itself

## End(Not run)

AzureRMR documentation built on Sept. 21, 2023, 9:07 a.m.