Skip to content
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 generateToken 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.


Learn how to generate a token

Description

The migrateObjectStore operation migrates an organization's hosted object store to a cloud-native object store.

Request parameters

ParameterDetails

cloudConfig

(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:

  • The provider portion consists of the name property, which specifies the name of the cloud provider.
  • The credential portion consists of the credential property, which specifies the credentials used for the cloud provider.
  • The service portion consists of the cloudServices property, which contains information on the cloud services.

While the cloudServices configuration may vary depending on the cloud service provider, it must include the following properties:

  • name: The name of the cloud storage service provider.
  • category: The category of the service, the value of which must be storage.
  • type: The service type, the value of which must be objectStore.
  • connection: The connection information for the service, which includes properties that specify the region, endpoints URLs, and root directory.

allObjectMustBeMigrated

(Optional)

Specifies if all object migrations must succeed during execution of this operation. If true, the operation rolls back if any object migration fails. If false, the operation will report and continue past any object migration failures. The default value is false.

f

(Optional)

The response format. The default format is html.

Values: html | json | pjson

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 providerCloud-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 cloudConfig 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
Amazon S3 using IAM rolesAmazon S3 using IAM rolesAmazon S3 using access keys
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
  "name": "AWS",
  "credential": {
    "type": "ACCESS-KEY",
    "secret": {
      "secretKey": "<secret_key>",
      "accessKey": "access_key"
    }
  },
  "cloudServices": [
    {
Expand

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
Azure Blob Store using user-assigned identitiesAzure Blob Store using user-assigned identitiesAzure Blob store using system-assigned identitiesAzure Blob store using storage account keys
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
  "name": "AZURE",
  "credential": {
    "type": "USER-ASSIGNED-IDENTITY",
    "managedIdentityClientId": "Client id",
    "secret": {
      "storageAccountName": "<storage account name>"
    }
  },
  "cloudServices": [
    {
Expand

Google Kubernetes Engine (GKE)

The following shows a sample JSON objects that demonstrate the configuration for Google Cloud Store using HMAC keys:

Example
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
  "name": "GCP",
  "credential": {
    "type": "HMAC-KEYS",
    "secret": {
      "secretKey": "<secret key>",
      "accessKey": "<access key>"
    }
  },
  "cloudServices": [
    {
Expand

Example usage

The following is a sample POST request for the migrateObjectStore operation:

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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:

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
  "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:

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
{
  "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"
}

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.