At ArcGIS Server 10.7, administrators can change the jobs directory of a geoprocessing service (or multiple geoprocessing services) from a disk location to a Microsoft Azure cloud storage location, leaving other server directories unchanged. If your geoprocessing services consistently have large outputs, you can use this option to scale your storage resources.
Note:
If the View output in map image layer option was turned on when you published the web tool, you cannot use cloud storage as the job directory for the resultant geoprocessing service. The service will be corrupted once you make the change in this workflow.
Prepare the Azure environment
You need a Microsoft Azure account to set up a storage account and create BLOB containers and tables in it.
Create an Azure storage account
The storage account must meet the following requirements:
- A standard performance storage account is required.
- This account can be a General-purpose v2 (recommended) or General-purpose v1 account. Blob storage, Block Blob storage, and Azure Files storage accounts are not supported.
- The Hot access tier is recommended.
- Other advanced settings of the storage account can be adjusted based on your organization's needs.
Once the storage account is deployed, copy the key1 of the access keys of your storage account, which is needed when you register the account as a cloud store with ArcGIS Server.
Create a BLOB container and a table
Create your BLOB container and table in the same storage account. The geoprocessing service cannot identify them if they're in different storage accounts.
Note the exact name of the table you create; you'll use it in ArcGIS Server at a later point.
Move the jobs directory to Azure
Once the Azure blob container and the table are deployed, register the blob container in ArcGIS Server and change the service properties accordingly.
- Log in to ArcGIS Server Manager and register the blob container of your storage account with the server.
- When the blob has been registered as a cloud store, link it to your Azure table using the REST API. Log in to the ArcGIS Server Administrator Directory at https://gisserver.domain.com:6443/arcgis/admin.
- Go to data > items > /CloudStores, locate your new BLOB container, and click edit to open the Edit Data Item endpoint.
- In the JSON representation of the item, add the following keypair with the name of your Azure table:
"tableStore":"<name of Azure table>"
- Click Update to confirm.
- Return to the home page of the Administrator Directory, and click Services.
- Locate the geoprocessing service (or one of the services) you want to configure to use the Azure blob container, click the service name, and click edit.
- In the JSON representation of the service, locate and edit the following keypair with the name of your cloud store:
"jobsDirectory":"/cloudStores/<name of your cloud store>"
Tip:
The cloud store's name will be at the end of its data item URL endpoint in the Administrator Directory.
- Click Save Edits to confirm.
- If you're configuring multiple geoprocessing services to use the Azure blob container as their jobs directory, repeat steps 4–9 for each service.
JSON example
Suppose your Azure account has a storage account named mystorageaccount, and there is a blob container named myblob and a table mytable in that storage account. The key1 of mystorageaccount is thisisafakekey12345. You want your geoprocessing service, myGPService1, to use Azure storage for its jobs directory.
During the registration process, the Cloud Store Name is azureblob.
When you edit the cloud store properties, the JSON is changed, with "tableStore": "mytable" added at the end:
Edit Data Item
{
"path": "/cloudStores/azureblob",
"type": "cloudStore",
"id": "31245-abcde...",
"provider": "azure",
"info": {
"isManaged": false,
"connectionString": "abc/def/ghi/jkl/lmn/opq",
"objectStore": "myblob",
"tableStore": "mytable"
}
}
Then, change the service properties JSON of your geoprocessing service by adding "jobsDirectory": "/cloudStores/azureblob", following "virtualOutputDir": "/rest/directories/arcgisoutput",.
Edit GPServer
{
"serviceName": "myGPService1",
<... removed to save space ...>
"resultMapServer": "false",
"maximumRecords": "1000",
"virtualOutputDir": "/rest/directories/arcgisoutput",
"jobsDirectory": "/cloudStores/azureblob",
"portalURL": "https://domain/webadaptor/",
"toolbox": <... removed to save space ...>
},
"portalProperties": < ...removed to save space... >,
"extensions": < ...removed to save space... >,
"frameworkProperties": {},
"datasets": []
}