Summary
Uploads and shares a web layer, web tool, or service to ArcGIS Online, ArcGIS Enterprise, or ArcGIS Server.
Usage
This tool uploads and shares a web layer, web tool, or service based on the input service definition. Whenever you share a web layer or service using ArcGIS Pro, this tool is run, and an entry appears in the Geoprocessing History item in the Catalog pane.
This tool does not upload and share service definition draft files (.sddraft). If you have a service definition draft, you can convert it to a staged service definition using the Stage Service tool.
Web tools can only be shared to ArcGIS Enterprise. Geoprocessing tools can only be shared to ArcGIS Server.
Syntax
arcpy.server.UploadServiceDefinition(in_sd_file, in_server, {in_service_name}, {in_cluster}, {in_folder_type}, {in_folder}, {in_startupType}, {in_override}, {in_my_contents}, {in_public}, {in_organization}, {in_groups})
Parameter | Explanation | Data Type |
in_sd_file | The service definition file (.sd) that contains all the information needed to share a web layer, web tool, or service. | File |
in_server | A string representing the server type. The following server types are supported:
| ServerConnection |
in_service_name (Optional) | Use this option to override the service name currently specified in the service definition with a new name. | String |
in_cluster (Optional) | Use this option if you want to change the cluster to which the service has been assigned. You must choose from clusters that are available on the specified server. Legacy:Clusters are deprecated at ArcGIS Enterprise 10.5.1. This parameter will be ignored for servers that do not support multiple clusters. | String |
in_folder_type (Optional) | Specifies the folder type used to determine the source for the folder. The default is to get a folder from the service definition. You can also choose to get a list of folders already existing on the specified online server, or you can specify a new folder to be created once you share this web layer or service.
| String |
in_folder (Optional) | Use this option to specify the folder for the web layer or service. The default is to use the folder specified in the service definition. If you specified NEW for in_folder_type, use this parameter to enter a new folder name. If you specified EXISTING for in_folder_type, you can choose from the existing folders on the server. | String |
in_startupType (Optional) | Use this option to specify the start or stop state of the service immediately after publishing.
| Boolean |
in_override (Optional) | Use this parameter to override the sharing properties set in the service definition. These properties define if, and how, you are sharing your web layer or web tool with ArcGIS Online or ArcGIS Enterprise. Sharing your web layer or web tool exposes it for others to use.
You must be signed in to ArcGIS Online or ArcGIS Enterprise to override sharing properties. This parameter is not honored when sharing to ArcGIS Server. | Boolean |
in_my_contents (Optional) | Specifies how web layers and web tools will be shared. All shared web layers and web tools are available through My Content. Even if you only want to share with a specific group in your organization, the web layer or web tool will also be shared through My Content.
You must be signed in to a portal to override sharing properties. This parameter is not honored when sharing to ArcGIS Server. | Boolean |
in_public (Optional) | Specifies whether the web layer or web tool will be available to the public.
You must be signed in to ArcGIS Online or ArcGIS Enterprise to override sharing properties. This parameter is not honored when sharing to ArcGIS Server. | Boolean |
in_organization (Optional) | Specifies whether to share the web layer or web tool with your organization.
You must be signed in to ArcGIS Online or ArcGIS Enterprise to override sharing properties. This parameter is not honored when sharing to ArcGIS Server. | Boolean |
in_groups [group_name,...] (Optional) | A list of group names with which to share the web layer or web tool. You must be signed in to ArcGIS Online or ArcGIS Enterprise to override sharing properties. This parameter is not honored when sharing to ArcGIS Server. | String |
Derived Output
Name | Explanation | Data Type |
out_soap_svc_url | The SOAP URL of a service published to the server. | String |
out_rest_svc_url | The REST URL of a service published to the server. | String |
out_mapServiceItemID | The Item ID of the map image layer shared to the portal. | String |
out_featServiceItemID | The Item ID of the hosted feature service layer shared to the portal. | String |
out_cached_service | An image service or a map service with caching enabled. | Image Service; MapServer |
out_featureServiceURL | The REST URL of a hosted feature layer shared to the portal. | String |
out_mapServiceURL | The REST URL of a map image layer shared to the portal. | String |
out_LayerIDMap | The published layers and their respective IDs in the format Layer1|ID1;Layer2|ID2; and so on. | String |
out_standaloneTableIDMap | The published stand-alone tables and their respective IDs in the format Table1|ID1;Table2|ID2; and so on. | String |
out_vectorTileServiceID | The Item ID of the vector tile service. | String |
out_vectorTileServiceURL | The REST URL of the vector tile service. | String |
Code sample
The following script publishes a list of layers from a map as a web tile layer to either ArcGIS Enterprise or ArcGIS Online. Portal information is obtained from the Portals page in ArcGIS Pro.
import arcpy
import os
# Set output file names
outdir = r"C:\Project\Output"
service = "TileSharingDraftExample"
sddraft_filename = service + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)
# Reference map to publish
aprx = arcpy.mp.ArcGISProject(r"C:\Project\World.aprx")
m = aprx.listMaps("World")[0]
lyrs = []
lyrs.append(m.listLayers('cities')[0])
lyrs.append(m.listLayers('counties')[0])
# Create TileSharingDraft and set service properties
sharing_draft = m.getWebLayerSharingDraft("HOSTING_SERVER", "TILE", service, lyrs)
sharing_draft.summary = "My Summary"
sharing_draft.tags = "My Tags"
sharing_draft.description = "My Description"
sharing_draft.credits = "My Credits"
sharing_draft.useLimitations = "My Use Limitations"
# Create Service Definition Draft file
sharing_draft.exportToSDDraft(sddraft_output_filename)
# Stage Service
sd_filename = service + ".sd"
sd_output_filename = os.path.join(outdir, sd_filename)
arcpy.StageService_server(sddraft_output_filename, sd_output_filename)
# Share to portal
print("Uploading Service Definition...")
arcpy.UploadServiceDefinition_server(sd_output_filename, "My Hosted Services")
print("Successfully Uploaded service.")
The following script uploads an existing service definition and uses optional parameters to modify properties of the service.
import arcpy
# Set environment settings
arcpy.env.workspace = "C:/data"
# Set local variables
inSdFile = "myMapService.sd"
inServer = "myServerConnection.ags"
inServiceName = "newServiceName"
inCluster = "myCluster"
inFolderType = "NEW"
inFolder = "newFolder"
inStartup = "STOPPED"
# Execute UploadServiceDefinition
arcpy.UploadServiceDefinition_server(inSdFile, inServer, inServiceName,
inCluster, inFolderType, inFolder,
inStartup)
The following script uploads an existing service definition to either ArcGIS Online or ArcGIS Enterprise and uses optional parameters to modify properties of the service.
import arcpy
# Set environment settings
arcpy.env.workspace = "C:/data"
# Set local variables
inSdFile = "myMapService.sd"
inServer = "HOSTING_SERVER"
inServiceName = "newServiceName"
inCluster = "myCluster"
inFolderType = "EXISTING"
inFolder = "existingFolder"
inStartup = "STOPPED"
inOverride = "OVERRIDE_DEFINITION"
inMyContents = "SHARE_ONLINE"
inPublic = "PRIVATE"
inOrganization = "NO_SHARE_ORGANIZATION"
inGroups = ["My Group", "MyGroup 2"]
# Execute UploadServiceDefinition
arcpy.UploadServiceDefinition_server(inSdFile, inServer, inServiceName,
inCluster, inFolderType, inFolder,
inStartup, inOverride, inMyContents,
inPublic, inOrganization, inGroups)
Environments
Licensing information
- Basic: Yes
- Standard: Yes
- Advanced: Yes