Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud SDK:SDK Entegrasyonu

Son Güncelleme:Oct 07, 2026

Alibaba Cloud SDK, uygulamanızdan OpenAPI işlemlerini çağırırken geliştirmeyi ve özellik entegrasyonunu basitleştirir. Bu konuda SDK kurulumu, erişim kimlik bilgilerinin yapılandırılması ve SDK kullanımı dahil olmak üzere eksiksiz entegrasyon akışı açıklanmaktadır. Ayrıca dosya yüklemeleri için Advance API ve sıkça sorulan sorular ele alınmaktadır.

Önkoşullar

  • Python — Python 3.7 veya sonraki bir sürüm.

  • AccessKey çifti — Alibaba Cloud OpenAPI çağrıları yapmak için bir AccessKey çifti gereklidir. AccessKey çiftiyle ilişkili Resource Access Management (RAM) kullanıcısının hedef API işlemlerini çağırma izinlerine sahip olması gerekir. Aksi takdirde çağrılar "You are not authorized to perform this operation" hatasıyla başarısız olur.

  • SDK paketleri — Bu konudaki ana örnekler alibabacloud_dysmsapi20180501, alibabacloud_tea_openapi ve alibabacloud_tea_util paketlerini gerektirir.

SDK Kurulumu

SDK Center, her ürün için SDK kurulum yöntemini sağlar. SDK'yı edinmek ve kurmak için:

  1. SDK Center adresine gidin.

  2. API'lerini çağırmak istediğiniz ürünü seçin; örneğin Short Message Service (SMS).

  3. Installation sayfasında SDK Generation için ve All Languages için Python seçeneğini belirleyin.

  4. Getting Started sekmesinde Short Message Service (SMS) için SDK kurulum yöntemini bulun ve SDK'yı yükleyin.

Erişim Kimlik Bilgilerini Yapılandırma

Alibaba Cloud OpenAPI çağrıları genellikle erişim kimlik bilgileri gerektirir. Yaygın kimlik bilgisi türleri AccessKey (AK) ve Security Token Service (STS) belirteçleridir. Kimlik bilgilerinin sızmasını önlemek amacıyla bunları ortam değişkenlerinde saklamak yaygın bir uygulamadır. Güvenlik en iyi uygulamaları hakkında daha fazla bilgi için bkz. Erişim kimlik bilgilerinin güvenli kullanımı.

Bu konuda örnek olarak bir AccessKey çifti kullanılmaktadır. Aşağıdaki örnekte ALIBABA_CLOUD_ACCESS_KEY_ID ve ALIBABA_CLOUD_ACCESS_KEY_SECRET ortam değişkenleri kullanılır:

Linux ve macOS'ta Yapılandırma

Linux ve macOS'ta Ortam Değişkenlerinde Alibaba Cloud AccessKey Ayarlama

Bu bölümde örnek olarak ALIBABA_CLOUD_ACCESS_KEY_ID ve ALIBABA_CLOUD_ACCESS_KEY_SECRET ortam değişkenleri kullanılmaktadır. İhtiyaçınıza göre değişken adlarını değiştirebilirsiniz; örneğin OSS_ACCESS_KEY_ID ve OSS_ACCESS_KEY_SECRET.

Ortam değişkenlerini export komutunu kullanarak yapılandırın:

Önemli

Export komutuyla ayarlanan geçici bir ortam değişkeni yalnızca geçerli oturum için geçerlidir. Oturum sonlandığında değişken temizlenir. Uzun süreli saklama (LTR) için export komutunu işletim sisteminizin başlangıç yapılandırma dosyasına ekleyin.

  • AccessKey ID değerini yapılandırın ve Enter tuşuna basın.

    # Replace yourAccessKeyID with your AccessKey ID.
    export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyID
  • AccessKey secret değerini yapılandırın ve Enter tuşuna basın.

    # Replace yourAccessKeySecret with your AccessKey secret.
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecret
  • Yapılandırmayı doğrulayın.

    echo $ALIBABA_CLOUD_ACCESS_KEY_ID komutunu çalıştırın. Komut doğru AccessKey ID değerini döndürürse yapılandırma başarılıdır.

Windows'ta Yapılandırma

Windows'ta Ortam Değişkenlerinde Alibaba Cloud AccessKey Ayarlama

