Metadata-Version: 2.4
Name: zy_aliyun_python_sdk_core
Version: 1.2.0
Summary: sample sdk for aliyun
Home-page: https://github.com/munan921/zy-aliyun-python-sdk
Author: munan921
Author-email: immndev@hotmail.com
License: MIT
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: certifi>=2019.6.16
Requires-Dist: chardet>=3.0.4
Requires-Dist: decorator>=4.4.0
Requires-Dist: idna>=2.8
Requires-Dist: requests>=2.22.0
Requires-Dist: retry>=0.9.2
Requires-Dist: urllib3>=1.25.3
Requires-Dist: xmltodict>=0.12.0
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: requires-dist
Dynamic: summary

# zy_aliyun_sdk_core

[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
[![PyPI version](https://img.shields.io/pypi/v/zy-aliyun-python-sdk-core.svg)](https://pypi.org/project/zy-aliyun-python-sdk-core/)

> 轻量级阿里云 SDK，简化官方 SDK 的繁琐调用方式，一个包搞定主流阿里云产品 API。

原项目：https://github.com/johntoms/aliyun-sdk 很久没维护了，历史项目有用到该项目，故在原作者的基础上重开分支维护。

## 安装

```bash
pip install zy-aliyun-python-sdk-core
```

## 功能特性

1. 覆盖 30+ 主流阿里云产品，统一调用方式。
2. 支持 AK 认证和 ECS 实例 RAM 角色（STS Token）认证。
3. 请求超时自动重试，最多 3 次，指数退避。
4. 支持 OSS RESTful API 调用。

**使用限制：**

- 该 SDK 适用于低频、低速场景，不适合高并发调用。详细限制请参考[阿里云官方文档](https://aliyun.com)。
- 需要区域化域名（如 ALB、NLB）的产品，调用时必须传入 `RegionId` 参数。
- 若需添加或更新 API 接口配置，请修改 `zy_aliyun_sdk_core/common.py` 中的 `PRODUCT_API_CONFIG_MAP`。

## 快速开始

### AK 认证（推荐）

```python
from zy_aliyun_sdk_core import client

ak = {
    "AccessKeyId": "your-access-key-id",
    "AccessKeySecret": "your-access-key-secret"
}
aliyun_client = client.AliyunClient(ak)

# 调用 ECS API
status_code, response = aliyun_client.common('ecs', Action='DescribeRegions')
print(status_code, response)
```

### ECS 实例 RAM 角色认证（STS Token）

在 ECS 实例上运行时，可自动获取临时凭证，无需配置 AK：

```python
from zy_aliyun_sdk_core import client

# AK 留空，自动通过 ECS 元数据服务获取 STS Token
config = {
    "AccessKeyId": None,
    "AccessKeySecret": None,
    "RoleName": "YourRamRoleName"  # 可选，默认为 ZhuyunFullReadOnlyAccess
}
aliyun_client = client.AliyunClient(config)
status_code, response = aliyun_client.common('ecs', Action='DescribeRegions')
```

### 需要 RegionId 的产品

ALB、NLB、ARMS、EDAS、Elasticsearch 等产品需要指定区域：

```python
# 调用 ALB API（需要 RegionId）
status_code, response = aliyun_client.common(
    'alb',
    RegionId='cn-hangzhou',
    Action='ListLoadBalancers'
)
```

### OSS 操作

```python
# 列出所有 Bucket
status_code, response = aliyun_client.oss('GET', **{"max-keys": 1000})

# 获取 Bucket ACL
status_code, response = aliyun_client.oss(
    'GET',
    BucketName='my-bucket',
    Query={'acl': None}
)
```

## 支持的产品列表

| 产品名称 | 简称 | API 版本 | 请求地址 | 端口 | 协议 |
|---|---|---|---|---|---|
| 云服务器 | ecs | 2014-05-26 | ecs.aliyuncs.com | 443 | https |
| 阿里云关系型数据库 | rds | 2014-08-15 | rds.aliyuncs.com | 443 | https |
| 分布式关系型数据库 | drds | 2015-04-13 | drds.aliyuncs.com | 443 | https |
| PolarDB | polardb | 2017-08-01 | polardb.aliyuncs.com | 443 | https |
| 负载均衡 | slb | 2014-05-15 | slb.aliyuncs.com | 443 | https |
| 应用负载均衡 | alb | 2020-06-16 | alb.[RegionId].aliyuncs.com | 443 | https |
| 网络负载均衡 | nlb | 2022-04-30 | nlb.[RegionId].aliyuncs.com | 443 | https |
| 弹性伸缩 | ess | 2014-08-28 | ess.aliyuncs.com | 443 | https |
| VPC | vpc | 2016-04-28 | vpc.aliyuncs.com | 443 | https |
| 云企业网 | cbn | 2017-09-12 | cbn.aliyuncs.com | 443 | https |
| 智能接入网关 | smartag | 2018-03-13 | smartag.cn-shanghai.aliyuncs.com | 443 | https |
| CDN | cdn | 2018-05-10 | cdn.aliyuncs.com | 443 | https |
| DCDN | dcdn | 2018-01-15 | dcdn.aliyuncs.com | 443 | https |
| 云数据库 Redis 版 | redis | 2015-01-01 | r-kvstore.aliyuncs.com | 443 | https |
| 云数据库 MongoDB 版 | mongodb | 2015-12-01 | mongodb.aliyuncs.com | 443 | https |
| 数据传输服务 DTS | dts | 2020-01-01 | dts.aliyuncs.com | 443 | https |
| Elasticsearch | elasticsearch | 2017-06-13 | elasticsearch.[RegionId].aliyuncs.com | 443 | https |
| 媒体处理 | mts | 2014-06-18 | mts.aliyuncs.com | 443 | https |
| 云监控 | cms | 2019-01-01 | metrics.aliyuncs.com | 443 | https |
| 应用实时监控 ARMS | arms | 2019-08-08 | arms.[RegionId].aliyuncs.com | 443 | https |
| 企业级分布式应用 EDAS | edas | 2017-08-01 | edas.[RegionId].aliyuncs.com | 443 | https |
| 访问控制 RAM | ram | 2015-05-01 | ram.aliyuncs.com | 443 | https |
| 安全令牌 STS | sts | 2015-04-01 | sts.aliyuncs.com | 443 | https |
| 短信服务 | dysms | 2017-05-25 | dysmsapi.aliyuncs.com | 443 | https |
| 语音服务 | dyvms | 2017-05-25 | dyvmsapi.aliyuncs.com | 443 | https |
| 消息接收 | dybase | 2017-05-25 | dybaseapi.aliyuncs.com | 443 | https |
| 阿里云云盾 | yundun | 2014-09-24 | yundun.aliyuncs.com | 443 | https |
| Web 应用防火墙 | waf | 2018-01-17 | wafopenapi.cn-hangzhou.aliyuncs.com | 443 | https |
| 漏洞扫描 | avds | 2017-11-29 | avds.aliyuncs.com | 443 | https |
| DDoS 防护（旧版） | ddospro | 2017-07-25 | ddospro.cn-hangzhou.aliyuncs.com | 443 | https |
| DDoS 高防 | ddoscoo | 2017-12-28 | ddoscoo.cn-hangzhou.aliyuncs.com | 443 | https |
| 域名 | domain | 2018-01-29 | domain.aliyuncs.com | 443 | https |
| 交易与账单管理 | business | 2017-12-14 | business.aliyuncs.com | 443 | https |

> **注意：** 请求地址中包含 `[RegionId]` 的产品，调用时必须传入 `RegionId` 参数。

## License

[MIT](LICENSE)
