Integre o Alibaba Cloud SDK ao seu projeto para simplificar chamadas à OpenAPI e reduzir custos de manutenção. A integração envolve três etapas: importar o SDK, definir credenciais de acesso e chamar a API.
Requisitos de ambiente
Python 3.7 ou superior.
Importar o SDK
Faça logon no SDK Center e selecione o produto cujas APIs deseja chamar, como o Short Message Service (SMS).
Na página Installation. Em All Languages, escolha Python. Na aba Quick Start, localize o método de instalação do SDK para o Short Message Service (SMS).

Definir credenciais de acesso
Chamadas à OpenAPI do Alibaba Cloud exigem credenciais de acesso, geralmente um AccessKey (AK) ou um Security Token Service (STS) token. Armazene as credenciais em variáveis de ambiente para evitar vazamentos. Consulte Uso seguro de credenciais de acesso. O exemplo a seguir utiliza as variáveis de ambiente ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET:
Configure no Linux e macOS
Configure variáveis de ambiente com o comando export
Uma variável de ambiente temporária definida com o comando export vale apenas para a sessão atual. O sistema limpa a variável ao encerrar a sessão. Para retenção de longo prazo (LTR), adicione o comando export ao arquivo de configuração de inicialização do sistema operacional.
-
Configure o AccessKey ID e pressione Enter.
# Replace yourAccessKeyID with your AccessKey ID. export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyID -
Configure o AccessKey secret e pressione Enter.
# Replace yourAccessKeySecret with your AccessKey secret. export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecret -
Verifique a configuração.
Execute o comando
echo $ALIBABA_CLOUD_ACCESS_KEY_ID. Se o retorno for o AccessKey ID correto, a configuração teve êxito.
Configure no Windows
Usar a interface gráfica do usuário (GUI)
-
Procedimento
As etapas a seguir descrevem como defina variáveis de ambiente pela GUI no Windows 10.
Na área de trabalho, clique em This PC e escolha Properties > Advanced system settings > Environment Variables > New em System variables ou User variables. Conclua a configuração em seguida.
Variável
Valor de exemplo
AccessKey ID
Nome da variável: ALIBABA_CLOUD_ACCESS_KEY_ID
Valor da variável: yourAccessKeyID
AccessKey Secret
Nome da variável: ALIBABA_CLOUD_ACCESS_KEY_SECRET
Valor da variável: yourAccessKeySecret
-
Testar a configuração
Clique em Start (ou use o atalho Win+R), clique em Run, insira
cmde clique em OK (ou pressione Enter) para abrir o prompt de comando. Execute os comandosecho %ALIBABA_CLOUD_ACCESS_KEY_ID%eecho %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Se o retorno for o AccessKey correto, a configuração teve êxito.
Usar o prompt de comando (CMD)
-
Procedimento
Abra o prompt de comando como administrador e execute os comandos a seguir para adicionar novas variáveis de ambiente ao sistema.
setx ALIBABA_CLOUD_ACCESS_KEY_ID yourAccessKeyID /M setx ALIBABA_CLOUD_ACCESS_KEY_SECRET yourAccessKeySecret /MO parâmetro
/Mindica uma variável de ambiente do sistema. Omita esse parâmetro ao defina uma variável de ambiente de usuário. -
Testar a configuração
Clique em Start (ou use o atalho Win+R), clique em Run, insira
cmde clique em OK (ou pressione Enter) para abrir o prompt de comando. Execute os comandosecho %ALIBABA_CLOUD_ACCESS_KEY_ID%eecho %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Se o retorno for o AccessKey correto, a configuração teve êxito.
Usar o Windows PowerShell
No PowerShell, defina novas variáveis de ambiente válidas para todas as novas sessões:
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::User)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::User)
Para defina variáveis de ambiente para todos os usuários, são necessárias permissões administrativas:
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::Machine)
Defina variáveis de ambiente temporárias, válidas apenas para a sessão atual:
$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "yourAccessKeyID"
$env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "yourAccessKeySecret"
No PowerShell, execute os comandos Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID e Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET. Se o retorno for o AccessKey correto, a configuração teve êxito.
Usar o SDK
O exemplo a seguir chama as APIs e SendMessageToGlobe do Short Message Service (SMS). Referência da API: SendMessageToGlobe — , SendMessageToGlobe.
1. Inicializar o cliente de requisição
Um cliente envia todas as requisições de API. Inicialize-o antes de chamar qualquer API. Este exemplo usa um AccessKey. Outros métodos de inicialização estão descritos em Gerencie credenciais de acesso.
Objetos de cliente, como instâncias de ou Dysmsapi20180501Client, são thread-safe e permitem compartilhamento entre threads.
Evite crie objetos de cliente repetidamente. Utilize o padrão singleton para manter uma única instância de cliente por conjunto de credenciais e endpoint durante todo o ciclo de vida da aplicação.
@staticmethod
def create_client() -> Dysmsapi20180501Client:
config = open_api_models.Config(
# Required, please ensure that the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID is set.,
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
# Required, please ensure that the environment variables ALIBABA_CLOUD_ACCESS_KEY_SECRET is set.,
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
)
# See https://api.alibabacloud.com/product/Dysmsapi.
config.endpoint = f'dysmsapi.aliyuncs.com'
return Dysmsapi20180501Client(config)
2. Crie um objeto de requisição
Passe os parâmetros pelo objeto de requisição do SDK, denominado <API operation name>Request (por exemplo, SendSmsRequest). Detalhes dos parâmetros: , SendMessageToGlobe.
APIs sem parâmetros de requisição, como DescribeCdnSubList, dispensam um objeto de requisição.
# Create request object and set required input parameters
send_message_to_globe_request = dysmsapi_20180501_models.SendMessageToGlobeRequest(
# Please replace with the actual recipient number.
to='<YOUR_NUMBER>',
# Please replace with the actual SMS content.
message='<YOUR_MESSAGE>'
)
3. Enviar a requisição
Chame a API usando <api_name>_with_options, onde <api_name> é o nome da OpenAPI em snake_case. Essa função recebe o objeto de requisição e um objeto de opções de runtime para configurações de timeout e proxy. Consulte Configurações Avançadas.
Para APIs sem parâmetros de requisição, como DescribeCdnSubList, passe apenas as opções de runtime.
# Create runtime parameters.
runtime = util_models.RuntimeOptions()
client = create_client()
# Send a request.
client.send_message_to_globe_with_options(send_message_to_globe_request, runtime)
4. Tratar exceções
O SDK Python V2.0 classifica exceções em dois tipos principais: TeaUnretryableException e TeaException.
TeaUnretryableException: Lançada após o esgotamento de todas as tentativas de nova execução devido a um problema de rede.
TeaException: Lançada para erros no lado do serviço.
Consulte Tratamento de exceções.
Sempre trate exceções adequadamente — propague, registre ou recupere — para garantir a estabilidade do sistema.
Clique para visualize o exemplo de código completo
Cenário especial: Configure a API Advance para upload de arquivos
Alguns produtos em nuvem (como Image Search e Visual Intelligence API) não suportam upload direto de arquivos via OpenAPI padrão. Use a API Advance para passar um fluxo de arquivo. O sistema armazena o arquivo temporariamente no OSS (região padrão: cn-shanghai) e o produto o lê em seguida. O exemplo a seguir utiliza a API DetectBodyCount do Alibaba Cloud Visual Intelligence API (Face and Body):
O sistema limpa periodicamente arquivos temporários armazenados no Alibaba Cloud OSS.
-
1. Inicializar o cliente de requisição
Defina tanto o
region_idquanto oendpointdo produto. Oregion_iddetermina a região do OSS para armazenamento temporário de arquivos. Se oregion_idnão corresponder à região do produto, poderão ocorrer timeouts.def create_client() -> facebody20191230Client: config = open_api_models.Config( # Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set in your code execution environment. access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'], # Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set in your code execution environment. access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] ) # The endpoint and regionId must be set to the same region. config.region_id = 'cn-shanghai' config.endpoint = 'facebody.cn-shanghai.aliyuncs.com' return facebody20191230Client(config) -
Crie um objeto de requisição
Crie um objeto <OpenAPIName>AdvanceRequest e passe o fluxo de arquivo como
ImageURLObject.# Open the file as a binary stream. with open('<FILE_PATH>', "rb") as f: # Replace with your file path. # Set request parameters. detect_body_count_advance_request = facebody_20191230_models.DetectBodyCountAdvanceRequest( image_urlobject = f, ) -
Enviar uma requisição
Chame <apiName>Advance para enviar a requisição, onde
<apiName>é o nome da OpenAPI em lower camelCase.# Runtime configuration. runtime = util_models.RuntimeOptions() client = create_client() # Send the request. res = client.detect_body_count_advance(detect_body_count_advance_request, runtime)
FAQ
-
Uma chamada de OpenAPI retorna o erro "You are not authorized to perform this operation".
-
Uma chamada de OpenAPI retorna um "SDK.EndpointResolvingError" relacionado ao endpoint.
-
Uma chamada de OpenAPI retorna um erro
AttributeError: 'AttributeError' object has no attribute 'message'ouKeyError: 'ALIBABA_CLOUD_ACCESS_KEY_ID'relacionado ao AccessKey.
Soluções adicionais para erros do SDK: FAQ.