Bu bölümde örnek olarak ALIBABA_CLOUD_ACCESS_KEY_ID ve ALIBABA_CLOUD_ACCESS_KEY_SECRET ortam değişkenleri kullanılmaktadır. İhtiyaçınıza göre değişken adlarını değiştirebilirsiniz; örneğin OSS_ACCESS_KEY_ID ve OSS_ACCESS_KEY_SECRET.

Grafiksel Kullanıcı Arabirimini (GUI) Kullanma

  • Yordam

    Aşağıdaki adımlarda Windows 10'da GUI kullanılarak ortam değişkenlerinin nasıl ayarlanacağı açıklanmaktadır.

    Masaüstünüzde This PC öğesine sağ tıklayın ve Properties > Advanced system settings > Environment Variables > New seçeneklerini System variables veya User variables altında seçin. Ardından yapılandırmayı tamamlayın.

    Değişken

    Örnek değer

    AccessKey ID

    • Değişken adı: ALIBABA_CLOUD_ACCESS_KEY_ID

    • Değişken değeri: yourAccessKeyID

    AccessKey secret

    • Değişken adı: ALIBABA_CLOUD_ACCESS_KEY_SECRET

    • Değişken değeri: yourAccessKeySecret

  • Yapılandırmayı test etme

    Start öğesine tıklayın (veya Win+R klavye kısayolunu kullanın), Run seçeneğine tıklayın, cmd girin ve ardından komut istemini açmak için OK seçeneğine tıklayın (veya Enter tuşuna basın). echo %ALIBABA_CLOUD_ACCESS_KEY_ID% ve echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET% komutlarını çalıştırın. Komutlar doğru AccessKey değerini döndürürse yapılandırma başarılıdır.

Komut İstemini (CMD) Kullanma

  • Yordam

    Komut istemini yönetici olarak açın ve sisteme yeni ortam değişkenleri eklemek için aşağıdaki komutları çalıştırın.

    setx ALIBABA_CLOUD_ACCESS_KEY_ID yourAccessKeyID /M
    setx ALIBABA_CLOUD_ACCESS_KEY_SECRET yourAccessKeySecret /M

    /M parametresi bir sistem ortam değişkenini belirtir. Kullanıcı ortam değişkeni ayarlarken bu parametreyi atlayabilirsiniz.

  • Yapılandırmayı test etme

    Start öğesine tıklayın (veya Win+R klavye kısayolunu kullanın), Run seçeneğine tıklayın, cmd girin ve ardından komut istemini açmak için OK seçeneğine tıklayın (veya Enter tuşuna basın). echo %ALIBABA_CLOUD_ACCESS_KEY_ID% ve echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET% komutlarını çalıştırın. Komutlar doğru AccessKey değerini döndürürse yapılandırma başarılıdır.

Windows PowerShell Kullanma

PowerShell'de tüm yeni oturumlar için geçerli olacak şekilde yeni ortam değişkenleri ayarlayabilirsiniz:

[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::User)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::User)

Tüm kullanıcılar için ortam değişkenleri ayarlamak üzere yönetici izinlerine sahip olmanız gerekir:

[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::Machine)

Yalnızca geçerli oturum için geçerli olacak geçici ortam değişkenleri ayarlayabilirsiniz:

$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "yourAccessKeyID"
$env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "yourAccessKeySecret"

PowerShell'de Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID ve Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET komutlarını çalıştırın. Komutlar doğru AccessKey değerini döndürürse yapılandırma başarılıdır.

Önemli

