### Install Alibaba Cloud Python SDK Core and Service Packages Source: https://context7.com/aliyun/aliyun-openapi-python-sdk/llms.txt Install the core library and any required service-specific packages using pip. ```bash pip install aliyun-python-sdk-core # required for every use case pip install aliyun-python-sdk-ecs # Elastic Compute Service pip install aliyun-python-sdk-rds # Relational Database Service pip install aliyun-python-sdk-sts # Security Token Service pip install aliyun-python-sdk-dysmsapi # SMS / messaging pip install aliyun-python-sdk-cdn # Content Delivery Network ``` -------------------------------- ### Install Aliyun Python SDK for ECS Source: https://github.com/aliyun/aliyun-openapi-python-sdk/blob/master/docs/1-Installation-EN.md Use pip to install the Aliyun Python SDK for Elastic Compute Service (ECS). This command also installs the core SDK if not already present. ```bash pip install aliyun-python-sdk-ecs ``` -------------------------------- ### Install Alibaba Cloud Python SDK Core and ECS Module Source: https://github.com/aliyun/aliyun-openapi-python-sdk/blob/master/README.md Install the core library and the ECS management SDK using pip. Ensure you have Python 3.7 or higher. ```bash pip install aliyun-python-sdk-core # Install the Alibaba Cloud SDK core library pip install aliyun-python-sdk-ecs # Install the ECS management SDK ``` -------------------------------- ### HTTP DEBUG Example Source: https://github.com/aliyun/aliyun-openapi-python-sdk/blob/master/README.md To enable HTTP DEBUG, set the DEBUG environment variable to 'sdk' or 'SDK'. This will display detailed request and response information for debugging purposes. ```shell > GET /databases?RegionId=cn-hangzhou HTTP/1.1 > Host : ads.cn-hangzhou.aliyuncs.com > User-Agent : AlibabaCloud (Windows 10;AMD64) Python/3.7.1 Core/2.13.1 python-requests/2.18.1 > accept-encoding : * > Accept : application/json > Connection : keep-alive > x-sdk-invoke-type : normal > x-acs-version : 2019-01-22 > x-acs-region-id : cn-hangzhou > Date : Thu, 21 Feb 2019 08:00:50 GMT > x-acs-signature-method : HMAC-SHA1 > x-acs-signature-version : 1.0 > Authorization : acs ... > x-sdk-client : python/2.0.0 < HTTP/1.1 503 SERVICE_UNAVAILABLE < Date : Thu, 21 Feb 2019 08:00:50 GMT < Content-Type : application/json; charset=UTF-8 < Content-Length : 297 < Connection : keep-alive < Access-Control-Allow-Origin : * < Access-Control-Allow-Methods : POST, GET, OPTIONS < Access-Control-Allow-Headers : X-Requested-With, X-Sequence, _aop_secret, _aop_signature < Access-Control-Max-Age : 172800 < x-acs-request-id : 670F3D09-F8E7-4144-83C3-B56C35DA35ED < Server : Jetty(7.2.2.v20101205) ``` -------------------------------- ### Create AcsClient Using Environment Variables Source: https://context7.com/aliyun/aliyun-openapi-python-sdk/llms.txt Initialize an AcsClient without explicit credentials; it will automatically read them from environment variables. This example also demonstrates making an API call to DescribeInstances. ```python from aliyunsdkcore.client import AcsClient from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest import json # No credentials in code — resolved from environment variables client = AcsClient(region_id='cn-hangzhou') request = DescribeInstancesRequest() request.set_PageSize(5) response_bytes = client.do_action_with_exception(request) result = json.loads(response_bytes) print(result['TotalCount']) # e.g. 12 print(result['Instances']['Instance'][0]['InstanceId']) # e.g. 'i-bp1XXXX' ``` -------------------------------- ### Generic API Calls with CommonRequest Source: https://context7.com/aliyun/aliyun-openapi-python-sdk/llms.txt Use `CommonRequest` to call any Alibaba Cloud API without installing a service-specific SDK package. Specify domain, version, action, and parameters manually. This example calls the ECS DescribeInstances API. ```python from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest import json client = AcsClient('', '', 'cn-hangzhou') # Call the ECS DescribeInstances API using CommonRequest request = CommonRequest() request.set_domain('ecs.cn-hangzhou.aliyuncs.com') request.set_version('2014-05-26') request.set_action_name('DescribeInstances') request.set_method('POST') request.add_query_param('RegionId', 'cn-hangzhou') request.add_query_param('PageSize', 5) response = json.loads(client.do_action_with_exception(request)) print(response['TotalCount']) ``` -------------------------------- ### Create and Send Aliyun API Request Source: https://github.com/aliyun/aliyun-openapi-python-sdk/blob/master/README.md Demonstrates how to create a request object, set parameters like PageSize, and send the API request using the client. Ensure the client is initialized with Region ID, Access Key ID, and Access Key Secret. ```python from aliyunsdkcore.client import AcsClient from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest # Create a request and set parameters request = DescribeInstancesRequest() request.set_PageSize(10) # Send the API request and print the response response = client.do_action_with_exception(request) print response ``` -------------------------------- ### ROA-style Request Example Source: https://context7.com/aliyun/aliyun-openapi-python-sdk/llms.txt Demonstrates how to make a ROA-style (REST) API call using CommonRequest. ```APIDOC ## ROA-style Request ### Description This example shows how to configure and execute a ROA-style request using the `CommonRequest` class. ### Method ```python from aliyunsdkcore.request import CommonRequest import json roa_request = CommonRequest() roa_request.set_domain('cs.cn-hangzhou.aliyuncs.com') roa_request.set_version('2015-12-15') roa_request.set_uri_pattern('/clusters') roa_request.set_method('GET') # Assuming 'client' is an initialized AcsClient instance # clusters = json.loads(client.do_action_with_exception(roa_request)) # print(clusters) ``` ``` -------------------------------- ### AcsClient Initialization with Access Key Source: https://context7.com/aliyun/aliyun-openapi-python-sdk/llms.txt Demonstrates how to create an AcsClient instance using Access Key ID and Secret, specifying region and optional configurations like retry, timeouts, and pool size. ```APIDOC ## AcsClient — Creating a Client with Access Key `AcsClient` is the central object that holds credentials, region, retry policy, timeout settings, and the HTTP session pool. All API calls are dispatched through it. ```python from aliyunsdkcore.client import AcsClient # Basic access key / secret initialization client = AcsClient( ak='', secret='', region_id='cn-hangzhou', # default region for all requests auto_retry=True, # enable automatic retry (default True) max_retry_time=3, # maximum retry attempts connect_timeout=5, # TCP connect timeout in seconds timeout=10, # HTTP read timeout in seconds pool_size=10 # connection pool size (increase for multithreaded use) ) # Inspect client properties print(client.get_region_id()) # 'cn-hangzhou' print(client.get_access_key()) # '' ``` ``` -------------------------------- ### AssumeRole API Usage Source: https://context7.com/aliyun/aliyun-openapi-python-sdk/llms.txt This example demonstrates how to use the AssumeRoleRequest from the aliyun-python-sdk-sts to obtain temporary credentials by assuming an IAM role. ```APIDOC ## AssumeRole API Usage ### Description This example demonstrates how to use the AssumeRoleRequest from the aliyun-python-sdk-sts to obtain temporary credentials by assuming an IAM role. ### Method ```python AssumeRoleRequest ``` ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example ```python from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException, ServerException from aliyunsdksts.request.v20150401.AssumeRoleRequest import AssumeRoleRequest import json client = AcsClient('', '', 'cn-hangzhou') request = AssumeRoleRequest() request.set_RoleArn('acs:ram::123456789012345678:role/cross-account-read') request.set_RoleSessionName('my-session-20240115') request.set_DurationSeconds(3600) # token validity: 1 hour (900–43200 seconds) request.set_Policy(json.dumps({ "Version": "1", "Statement": [{ "Effect": "Allow", "Action": "ecs:Describe*", "Resource": "*" }] })) try: response = json.loads(client.do_action_with_exception(request)) creds = response['Credentials'] print(f"AccessKeyId: {creds['AccessKeyId']}") print(f"AccessKeySecret: {creds['AccessKeySecret']}") print(f"SecurityToken: {creds['SecurityToken'][:30]}...") print(f"Expiration: {creds['Expiration']}") except ServerException as e: print(f"STS error [{e.get_error_code()}]: {e.get_error_msg()}") ``` ### Response #### Success Response (200) ```json { "Credentials": { "AccessKeyId": "string", "AccessKeySecret": "string", "SecurityToken": "string", "Expiration": "string" } } ``` #### Response Example ```json { "Credentials": { "AccessKeyId": "STS.NXXXXXXXxxxxxxxx", "AccessKeySecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "SecurityToken": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...", "Expiration": "2024-01-15T11:23:45Z" } } ``` ``` -------------------------------- ### Create AcsClient with Access Key Credentials Source: https://context7.com/aliyun/aliyun-openapi-python-sdk/llms.txt Initialize an AcsClient with basic access key ID and secret. Configure region, retry policy, and timeouts. Inspect client properties after creation. ```python from aliyunsdkcore.client import AcsClient # Basic access key / secret initialization client = AcsClient( ak='', secret='', region_id='cn-hangzhou', # default region for all requests auto_retry=True, # enable automatic retry (default True) max_retry_time=3, # maximum retry attempts connect_timeout=5, # TCP connect timeout in seconds timeout=10, # HTTP read timeout in seconds pool_size=10 # connection pool size (increase for multithreaded use) ) # Inspect client properties print(client.get_region_id()) # 'cn-hangzhou' print(client.get_access_key()) # '' ``` -------------------------------- ### Send SMS with dysmsapi Source: https://context7.com/aliyun/aliyun-openapi-python-sdk/llms.txt Example of sending a templated SMS message using the aliyun-python-sdk-dysmsapi. Ensure you have a pre-approved SMS signature and template code. ```python from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException, ServerException from aliyunsdkdysmsapi.request.v20170525.SendSmsRequest import SendSmsRequest import json client = AcsClient('', '', 'cn-hangzhou') request = SendSmsRequest() request.set_PhoneNumbers('1381234XXXX') # recipient phone number request.set_SignName('AliyunSDKTest') # pre-approved SMS signature request.set_TemplateCode('SMS_XXXXXXXX') # pre-approved template code request.set_TemplateParam('{"code":"987654"}') # template variable values (JSON string) try: response = json.loads(client.do_action_with_exception(request)) if response['Code'] == 'OK': print(f"SMS sent. BizId: {response['BizId']}") # SMS sent. BizId: 197813456080500XXXXXX else: print(f"Failed: {response['Code']} — {response['Message']}") except (ClientException, ServerException) as e: print(f"Error: {e}") ``` -------------------------------- ### Initialize Alibaba Cloud Python SDK Client Source: https://github.com/aliyun/aliyun-openapi-python-sdk/blob/master/README.md Create an AcsClient instance with your Access Key ID, Access Key Secret, and region ID. This client is used to interact with Alibaba Cloud services. ```python # -*- coding: utf8 -*- from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkecs.request.v20140526 import DescribeInstancesRequest from aliyunsdkecs.request.v20140526 import StopInstanceRequest # Create an AcsClient instance client = AcsClient( "", "", "" ) ``` -------------------------------- ### Create AcsClient with STS Token Credentials Source: https://context7.com/aliyun/aliyun-openapi-python-sdk/llms.txt Initialize an AcsClient using temporary STS token credentials for short-lived access. This example also demonstrates making an API call to DescribeRegions. ```python from aliyunsdkcore.client import AcsClient from aliyunsdkcore.auth.credentials import StsTokenCredential from aliyunsdkecs.request.v20140526.DescribeRegionsRequest import DescribeRegionsRequest import json cred = StsTokenCredential( sts_access_key_id='STS.XXXXXXXX', sts_access_key_secret='XXXXXXXXXXXXXXXXXXXXXXXX', sts_token='CAIS......' ) client = AcsClient(region_id='cn-hangzhou', credential=cred) request = DescribeRegionsRequest() response = json.loads(client.do_action_with_exception(request)) for region in response['Regions']['Region']: print(region['RegionId'], region['LocalName']) # cn-hangzhou 华东1(杭州) # cn-shanghai 华东2(上海) ```