Code Monkey home page Code Monkey logo

ksc-sdk-python's Introduction

SDK 使用文档

A low-level interface to a growing number of KSC Web Services.

Install 安装

  • github 安装
    • 通过 GitHub 下载
    • 通过命令 python setup.py install 安装

Config 配置

  • 申请安全凭证:

    在第一次使用云API之前,用户首先需要在金山云控制台申请安全凭证,安全凭证包括access_key_id和secret_access_key,access_key_id 是用于标识API调用者的身份,secret_access_key是用于加密签名字符串和服务器端验证签名字符串的密钥。secret_access_key 必须严格保管,避免泄露。

  • 获取安全凭证方法:

参见金山云文档: https://docs.ksyun.com/documents/40311

  • 通过文件配置及管理密钥,参考examples内示例:

    • 所在位置: '/etc/kscore.cfg' 或 './.kscore.cfg' 或 'C:\kscore.cfg'
    • 注意: 使用相对路径时,需与运行目录保持一致。
[Credentials]
ks_access_key_id=your ak
ks_secret_access_key=your sk
  • 或在程序运行时配置:
from kscore.session import get_session
# 密钥
ACCESS_KEY_ID = "your ak"
SECRET_ACCESS_KEY = "your sk"

s = get_session()
client = s.create_client("iam", ks_access_key_id=ACCESS_KEY_ID, ks_secret_access_key=SECRET_ACCESS_KEY)

接口输出自定义 SDK版本 >=1.3.46

  • 通过自定义映射yaml文件,文件名称必须为customer.yaml
  • customer.yaml必须放置在 您的路径/service名称/官网服务版本号 的路径下
  • 以EIP为例 需要放在 您的路径/eip/2016-03-04/customer.yaml
  • customer.yaml示例
DescribeAddresses:
  PublicIp: address
  AllocationId: uuid
  AddressesSet: ips
  • 使用示例

eipClient = s.create_client("eip", region, use_ssl=True,customer_path='your path')

金山云-私有云域名配置 SDK版本 >1.3.32

  • 通过文件配置及管理密钥,参考examples内示例:

    • 所在位置: '/etc/kscore.cfg' 或 './.kscore.cfg' 或 'C:\kscore.cfg'
    • 注意: 使用相对路径时,需与运行目录保持一致。
    • 注意 域名不要带引号 示例 ks_domain = api.ksyun.com
[Domain]
ks_domain = your domain
  • 或在程序运行时配置:
from kscore.session import get_session
# 密钥
ks_domain = "your domain"


s = get_session()
s.set_domain(ks_domain)

日志级别配置方法

from kscore.utils import set_logger_level

import logging

set_logger_level(logging.WARNING)

Service 服务

  • 已支持大区 region_name

    region_name

    大区

    cn-beijing-6

    北京6区

    cn-shanghai-2

    上海2区

    cn-guangzhou-1

    广州1区

    cn-hongkong-2

    香港2区

    cn-taipei-1

    台北1区

    ap-singapore-1

    新加坡1区

    eu-east-1

    俄罗斯1区

    cn-beijing-fin

    北京金融

    cn-shanghai-fin

    上海金融

  • 已支持服务列表 service_name,具体方法与API的Action对应,如kec服务RunInstances对应为run_instances方法。 详情参考API手册

    service

    服务名

    iam

    身份与访问控制

    eip

    弹性IP

    bws

    共享带宽

    slb

    负载均衡

    kec

    云服务器

    epc

    云物理机

    kce

    容服

    tag

    标签服务

    slb

    负载均衡

    kcs

    REDIS

    vpc

    虚拟私有网络

    cdn

    内容分发网络

    monitor

    云监控

    offline

    视频转码

Method 方法

  • 常用方法

    • get_session

    参数 | 说明

    env_vars

    环境变量

    • create_client

    参数 | 说明

    service_name

    服务,必须参数,例:iam

    region_name=None

    大区,必须参数,全局服务可以为None

    api_version=None

    API 版本,默认使用最近版本

    use_ssl=True

    是否使用HTTPS,优先使用

    verify=None

    是否验证SSL证书

    endpoint_url=None

     

    ks_access_key_id=None

     

    ks_secret_access_key=None

     

    ks_session_token=None

     

Examples 示例

  • IAM
from kscore.session import get_session

if __name__ == "__main__":
    s = get_session()

    client = s.create_client("iam", use_ssl=False)

    users = client.list_users()
  • KEC
from kscore.session import get_session

if __name__ == "__main__":
    s = get_session()

    client = s.create_client("kec", "cn-beijing-6", use_ssl=False)

    client.[your method]()
  • MONITOR
from kscore.session import get_session