Ortam değişkenlerini yapılandırdıktan sonra yeni ayarların etkili olması için entegre geliştirme ortamları (IDE'ler) gibi geliştirme araçlarınızı veya hizmetleri yeniden başlatmanız gerekebilir.

SDK Kullanımı

Standart çağrı akışı çoğu senaryo için geçerlidir. Bazı cloud ürünleri standart OpenAPI işlemleri aracılığıyla doğrudan dosya yüklemelerini desteklemez. Bu ürünlere dosya yüklemek için Advance API kullanın. Bkz. Advance API ile dosya yükleme.

Bu konuda örnek olarak SendMessageToGlobe Short Message Service (SMS) işlemi kullanılmaktadır. SendMessageToGlobe işlemine ilişkin API referansı için bkz. SendMessageToGlobe.

İstek istemcisini başlatma

Tüm OpenAPI çağrıları SDK tarafından sağlanan istek istemcisi (Client) aracılığıyla yapılır. Herhangi bir OpenAPI işlemi çağırmadan önce istek istemcisini başlatın. İstek istemcisi birden çok başlatma yöntemini destekler. Bu örnekte bir AccessKey çifti kullanılmaktadır. Daha fazla başlatma yöntemi için bkz. Erişim kimlik bilgilerini yönetme.

  • İstemci nesneleri iş parçacığı güvenlidir. Örneğin, çok iş parçacıklı bir ortamda tek bir Dysmsapi20180501Client örneğini güvenle paylaşabilirsiniz. Her iş parçacığı için ayrı bir örnek oluşturmanız gerekmez.

  • İstemci nesnelerini sık sık oluşturmayın. Sık oluşturmak kaynak israfına neden olur ve performansı düşürür. (Önerilen) İstemciyi sarmak için singleton desenini kullanın ve uygulama yaşam döngüsü boyunca aynı erişim kimlik bilgileri ve uç nokta için yalnızca bir istemci örneğinin başlatıldığından emin olun.

@staticmethod
def create_client() -> Dysmsapi20180501Client:
    config = open_api_models.Config(
        # Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
        access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
        # Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable 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)

İstek nesnesi oluşturma

Bir OpenAPI işlemi çağrılırken parametreleri iletmek için SDK tarafından sağlanan istek nesnesini kullanın. İstek nesneleri <API operation name>Request biçiminde adlandırılır. İstek parametreleri hakkında daha fazla bilgi için ilgili API belgelerine bakın. Bu örnekte kullanılan API belgeleri için bkz. SendMessageToGlobe.

Bir OpenAPI işlemi istek parametrelerini desteklemiyorsa istek nesnesi oluşturmanız gerekmez. Örneğin, DescribeCdnSubList işlemi istek parametrelerini desteklemez.

# Create a request object and set the required input parameters.
send_message_to_globe_request = dysmsapi_20180501_models.SendMessageToGlobeRequest(
    # Replace with the recipient number.
    to='<YOUR_NUMBER>',
    # Replace with the SMS content.
    message='<YOUR_MESSAGE>'
)

İsteği gönderme

(Önerilen) İsteği göndermek için <api_name>_with_options işlevini çağırın; burada <api_name> snake_case biçimindeki OpenAPI adıdır. İşlev iki parametre alır: önceki adımda oluşturulan istek nesnesi ve bir çalışma zamanı seçenekleri nesnesi. Çalışma zamanı seçenekleri nesnesi zaman aşımı ayarları ve proxy ayarları gibi istek davranışını yapılandırır. Daha fazla bilgi için bkz. Gelişmiş Yapılandırmalar.

İstek başarılı olursa işlev bir yanıt nesnesi döndürür. Çağrı sonucunu doğrulamak için yanıtı yazdırın veya günlüğe kaydedin.

Bir OpenAPI işlemi istek parametrelerini desteklemiyorsa isteği gönderirken bir istek nesnesi iletmeniz gerekmez. Örneğin, DescribeCdnSubList işlemini çağırırken yalnızca çalışma zamanı seçeneklerini iletirsiniz.

# Create runtime parameters.
runtime = util_models.RuntimeOptions()
client = create_client()
# Send the request.
client.send_message_to_globe_with_options(send_message_to_globe_request, runtime)

Özel durumları işleme

V2.0 Python SDK özel durumları iki ana türe ayırır:

  • TeaUnretryableException: Ağ sorunları nedeniyle, ağ yeniden denemeleri maksimum yeniden deneme sayısına ulaştığında oluşturulur.

  • TeaException: Temel olarak sunucu tarafındaki iş hataları için oluşturulur.

    Özel durum işleme hakkında daha fazla bilgi için bkz. Özel durum işleme.

Önemli

Sisteminizin dayanıklılığını ve kararlılığını sağlamak için özel durumları yayma, günlük kaydetme ve kurtarma denemesi yapma gibi uygun önlemler alarak özel durumları düzgün şekilde işleyin.

Tam kod örneği

Aşağıdaki örnek önceki adımları birleştirir: istek istemcisini başlatma, istek nesnesi oluşturma, isteği gönderme ve özel durumları işleme.

API çağrısı örneği

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. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
            access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
            # Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable 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 a request object and set the required input parameters.
        send_message_to_globe_request = dysmsapi_20180501_models.SendMessageToGlobeRequest(
            # Replace with the recipient number.
            to='<YOUR_NUMBER>',
            # Replace with the SMS content.
            message='<YOUR_MESSAGE>'
        )
        # Create runtime parameters.
        runtime = util_models.RuntimeOptions()
        try:
            # Send the request.
            send_message_to_globe_response = client.send_message_to_globe_with_options(send_message_to_globe_request, runtime)
            # Print the API response to verify the result.
            print(send_message_to_globe_response)
        except Exception as error:
            # For demonstration purposes only. Handle exceptions with care and never ignore exceptions in your project.
            # The error message.
            error_message = getattr(error, 'message', str(error))
            print(error_message)
            # The diagnostic URL.
            print(getattr(error, 'data', {}).get("Recommend"))
            UtilClient.assert_as_string(error_message)

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

Advance API ile Dosya Yükleme

Image Search ve Visual Intelligence API gibi bazı cloud ürünleri resmi belgelerde açıklanan standart OpenAPI işlemleri aracılığıyla doğrudan dosya yüklemelerini desteklemez. Bu ürünlere dosya yüklemek için cloud ürünü tarafından sağlanan Advance API'sini kullanın. Advance API bir dosya akışı nesnesini kabul eder. Arka planda cloud ürünü yüklenen dosyayı geçici olarak Alibaba Cloud OSS içinde depolar. Varsayılan depolama bölgesi cn-shanghai şeklindedir. Cloud ürünü özelliği sağlamak için dosyayı OSS'ten okur. Aşağıdaki örnekte Alibaba Cloud Visual Intelligence API üzerindeki Face and Body hizmetinin DetectBodyCount API'si kullanılmaktadır.

Not

Alibaba Cloud OSS içinde depolanan geçici dosyalar periyodik olarak temizlenir.

İstek istemcisini başlatmak için

İstek istemcisini başlatırken hem region_id hem de ürün endpoint değerlerini ayarlayın. region_id OSS'teki geçici dosyanın depolama bölgesini belirtir. region_id ayarlanmazsa ürün ve OSS farklı bölgelerde bulunabilir ve bu durum OpenAPI işlemi çağrılırken zaman aşımlarına neden olabilir.

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)

İstek nesnesi oluşturmak için

Dosya akışını iletmek için bir <OpenAPIName>AdvanceRequest istek nesnesi oluşturun. Parametre adı sabit olarak ImageURLObject şeklindedir.

# 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,
    )

