Todos os produtos
Search
Central de documentação

Alibaba Cloud SDK:Integrar o SDK

Última atualização: Jun 28, 2026

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

  1. Faça logon no SDK Center e selecione o produto cujas APIs deseja chamar, como o Short Message Service (SMS).

  2. 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).image

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

Importante

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 cmd e clique em OK (ou pressione Enter) para abrir o prompt de comando. Execute os comandos echo %ALIBABA_CLOUD_ACCESS_KEY_ID% e echo %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 /M

    O parâmetro /M indica 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 cmd e clique em OK (ou pressione Enter) para abrir o prompt de comando. Execute os comandos echo %ALIBABA_CLOUD_ACCESS_KEY_ID% e echo %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.

Importante
  • 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.

Nota

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.

Nota

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.

Importante

Sempre trate exceções adequadamente — propague, registre ou recupere — para garantir a estabilidade do sistema.

Clique para visualize o exemplo de código completo

Exemplos de chamada da API SendMessageToGlobe

import os
import sys
from typing import List
from alibabacloud_dysmsapi20180501.client import Client as Dysmsapi20180501Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dysmsapi20180501 import models as dysmsapi_20180501_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient

class Sample:
    def __init__(self):
        pass

    @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)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        # 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>'
        )
        # Create runtime parameters.
        runtime = util_models.RuntimeOptions()
        try:
            # Send a request
            client.send_message_to_globe_with_options(send_message_to_globe_request, runtime)
        except Exception as error:
            # print error message
            print(error.message)
            # Please click on the link below for diagnosis.
            print(error.data.get("Recommend"))
            UtilClient.assert_as_string(error.message)

if __name__ == '__main__':
    Sample.main(sys.argv[1:])

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):

Nota

O sistema limpa periodicamente arquivos temporários armazenados no Alibaba Cloud OSS.

  1. 1. Inicializar o cliente de requisição

    Defina tanto o region_id quanto o endpoint do produto. O region_id determina a região do OSS para armazenamento temporário de arquivos. Se o region_id nã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)
  2. 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,
         )
  3. 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)

Clique para visualize o exemplo de código completo

import os

from alibabacloud_facebody20191230 import models as facebody_20191230_models
from alibabacloud_facebody20191230.client import Client as facebody20191230Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_util import models as util_models

class Sample:
    def __init__(self):
        pass

    @staticmethod
    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']
        )
        config.region_id = 'cn-shanghai'
        return facebody20191230Client(config)

    @staticmethod
    def main() -> None:
        client = Sample.create_client()
        # Open the file as a binary stream.
        with open('<FILE_PATH>', "rb") as f:  # Replace <FILE_PATH> with your file path.
            # Set request parameters.
            detect_body_count_advance_request = facebody_20191230_models.DetectBodyCountAdvanceRequest(
                image_urlobject=f,
            )
            runtime = util_models.RuntimeOptions()
            try:
                # Send the request.
                res = client.detect_body_count_advance(detect_body_count_advance_request, runtime)
                print(res)
            except Exception as error:
                # This is for printing and demonstration purposes only. Handle exceptions with care and do not ignore them in your project.
                print(error)

if __name__ == '__main__':
    Sample.main()

FAQ

  1. Uma chamada de OpenAPI retorna o erro "You are not authorized to perform this operation".

    Causa e solução

    Causa: O usuário RAM associado ao seu AccessKey não tem permissão para chamar esta API.

    Solução: Conceda as permissões necessárias da OpenAPI ao usuário RAM. Consulte Gerencie permissões de usuário RAM.

    Por exemplo, se a chamada da operação ou SendMessageToGlobe retornar esse erro, crie uma política de permissão personalizada como a seguinte e anexe-a ao usuário RAM.

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "dysms:SendMessageToGlobe",
          "Resource": "*"
        }
      ]
    }
  2. Uma chamada de OpenAPI retorna um "SDK.EndpointResolvingError" relacionado ao endpoint.

    Causa e solução

    Causa: Esta API não suporta o endpoint especificado.

    Solução: Atualize o endpoint para um valor suportado e tente novamente. Consulte Configuração de endpoint.

  3. Uma chamada de OpenAPI retorna um erro AttributeError: 'AttributeError' object has no attribute 'message' ou KeyError: 'ALIBABA_CLOUD_ACCESS_KEY_ID' relacionado ao AccessKey.

    Causa e solução

    Causa: Seu AccessKey não foi passado corretamente.

    Solução: Verifique se o AccessKey está sendo passado corretamente ao inicializar o cliente. os.environ("XXX") lê o valor de XXX das variáveis de ambiente.

Soluções adicionais para erros do SDK: FAQ.