- URL:
- https://<root>/data/<datastoreID>/migrateObjectStore
- Methods:
POST- Version Introduced:
- 12.1
Access requirements
Required privileges
The ArcGIS Enterprise Administrator API requires privilege-based access. An administrator must be assigned a specific user privilege, or role, to access any given endpoint. Listed below are the user privileges or roles an administrator can be assigned that provides access to this endpoint. If multiple privileges are listed, only one needs to be assigned to gain access.
Tokens
This API requires token-based authentication. A token is automatically generated for administrators who sign in to the ArcGIS Enterprise Administrator API directory's HTML interface. Tokens generated in this way are stored for the entirety of the session.
Those accessing the API directory outside of the HTML interface will need to acquire a session token from the generate operation in the ArcGIS Portal Directory API. For security reasons, all POST requests made to the ArcGIS Enterprise Administrator API must include a token in the request body.
Description
The migrate operation migrates an organization's hosted object store to a cloud-native object store.
Request parameters
| Parameter | Details |
|---|---|
(Required) | A JSON object containing the cloud storage configuration for a cloud-native object data store. The configurations for cloud-native object data stores are comprised of three main components:
While the
|
(Optional) | Specifies if all object migrations must succeed during execution of this operation. If |
(Optional) | The response format. The default format is Values: |
Supported cloud-native relational stores
ArcGIS Enterprise on Kubernetes supports Amazon Elastic Kubernetes Service (EKS), Azure Kubernetes Service (AKS), and Google Kubernetes Engine (GKE) as cloud service providers. When migrating from an ArcGIS-managed object store instance to a cloud-native object store instance, it is recommended to use cloud-native services that correspond to your environment's cloud provider. For example:
| Cloud provider | Cloud-native object store |
|---|---|
Amazon Elastic Kubernetes Service (EKS) | Amazon Simple Storage Service (S3) |
Azure Kubernetes Service (AKS) | Azure Blob Store |
Google Kubernetes Engine (GKE) | Google Cloud Store |
The following sections provide JSON examples for the cloud parameter for each supported cloud provider.
Amazon Elastic Kubernetes Service (EKS)
The following shows sample JSON objects that demonstrate the configuration for the following:
- Amazon S3 using IAM roles
- Amazon S3 using access keys
{
"name": "AWS",
"credential": {
"type": "ACCESS-KEY",
"secret": {
"secretKey": "<secret_key>",
"accessKey": "access_key"
}
},
"cloudServices": [
{
Azure Kubernetes Service (AKS)
The following shows sample JSON objects that demonstrate the configuration for the following:
- Azure Blob Store using user-assigned identities
- Azure Blob store using system-assigned identities
- Azure Blob store using storage account keys
{
"name": "AZURE",
"credential": {
"type": "USER-ASSIGNED-IDENTITY",
"managedIdentityClientId": "Client id",
"secret": {
"storageAccountName": "<storage account name>"
}
},
"cloudServices": [
{
Google Kubernetes Engine (GKE)
The following shows a sample JSON objects that demonstrate the configuration for Google Cloud Store using HMAC keys:
{
"name": "GCP",
"credential": {
"type": "HMAC-KEYS",
"secret": {
"secretKey": "<secret key>",
"accessKey": "<access key>"
}
},
"cloudServices": [
{
Example usage
The following is a sample POST request for the migrate operation:
POST /<context>/data/59440620fc32411384d1f666c1ce13f1/migrateObjectStore HTTP/1.1
Host: organization.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: []
cloudConfig=
{
"name": "AWS",
"credential": {
"type": "ACCESS-KEY",
"secret": {
"secretKey": "<secret key>",
"accessKey": "<access key>"
} },
"cloudServices": [
{
"name": "AWS S3",
"type": "objectStore",
"usage": "DEFAULT",
"connection": {
"bucketName": "cloudnativestore",
"region": "us-east-2",
"regionEndpointUrl": "https://s3.us-east-2.amazonaws.com",
"rootDir": "arcgis-objmigratetest"
},
"category": "storage"
}
]
}
&f=html&allObjectMustBeMigrated=true&token=<token>JSON Response example
The following response is returned each time a request is submitted:
{
"updatedtime": 1775031523144,
"jobid": "jb52b1548-7177-4f04-a758-b8f9611bb7bc",
"resource": {
"name": "4a02fc76-5a0c-47d4-b205-e0213d0ef9c1",
"id": "4a02fc76-5a0c-47d4-b205-e0213d0ef9c1"
},
"requestID": "1ac48d22-e2d8-4dea-8208-7968139d74a1",
"name": "migrateToCloudDb",
"messages": ["Migration of object store from hosted to cloud is submitted"],
"starttime": 1775031523059,
"operationURI": "/ent/admin/data/4a02fc76-5a0c-47d4-b205-e0213d0ef9c1/migrateObjectStore",
"status": "SUBMITTED",
"username": "administrator"
}You can use the jobid property to track the asynchronous job's status and progress by querying the Job resource.
When the job is completed successfully, the following JSON response is returned:
{
"result": {
"migrationResults": {
"objectMirrorResult": {
"failedObjects": [],
"totalNumOfObjects": 94632
},
"stages": [
{
"stage": "Put ArcGIS Enterprise into READONLY mode",
"status": "succeeded"
},
{
"stage": "Migrate objects between object stores",
"status": "succeeded"
},
{
"stage": "Update object store and configuration for ArcGIS Enterprise",
"status": "succeeded"
},
{
"stage": "Refresh deployments for ArcGIS Enterprise",
"status": "succeeded"
},
{
"stage": "Disable ArcGIS Enterprise READONLY mode",
"status": "succeeded"
},
{
"stage": "Delete original hosted object store instance",
"status": "succeeded"
},
{
"stage": "Rollback",
"status": "skipped"
}
],
"status": "succeeded"
},
"completeTime": 1774637936307,
"startTime": 1774633572702,
"state": "success"
},
"updatedTime": 1774637936331,
"jobId": "j90884609-10de-4877-bca6-b34e940c7b6e",
"resource": {
"name": "dd103aa9-41d5-4249-b894-ff4b8ed139c3",
"id": "dd103aa9-41d5-4249-b894-ff4b8ed139c3"
},
"requestId": "5438ac58-7851-4c40-a7db-b5df7c232adf",
"name": "migrateToCloudDb",
"endTime": 1774637936322,
"startTime": 1774633388063,
"operationURI": "/arcgis/admin/data/dd103aa9-41d5-4249-b894-ff4b8ed139c3/migrateObjectStore",
"status": "COMPLETED",
"username": "administrator"
}