İsteği göndermek için

İsteği göndermek için <apiName>Advance işlevini çağırın; burada <apiName> lower camelCase biçimindeki OpenAPI adıdır.

# Runtime configuration.
runtime = util_models.RuntimeOptions()
client = create_client()
# Send the request.
res = client.detect_body_count_advance(detect_body_count_advance_request, runtime)

Aşağıdaki örnekte Advance API ile dosya yükleme için tam kod gösterilmektedir.

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'
        config.endpoint = 'facebody.cn-shanghai.aliyuncs.com'
        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()

SSS

"You are not authorized to perform this operation"

Neden: AccessKey çiftinizle ilişkili RAM kullanıcısının bu API işlemini çağırma izni yok.

Çözüm: Gerekli OpenAPI izinlerini RAM kullanıcısına verin. Bir RAM kullanıcısına izin verme hakkında daha fazla bilgi için bkz. RAM kullanıcı izinlerini yönetme.

Örneğin, RAM kullanıcısı ilgili izne sahip değilse SendMessageToGlobe işlemi çağrıldığında bu hata döndürülür. Aşağıdakine benzer özel bir izin ilkesi oluşturun ve ilgili izinleri RAM kullanıcısına verin.

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "dysms:SendMessageToGlobe",
      "Resource": "*"
    }
  ]
}

"SDK.EndpointResolvingError"

Neden: Çağırdığınız OpenAPI işlemi istek istemcisini başlatırken belirtilen uç noktayı desteklemiyor.

Çözüm: Uç nokta yapılandırması kontrol edin, uç noktayı desteklenen bir değerle güncelleyin ve ardından OpenAPI işlemini tekrar çağırın.

AccessKey ile İlgili AttributeError veya KeyError

Bir OpenAPI çağrısı AttributeError: 'AttributeError' object has no attribute 'message' veya KeyError: 'ALIBABA_CLOUD_ACCESS_KEY_ID' hatası bildiriyor.

Neden: AccessKey çifti doğru şekilde iletilmemiş.

Çözüm: İstek istemcisini başlatırken AccessKey çiftinin doğru şekilde iletildiğini kontrol edin. os.environ["XXX"] ifadesinin XXX değerini ortam değişkenlerinden aldığını unutmayın.

SDK kullanırken karşılaştığınız hatalara ilişkin diğer çözümler için bkz. SSS.