if __name__ == "__main__":
    s = get_session()

    client = s.create_client("monitor", "cn-beijing-5", use_ssl=True)

    m=client.get_metric_statistics(InstanceID="6f582c78-5d49-438e-bf2d-db4345daf503",Namespace="eip",MetricName="qos.bps_in",StartTime="2016-08-16T17:09:00Z",EndTime="2016-08-16T23:56:00Z",Period="600",Aggregate="Average")

    print json.dumps(m,sort_keys=True,indent=4)
  • OFFLINE
from kscore.session import get_session
import json

if __name__=="__main__":

    #初始化
    s = get_session()
    client = s.create_client("offline", "cn-beijing-6", use_ssl=False)

    #创建模板接口调用示例 : preset
    presetname = 'testpreset'
    description = 'just a demo'
    presetType = 'avop'
    param = {
       "preset": presetname,
       "description": description,
       "presettype": presetType,
       "param": {
           "f": "mp4",
           "AUDIO": {
               "acodec": "aac",
               "ar":"44100",
               "ab":"64k"
           },
           "VIDEO": {
               "vr": 25,
               "vb": "500k",
               "vcodec": "h264",
               "width": 640,
               "height": 360
           }
       }
    }
    res = client.preset(**param)
    print json.dumps(res)

    #获取模板信息接口调用示例 : get_preset_detail
    res = client.get_preset_detail(preset = presetname)
    print json.dumps(res)
  • CDN
from kscore.session import get_session

if __name__ == "__main__":
    # CDN API调用 详细示例位于 ./examples/cdn.py
    s = get_session()

    client = s.create_client("cdn", use_ssl=False)

    res = client.get_cdn_domains(PageSize=20,PageNumber=0,DomainStatus='online',CdnType='download')

    print res
  • 更多

