{"id":50,"library":"ncloud-sdk-python","title":"Naver Cloud Platform Python SDK","description":"Official Python SDK for Naver Cloud Platform (NCP) — South Korea's primary cloud provider, equivalent to AWS in the Korean market. Provides programmatic access to NCP infrastructure services: servers, VPC, CDN, DNS, Object Storage, and more. The SDK is split into service-specific packages (ncloud-server, ncloud-vserver, ncloud-vpc, ncloud-cdn, etc.) — install only the services you need. IMPORTANT: NCP has two distinct environments — Classic and VPC — with separate SDK modules, different API endpoints, and incompatible APIs. ncloud-server targets Classic, ncloud-vserver targets VPC. New accounts should use VPC.","status":"active","version":"2.8.1 (ncloud meta-package)","language":"python","source_language":"ko","source_url":"https://github.com/NaverCloudPlatform/ncloud-sdk-python","tags":["naver","ncloud","korea","cloud","infrastructure","vpc","server","cdn","korean-cloud","aws-alternative"],"install":[{"cmd":"pip install ncloud","lang":"bash","label":"Top-level meta package (installs ncloud-apikey and core utilities)"},{"cmd":"pip install ncloud-vserver ncloud-vpc ncloud-apikey","lang":"bash","label":"VPC environment — recommended for new accounts (server + networking)"},{"cmd":"pip install ncloud-server ncloud-apikey","lang":"bash","label":"Classic environment — legacy, use only if account predates VPC"},{"cmd":"pip install ncloud-cdn ncloud-apikey","lang":"bash","label":"CDN service (available in both Classic and VPC)"}],"dependencies":[{"reason":"Required. Handles credential loading from config file, environment variables, or Server Role metadata.","package":"ncloud-apikey","optional":false},{"reason":"Required. HTTP transport for all API calls.","package":"urllib3","optional":false},{"reason":"Required. Date/time parsing in API responses.","package":"python-dateutil","optional":false}],"imports":[{"note":"VPC and Classic environments use completely different modules. ncloud_server = Classic. ncloud_vserver = VPC. Mixing them results in wrong API endpoints being called.","wrong":"import ncloud_server  # This is Classic environment, not VPC","symbol":"ncloud_vserver (VPC servers)","correct":"import ncloud_vserver\nfrom ncloud_vserver.api.v2_api import V2Api"}],"quickstart":{"code":"# Step 1: Set up credentials\n# Option A: Config file at ~/.ncloud/configure\n# [DEFAULT]\n# ncloud_access_key_id = YOUR_ACCESS_KEY\n# ncloud_secret_access_key = YOUR_SECRET_KEY\n\n# Option B: Environment variables\n# export NCLOUD_ACCESS_KEY_ID=YOUR_ACCESS_KEY\n# export NCLOUD_SECRET_KEY=YOUR_SECRET_KEY\n\n# Step 2: VPC Server operations (recommended for new accounts)\nimport ncloud_vserver\nfrom ncloud_vserver.api.v2_api import V2Api\nfrom ncloud_vserver.rest import ApiException\nimport ncloud_apikey\n\n# Load credentials from config file or env vars\napikeys = ncloud_apikey.ncloud_key.NcloudKey().keys()\n\nconfiguration = ncloud_vserver.Configuration()\nconfiguration.access_key = apikeys['access_key']\nconfiguration.secret_key = apikeys['secret_key']\n\napi = V2Api(ncloud_vserver.ApiClient(configuration))\n\n# List server instances\ntry:\n    response = api.get_server_instance_list(\n        ncloud_vserver.GetServerInstanceListRequest()\n    )\n    for server in response.get_server_instance_list_response.server_instance_list:\n        print(server.server_name, server.server_instance_status.code_name)\nexcept ApiException as e:\n    print(f'API error: {e}')\n\n# Create a server instance (VPC)\ntry:\n    request = ncloud_vserver.CreateServerInstancesRequest(\n        vpc_no='YOUR_VPC_NO',\n        subnet_no='YOUR_SUBNET_NO',\n        server_image_product_code='SW.VSVR.OS.LNX64.CNTOS.0703.B050',  # CentOS 7\n        server_product_code='SVR.VSVR.STAND.C002.M008.NET.SSD050.B050.G002',\n    )\n    response = api.create_server_instances(request)\n    print(response)\nexcept ApiException as e:\n    print(f'Create error: {e}')\n\n# Classic environment (legacy — use only if on Classic account)\nimport ncloud_server\nfrom ncloud_server.api.v2_api import V2Api as ClassicV2Api\n\nclassic_config = ncloud_server.Configuration()\nclassic_config.access_key = apikeys['access_key']\nclassic_config.secret_key = apikeys['secret_key']\n\nclassic_api = ClassicV2Api(ncloud_server.ApiClient(classic_config))\ntry:\n    response = classic_api.get_server_instance_list(\n        ncloud_server.GetServerInstanceListRequest()\n    )\nexcept ApiException as e:\n    print(f'Classic API error: {e}')\n\n# CDN (works for both Classic and VPC)\nimport ncloud_cdn\nfrom ncloud_cdn.api.v2_api import V2Api as CdnV2Api\n\ncdn_config = ncloud_cdn.Configuration()\ncdn_config.access_key = apikeys['access_key']\ncdn_config.secret_key = apikeys['secret_key']\n\ncdn_api = CdnV2Api(ncloud_cdn.ApiClient(cdn_config))\ntry:\n    response = cdn_api.get_cdn_plus_instance_list(\n        ncloud_cdn.GetCdnPlusInstanceListRequest()\n    )\n    print(response)\nexcept ApiException as e:\n    print(f'CDN error: {e}')","lang":"python","description":"Always use ncloud-vserver (VPC) for new projects. ncloud-server (Classic) is legacy. Product codes for server images and instance types must be retrieved via API (getServerImageProductList, getServerProductList) — they are not human-readable strings and differ between Classic and VPC environments."},"warnings":[{"fix":"New accounts: always use ncloud-vserver (VPC). Check your account type in the NCP console. If you created your account after 2020, it is almost certainly VPC.","message":"Classic and VPC environments are completely separate API surfaces with different modules, endpoints, and product codes. ncloud-server (Classic) and ncloud-vserver (VPC) are NOT interchangeable. Classic uses 'https://ncloud.apigw.ntruss.com/server/v2', VPC uses 'https://ncloud.apigw.ntruss.com/vserver/v2'. Calling Classic APIs on a VPC account or vice versa returns auth or resource-not-found errors.","severity":"breaking","affected_versions":"all"},{"fix":"Always fetch current product codes dynamically via getServerImageProductList() and getServerProductList() before creating instances. Cache the results but don't hardcode them.","message":"Server image product codes and server product codes are not human-readable strings — they are opaque codes like 'SW.VSVR.OS.LNX64.CNTOS.0703.B050'. These codes differ between Classic and VPC environments and can change over time as Naver deprecates older images. Hardcoding them will break when Naver retires the image.","severity":"gotcha","affected_versions":"all"},{"fix":"Install only the service-specific packages you need: pip install ncloud-vserver ncloud-apikey for VPC servers, plus additional packages per service.","message":"The README installation instruction says 'pip install Setuptools' which is misleading — this is a general Python build tool, not the NCP SDK. Each NCP service is a separate PyPI package (ncloud-server, ncloud-vserver, ncloud-vpc, ncloud-cdn, etc.). There is no single 'pip install ncloud-sdk' that installs everything.","severity":"gotcha","affected_versions":"all"},{"fix":"Set credentials via environment variables in CI/CD. Use ~/.ncloud/configure for local dev. The config file can be generated via the Ncloud CLI: ncloud configure.","message":"Credential loading order via ncloud_apikey.NcloudKey() is: (1) environment variables NCLOUD_ACCESS_KEY_ID / NCLOUD_SECRET_KEY, (2) config file at ~/.ncloud/configure, (3) Server Role metadata (VPC only). If none are present, the SDK raises a generic exception with no clear message about missing credentials.","severity":"gotcha","affected_versions":"all"},{"fix":"Use English docs at api.ncloud-docs.com for API reference. For service-specific guides and troubleshooting, the Korean docs at guide.ncloud-docs.com are more complete.","message":"NCP console, documentation, and support are primarily in Korean. English documentation at api.ncloud-docs.com exists but is less comprehensive and may lag behind Korean docs for newer services.","severity":"gotcha","affected_versions":"all"},{"fix":"Specify the region explicitly when creating resources. Default region is KR if not specified.","message":"NCP regions are Korea-centric. Primary region is KR (Korea). Additional regions include SGN (Singapore), JPN (Japan), USWN (US West), and DE (Germany). Not all services are available in all regions. Region availability must be checked per service.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"search_vec":"'access':29 'account':100 'altern':117 'api':84,88 'aw':22,116 'aws-altern':115 'cdn':36,62,111 'classic':76,93 'cloud':2,11,18,107,114 'differ':83 'distinct':74 'dns':37 'endpoint':85 'environ':75 'equival':20 'etc':63 'import':70 'incompat':87 'infrastructur':32,108 'instal':64 'korea':15,106 'korean':25,113 'korean-cloud':112 'market':26 'modul':82 'naver':1,10,104 'ncloud':52,55,58,61,90,95,105 'ncloud-cdn':60 'ncloud-serv':51,89 'ncloud-vpc':57 'ncloud-vserv':54,94 'ncp':13,31,71 'need':69 'new':99 'object':38 'offici':6 'packag':50 'platform':3,12 'primari':17 'programmat':28 'provid':19,27 'python':4,7 'sdk':5,8,43,81 'separ':80 'server':34,53,91,110 'servic':33,48,67 'service-specif':47 'south':14 'specif':49 'split':45 'storag':39 'target':92,97 'two':73 'use':102 'vpc':35,59,78,98,103,109 'vserver':56,96","created_at":"2026-03-16T04:39:09.011572+00:00","updated_at":"2026-04-16T17:20:25.933294+00:00","problems":{"verify_error":"× No solution found when resolving dependencies:\n  ╰─▶ Because ncloud was not found in the package registry and you require ncloud, we can conclude that your requirements are unsatisfiable."},"ecosystem":"pypi","meta_description":null,"install_score":100,"quickstart_score":0,"quickstart_tag":"stale","pypi_latest":null,"cli_name":"","cli_version":null,"type":"library","homepage":"https://www.ncloud.com","github":null,"docs":null,"changelog":null,"pypi":null,"npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["gcp","aws"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"install_fail","verified_at":"2026-06-27","last_verified":"2026-06-27","next_check":"2026-07-04","install_tag":"verified"}}