Skip To Content

例: サービス定義ファイルを使用したサービスの公開

サービス定義ファイル (*.sd) はサービスを 1 つの転送可能なファイルにカプセル化したもので、オプションとしてソース GIS データを含みます。 [サービス定義のアップロード (Upload Service Definition)] ジオプロセシング ツールは、サービス定義を ArcGIS Server サイトにアップロードして公開します。 このツールは、ArcGIS Server に付属する ArcPy サイト パッケージから呼び出すことができます。

以下の Python の例では、Microsoft Windows コンピューター上で指定したフォルダーをループ処理し、フォルダー内 (サブフォルダーは含まない) に含まれるサービス定義を検索して、接続ファイル (*.ags) を使用して指定されたスタンドアロン ArcGIS Server サイトに公開します。

このツールを実行するには、サービス定義ファイルを含むローカルのデータの格納場所、ArcGIS Server 接続ファイルへのパス、および ArcGIS Server サイト上の出力フォルダーの名前が必要です。

# Publishes all service definitions in an operating system directory
#  (excluding subfolders). Services are published but not started.
# Import required modules
import arcpy
import os

# Define path to SD files on local machine
sdDir = "C:/data/sd_files"

# Provide path to ArcGIS Server connection file
con = "C:/projects/publishing_project/arcgis on myserver_6443.ags"

# Destination folder name on ArcGIS Server
serverFolder = "ScriptPublish"

# Loop through all items in local directory
sdList = os.listdir(sdDir)

for sd in sdList:
    
    # Construct path to item
    extension = os.path.splitext(sd)[1]  # Get file extension
    sdPath = os.path.join(sdDir, sd)

    # Check if item is an SD file and, if so, try to publish
    if os.path.isfile(sdPath) and extension == ".sd":    
        try:     
            arcpy.UploadServiceDefinition_server(sdPath, con, "", "", "EXISTING", serverFolder, "STOPPED")
            print("Published " + sd + " with no errors reported.")
            
        except:
            print("Could not complete publishing operation for " + sd + ".")

        print(arcpy.GetMessages())