BUG FIXED 问题修正

  • CERTIFICATE_VERIFY_FAILED
   requests.exceptions.SSLError: [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

+ 参考 `InsecurePlatformWarning <https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings>`__ 解决方法如下
   pip install requests[security]

+ 如 `build/temp.linux-x86_64-2.7/_openssl.c:433:30: fatal error: openssl/opensslv.h: No such file or directory` 解决方法如下
   yum install openssl-devel

+ 如 `build/temp.linux-x86_64-2.7/_openssl.c:12:24: fatal error: pyconfig.h: No such file or directory`解决方法如下
yum install python-devel

ksc-sdk-python's People

Contributors

786991884 avatar chenyw0525 avatar chrischengti avatar coderfromhebei avatar dl129 avatar jwp001 avatar liuyichen avatar maigoxin avatar mmwhd avatar mzjhe avatar omeyang avatar pangjlin avatar prettyntj avatar smartwang avatar sunxingbao avatar wcg49802693 avatar weizhixiong avatar x6doooo avatar xuyaming-ksc avatar xuyaming0800 avatar yangdongxu avatar yezihack avatar zhugelaing888 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

ksc-sdk-python's Issues

添加云物理机失败

创建云物理机参数

dddd = {'LineId': '5fc2595f-1bfd-481b-bf64-2d08f116d800',
                'SecurityGroupId.1': '5025f56axxxx', 'ChargeType': 'Daily',
                'SubnetId': '0ef2c6dcxxxxxx', 'AvailabilityZone': 'cn-beijing-6',
                'HostType': 'DB-I', 'ImageId': '3eecbe68-1bc6-45c0-88ed-8434ccb7b83b', 'NetworkInterfaceMode': 'bond4',
                'Password': '1521wjx7&'
}
client=session.create_client(service_name=ksc_service,region_name=ksc_region,ks_access_key_id=ACCESS_KEY,ks_secret_access_key=SECURITY_KEY)
epc_results=client.create_epc(**dddd)

执行以上脚本报错:

kscore.exceptions.ClientError: An error occurred (400001) when calling the CreateEpc operation: Price system-Invalid az param

克隆 sdk 源码调试失败

1.克隆源码并在源码目录下创建调试文件,提示错误。调试文件可以用 wheel 包正常使用

Traceback (most recent call last):
  File "/Users/kasumiyamoto/Documents/ksc-sdk-python/get_config.py", line 72, in <module>
    cluster = kce_cluster(ksc_service=input_service, ksc_region=ksc_regions[input_region])
  File "/Users/kasumiyamoto/Documents/ksc-sdk-python/get_config.py", line 27, in __init__
    self.kce_cluster = get_session().create_client(service_name=self.ksc_service,
  File "/Users/kasumiyamoto/Documents/ksc-sdk-python/kscore/session.py", line 840, in create_client
    client = client_creator.create_client(
  File "/Users/kasumiyamoto/Documents/ksc-sdk-python/kscore/client.py", line 65, in create_client
    client_args = self._get_client_args(customer_model, service_model, region_name, is_secure, endpoint_url,
  File "/Users/kasumiyamoto/Documents/ksc-sdk-python/kscore/client.py", line 217, in _get_client_args
    endpoint = endpoint_creator.create_endpoint(
  File "/Users/kasumiyamoto/Documents/ksc-sdk-python/kscore/endpoint.py", line 240, in create_endpoint
    raise ValueError("Invalid endpoint: %s" % endpoint_url)
ValueError: Invalid endpoint: http://kce."api.ksyun.com"

Raised exception when using refresh_caches in python3.6

OS: Fedora 23
Python: 3.6

# my code here
s = get_session()
c = s.create_client(
    "cdn",
    ks_access_key_id=settings.KSYUN_ACCESS_KEY_ID,
    ks_secret_access_key=settings.KSYUN_SECRET_ACCESS_KEY
)
               
datas = {
    keys: [
        {
             "Url": url,
        }
    ]
}
              
res = c.refresh_caches(**datas)

and then a exception occured

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/Work/django/rcms/utils/ksyun.py", line 34, in flush
    res = func(**datas)
  File "/usr/local/pyenv3/lib/python3.6/site-packages/kscore/client.py", line 252, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/usr/local/pyenv3/lib/python3.6/site-packages/kscore/client.py", line 521, in _make_api_call
    operation_model, request_dict)
  File "/usr/local/pyenv3/lib/python3.6/site-packages/kscore/endpoint.py", line 117, in make_request
    return self._send_request(request_dict, operation_model)
  File "/usr/local/pyenv3/lib/python3.6/site-packages/kscore/endpoint.py", line 146, in _send_request
    success_response, exception):
  File "/usr/local/pyenv3/lib/python3.6/site-packages/kscore/endpoint.py", line 219, in _needs_retry
    caught_exception=caught_exception)
  File "/usr/local/pyenv3/lib/python3.6/site-packages/kscore/hooks.py", line 226, in emit
    return self._emit(event_name, kwargs)
  File "/usr/local/pyenv3/lib/python3.6/site-packages/kscore/hooks.py", line 209, in _emit
    response = handler(**kwargs)
  File "/usr/local/pyenv3/lib/python3.6/site-packages/kscore/retryhandler.py", line 183, in __call__
    if self._checker(attempts, response, caught_exception):
  File "/usr/local/pyenv3/lib/python3.6/site-packages/kscore/retryhandler.py", line 250, in __call__
    caught_exception)
  File "/usr/local/pyenv3/lib/python3.6/site-packages/kscore/retryhandler.py", line 265, in _should_retry
    return self._checker(attempt_number, response, caught_exception)
  File "/usr/local/pyenv3/lib/python3.6/site-packages/kscore/retryhandler.py", line 313, in __call__
    caught_exception)
  File "/usr/local/pyenv3/lib/python3.6/site-packages/kscore/retryhandler.py", line 222, in __call__
    return self._check_caught_exception(attempt_number, caught_exception)
  File "/usr/local/pyenv3/lib/python3.6/site-packages/kscore/retryhandler.py", line 355, in _check_caught_exception
    raise caught_exception
  File "/usr/local/pyenv3/lib/python3.6/site-packages/kscore/endpoint.py", line 174, in _get_response
    proxies=self.proxies, timeout=self.timeout)
  File "/usr/local/pyenv3/lib/python3.6/site-packages/kscore/vendored/requests/sessions.py", line 573, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/pyenv3/lib/python3.6/site-packages/kscore/vendored/requests/adapters.py", line 370, in send
    timeout=timeout
  File "/usr/local/pyenv3/lib/python3.6/site-packages/kscore/vendored/requests/packages/urllib3/connectionpool.py", line 544, in urlopen
    body=body, headers=headers)
  File "/usr/local/pyenv3/lib/python3.6/site-packages/kscore/vendored/requests/packages/urllib3/connectionpool.py", line 349, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/pyenv3/lib/python3.6/http/client.py", line 1239, in request
    self._send_request(method, url, body, headers, encode_chunked)
TypeError: _send_request() takes 5 positional arguments but 6 were given

I watched your code, looks like you not overwrite _send_request right, because in http/client.py (python3.6)

def _send_request(self, method, url, body, headers, encode_chunked):

But in ksrequest.py

def _send_request(self, method, url, body, headers):

In python3.4 http/client.py

def _send_request(self, method, url, body, headers):

I hope you guys can make code compatible between 3.4 and 3.6, because your authorization document looks horrible for me, and I don't want to see them.

Confused by API method mapping

In REST API doc, the pattern of method name is: CAMEL, but SNAKE in Python SDK, unified pattern will more friendly for developers.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.