Skip To Content

Configure a highly available ArcGIS Server site with a shared configuration store on Amazon storage services

To have a truly highly available ArcGIS Server site, you must store the ArcGIS Server configuration store and directories in a highly available, shared location. You can use Amazon Simple Storage Service (S3), Amazon DynamoDB, and Amazon Simple Queue Service (SQS) for the configuration store and directories.

You need an Amazon Web Services (AWS) account and either the Access Key and Secret Key for the account or a predefined IAM role with appropriate IAM policies to complete the following workflow that configures a highly available ArcGIS Server site.

In this workflow, you'll launch two Amazon Elastic Compute Cloud (EC2) instances to use for the ArcGIS Server site. The configuration store and shared directories will be stored across S3, DynamoDB, and SQS.

  1. Sign in to the AWS Management Console and launch two EC2 instances.

    See Launch an EC2 instance running ArcGIS Server for more information.

    If you launch the instances in an Amazon Virtual Private Cloud (VPC), you must do the following:

    1. Configure the subnet to automatically assign public IP addresses.
    2. Open port 6443 in the security group you'll use with the instances.
  2. Connect to the instances, and install ArcGIS Server on them.

    For instructions to connect to an EC2 instance, see the AWS help.

  3. Rather than create an ArcGIS Server site from ArcGIS Server Manager, open the ArcGIS Server Administrator Directory URL (https://<public DNS>:6443/arcgis/admin) for the first EC2 instance and click createNewSite.
  4. Provide a username and password for the ArcGIS Server primary site administrator in the Primary administrator's name and Password fields, respectively.
  5. Copy one of the following into the Config Native Configuration (JSON) field, and replace variable information with information specific to your account and implementation.
    • If you configured an IAM role, copy the following into Config Native Configuration (JSON):

      [
        {
      	  "name": "AWS",
         "namespace": "<namespace>",
         "region": "<AWS region>",
         "credential": {
           "type": "IAM=ROLE"
        },
           "cloudServices": [
           {
             "name": "AWS S3",
             "type": "objectStore",
             "usage": "DEFAULT",
             "connection": {
               "bucketName": "<Name of S3 bucket>",
               "regionEndpointUrl": "<Regional endpoint URL>",
               "rootDir": "<root directory>"
           },
           "category": "storage"
         },
         {
             "name": "Amazon Dynamo DB",
             "type": "tableStore",
             "connection":{
             "regionEndpointUrl": "<your regional Endpoint URL>"
         },
           "category": "storage"
         },
         {
             "name": "Amazon Queue Service",
             "type": "queueService",
             "connection":{
                "regionEndpointUrl": "<regional Endpoint URL>"
             },
             "category": "queue"
          }
        ],
        "cloudServiceTags":[
          {"<Your key name 1>": "tag value"},
          {"<Your key name 2>": "tag value"},
          {"<Your key name 3>": "tag value"}
        ]
       }
      ]

    • If you did not configure an IAM role, copy the following into Config Native Configuration (JSON):

      [
        {
          "name": "AWS",
          "namespace": "<namespace>",
          "region": "<AWS region>",
          "credential": {
            "type": "ACCESS-KEY",
            "secret": {
              "accessKey": "<your access key>",
              "secretKey": "<your secret key>"
        },
           "cloudServices": [
           {
             "name": "AWS S3",
             "type": "objectStore",
             "usage": "DEFAULT",
             "connection": {
               "bucketName": "<Name of S3 bucket>",
               "regionEndpointUrl": "<Regional endpoint URL>",
               "rootDir": "<root directory>"
           },
           "category": "storage"
         },
         {
             "name": "Amazon Dynamo DB",
             "type": "tableStore",
             "connection":{
               "regionEndpointUrl": "<your regional Endpoint URL>"
             },
           "category": "storage"
          },
          {
             "name": "Amazon Queue Service",
             "type": "queueService",
             "connection":{
                "regionEndpointUrl": "<regional Endpoint URL>"
             },
             "category": "queue"
          }
        ],
        "cloudServiceTags":[
          {"<Your key name 1>": "tag value"},
          {"<Your key name 2>": "tag value"},
          {"<Your key name 3>": "tag value"}
        ]
       }
      ]

    The namespace used for the bucket must be unique for this ArcGIS Server site.

    For best performance, the AWS region you specify should be the same for all the instances included in the ArcGIS Server site.

    Tip:

    For example values for each type of physicalPath, see the Example usage section of Create Site in the ArcGIS REST API help.

    You do not need to provide values for the Server directories (JSON) and Config-store (JSON) fields.

  6. Optionally, copy the following into the Log Settings (JSON) field and replace values as needed for your instance.

    If you do not specify logging information, ArcGIS uses the default log level (warning), directory (C:\\arcgisserver\\logs\\ for Windows instances or /arcgis/server/usr/logs for Ubuntu instances), maximum number of log files stored (10), and maximum number of days a log file is stored (90).

    Note:

    In JSON, the backslash character (\) is an escape character. To provide text that includes a backslash—such as in Windows directory paths—you must use two backslashes.

    {
    		"logLevel": "<DEBUG | VERBOSE | FINE | INFO | WARNING | SEVERE>",
    		"logDir": "<directory>",
    		"maxErrorReportsCount": 10,
    		"maxLogFileAge": 90
    	}

    In the following example, up to 25 debug log files will be created in a logs folder on the ArcGIS Server machine, and log files will be retained for 30 days.

    {
    		"logLevel": "DEBUG",
    		"logDir": "C:\\arcgisserver\\logs\\",
    		"maxErrorReportsCount": 25,
    		"maxLogFileAge": 30
    	}

  7. To use the default cluster, leave the Cluster (JSON) field blank.
  8. Click Create.
  9. After the ArcGIS Server site is created, go back to the AWS Management Console and verify that the S3 bucket, DynamoDB tables, and SQS queues exist.

    Note:

    At this release, ArcGIS Enterprise does not support Amazon S3 directory buckets.

    1. Click Services > Storage and Content Delivery > S3 and verify that the S3 bucket contains the Services and config-store folders.
    2. Click Services > Database > Dynamo DB and verify that the following items exist:

      • ArcGISConfigStore<namespace>
      • ArcGISConfigStores
      • ArcGISGP<namespace>
      • ArcGISLocks<namespace>
      • ArcGISResources

    3. Click Services > Application Integration > Simple Queue Service and verify that the queues exist.

      Queue names are in the format ArcGIS-GP-<namespace>-<uniqueid>.fifo.

  10. Open ArcGIS Server Manager for the second AWS instance.

    The URL is https://<public DNS>:6443/arcgis/manager.

  11. Complete the following steps to join this second AWS instance to the ArcGIS Server site:
    1. Click Join Existing Site.
    2. Provide the URL of the ArcGIS Server site you created on the first instance.
    3. Provide the primary site administrator username and password you created on the first instance.

You now have a highly available ArcGIS Server site that contains two machines with the configuration store and shared directories stored across S3, DynamoDB, and SQS.