Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:OSS Python SDK V1

Son Güncelleme:Oct 01, 2026

Kimlik doğrulama, yeniden deneme ve hata işleme mekanizmalarını yeniden tasarlayan; ayrıca sayfalayıcılar, aktarım yöneticileri ve dosya benzeri arayüzler ekleyen OSS Python SDK V2 sürümünü kullanmanızı öneririz.

Hızlı başlangıç

OSS Python SDK V1'i aşağıdaki adımları izleyerek kullanmaya başlayabilirsiniz.

image

Ortamı hazırlayın

Python'ı yükleyin

OSS Python SDK V1, Python 2,6, 2,7, 3,3, 3,4, 3,5, 3,6, 3,7, 3,8 veya sonraki sürümlerle uyumludur.

Windows ortamında Python SDK'yı yüklerken Visual C++ sürümünün 15,0 veya daha yüksek olduğundan emin olun.

python-devel paketini yükleyin

OSS Python SDK V1, CRC sağlama toplamları için crcmod kitaplığını kullanır. Bu kitaplığın C uzantısı, python-devel paketindeki Python.h üstbilgisine ihtiyaç duyar. Bu paket yüklü değilse SDK, saf Python CRC doğrulamasına geri döner; bu durum yükleme ve indirme işlemlerinde performansı önemli ölçüde düşürür.

Windows

Windows'ta gerekli üstbilgi dosyaları varsayılan Python kurulumuna dahildir. python-devel paketini ayrı olarak yüklemeniz gerekmez.

macOS

macOS'ta gerekli üstbilgi dosyaları varsayılan Python kurulumuna dahildir. python-devel paketini ayrı olarak yüklemeniz gerekmez.

CentOS

python-devel paketini yüklemek için aşağıdaki komutu çalıştırın.

yum install python-devel

RHEL

python-devel paketini yüklemek için aşağıdaki komutu çalıştırın.

yum install python-devel

Fedora

python-devel paketini yüklemek için aşağıdaki komutu çalıştırın.

yum install python-devel

Debian

python-devel paketini yüklemek için aşağıdaki komutu çalıştırın.

apt-get install python-dev

Ubuntu

python-devel paketini yüklemek için aşağıdaki komutu çalıştırın.

apt-get install python-dev

SDK'yı yükleyin

SDK'yı aşağıdaki yöntemlerden birini kullanarak yükleyin. Kod örnekleriyle uyumluluğu sağlamak için en son sürümü kullanın.

pip ile yükleyin

  1. pip aracını yükleyin. Python 2,7,9 veya sonraki sürümlerde ve Python 3,4 veya sonraki sürümlerde pip varsayılan olarak yüklü gelir.

  2. En son SDK sürümünü yüklemek için aşağıdaki komutu çalıştırın.

    pip install oss2                   

Kaynak koddan yükleyin

  1. SDK'nın en son sürümünü GitHub üzerinden indirin, paketi açın ve ilgili dizine gidin. Dizinin içinde setup.py dosyasının bulunduğundan emin olun.

    OSS Python SDK V1'in önceki bir sürümünü indirmek için Release History sayfasına bakın.

  2. SDK'yı yüklemek için aşağıdaki komutu çalıştırın.

    python setup.py install                   

Erişim kimlik bilgilerini yapılandırın

Bir RAM kullanıcısının AccessKey çiftini kullanarak erişim kimlik bilgilerini yapılandırın.

  1. RAM konsolunda, Permanent AccessKey Pair seçeneğiyle bir RAM kullanıcısı oluşturun. AccessKey çiftini kaydedin ve kullanıcıya AliyunOSSFullAccess iznini atayın.

  2. RAM kullanıcısının AccessKey çiftini kullanarak ortam değişkenlerini yapılandırın.

    Linux

    1. Ortam değişkeni ayarlarını ~/.bashrc dosyasına eklemek için komut satırı arayüzünde aşağıdaki komutları çalıştırın.

      echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
      echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
    2. Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.

      source ~/.bashrc
    3. Ortam değişkenlerinin doğru yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.

      echo $OSS_ACCESS_KEY_ID
      echo $OSS_ACCESS_KEY_SECRET

    macOS

    1. Varsayılan kabuk türünü görüntülemek için terminalde aşağıdaki komutu çalıştırın.

      echo $SHELL
    2. Varsayılan kabuk türüne göre aşağıdaki işlemleri gerçekleştirin.

      Zsh

      1. Ortam değişkeni ayarlarını ~/.zshrc dosyasına eklemek için aşağıdaki komutları çalıştırın.

        echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
        echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
      2. Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.

        source ~/.zshrc
      3. Ortam değişkenlerinin doğru yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

      Bash

      1. Ortam değişkeni ayarlarını ~/.bash_profile dosyasına eklemek için aşağıdaki komutları çalıştırın.

        echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile
        echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile
      2. Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.

        source ~/.bash_profile
      3. Ortam değişkenlerinin doğru yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

    Windows

    CMD

    1. CMD'de aşağıdaki komutları çalıştırın.

      setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
      setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
    2. Ortam değişkenlerinin doğru yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.

      echo %OSS_ACCESS_KEY_ID%
      echo %OSS_ACCESS_KEY_SECRET%

    PowerShell

    1. PowerShell'de aşağıdaki komutları çalıştırın.

      [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
      [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
    2. Ortam değişkenlerinin doğru yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.

      [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
      [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)

İstemciyi başlatın

OSS Python SDK V1 ile gerçekleştirilen çoğu işlem oss2.Service ve oss2.Bucket sınıflarını kullanır.

  • oss2.Service sınıfı paketleri listeler. Özel alan adları üzerinden erişimi desteklemez.

  • oss2.Bucket sınıfı dosyaları yükler, indirir ve siler; ayrıca çeşitli paket ayarlarını yapılandırır.

Önemli

Uyumluluk ve güvenliği artırmak amacıyla yapılan politika değişikliği gereği, 20 Mart 2025 tarihinden itibaren yeni OSS kullanıcılarının Çin anakarasındaki bölgelerde bulunan OSS paketlerinde veri API işlemleri gerçekleştirmek için özel bir alan adı (CNAME) kullanması zorunludur. Bu işlemler için varsayılan genel uç noktalar kısıtlanmıştır. Etkilenen işlemlerin tam listesini görmek için resmi duyuruya bakın. Verilerinize HTTPS üzerinden erişiyorsanız özel alan adınıza geçerli bir SSL Sertifikası bağlamanız gerekir. Konsol HTTPS kullanımını zorunlu kıldığından bu adım OSS Konsolu erişimi için zorunludur.

Paket örneğini başlatın

Örnek kodu çalıştırmadan önce <region-id> gibi yer tutucuları kendi bölge ve uç nokta bilgilerinizle değiştirin. Örneğin: ap-southeast-1 .
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Sample code for initializing a client with OSS Python SDK V1

import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

def main():

    # Load access credentials from environment variables. You must set the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    # Set the OSS service region.
    region = "<region-id>"
    # Set the endpoint.
    endpoint = "<endpoint>"
    # Set the bucket name.
    bucket_name = "example-bucket"

    # Initialize an OSS Bucket instance.
    bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
    
    # List files in the bucket.
    print("=== List files in the bucket ===")
    try:
        # Use the list_objects method to list files.
        result = bucket.list_objects()
        
        # Iterate through the file list and print only the file names.
        for obj in result.object_list:
            print(obj.key)
        
        # Print statistics.
        print(f"\nTotal files listed: {len(result.object_list)}")
        if result.is_truncated:
            print("Note: The result is truncated. More files are available.")
            
    except oss2.exceptions.OssError as e:
        print(f"OSS error: {e}")
        raise
    except Exception as e:
        print(f"An error occurred: {e}")
        raise

if __name__ == "__main__":
    # Entry point of the program.
    try:
        main()
    except Exception as e:
        print(f"An error occurred during execution: {e}")
        raise

Hizmet örneğini başlatın

Örnek kodu çalıştırmadan önce <region-id> gibi yer tutucuları kendi bölge ve uç nokta bilgilerinizle değiştirin. Örneğin: ap-southeast-1 .
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Sample code for initializing a Service instance with OSS Python SDK V1

import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

def main():

    # Load access credentials from environment variables. You must set the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    # Set the OSS service region.
    region = "<region-id>"
    # Set the endpoint.
    endpoint = "<endpoint>"

    # Initialize an OSS Service instance.
    service = oss2.Service(auth, endpoint, region=region)
    
    # List all buckets.
    print("=== List all buckets ===")
    try:
        # Use BucketIterator to list buckets.
        buckets = [b.name for b in oss2.BucketIterator(service)]
        
        # Iterate through the bucket list and print only the bucket names.
        for bucket in buckets:
            print(bucket)
        
        # Print statistics.
        print(f"\nTotal buckets listed: {len(buckets)}")
            
    except oss2.exceptions.OssError as e:
        print(f"OSS error: {e}")
        raise
    except Exception as e:
        print(f"An error occurred: {e}")
        raise

if __name__ == "__main__":
    # Entry point of the program.
    try:
        main()
    except Exception as e:
        print(f"An error occurred during execution: {e}")
        raise

İstemci yapılandırması

OSS istemcisini başlatırken uç nokta, zaman aşımı ve bağlantı havuzu boyutu gibi parametreleri özelleştirebilirsiniz.

Dahili alan adı kullanın

OSS'e dahili ağ üzerinden erişmek için uç nokta olarak dahili alan adını kullanın.

Koddaki <region-id> yer tutucusunu geçerli bir bölge ile değiştirin. Örneğin: ap-southeast-1 .
endpoint = "oss-<region-id>-internal.aliyuncs.com"

# Initialize an OSS bucket instance.
bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)

Özel alan adı kullanın

Özel alan adı kullanmak için uç noktayı kendi alan adınıza ayarlayın ve is_cname=True parametresini etkinleştirin.

Kullanmadan önce özel alan adınızı paketinize eşleyin. Özel Alan Adları Kullanarak OSS'e Erişme konusuna bakın.
# Set the custom domain name.
endpoint = "http://example.com"

# Initialize an OSS bucket instance.
bucket = oss2.Bucket(auth, endpoint, bucket_name, is_cname=True, region=region)

Zaman aşımı kontrolü

İstemciyi başlatırken connect_timeout parametresini saniye cinsinden ayarlayın. Varsayılan değer: 60 saniye.

# Initialize an OSS bucket instance.
bucket = oss2.Bucket(auth, endpoint, bucket_name, connect_timeout=30, region=region)

Bağlantı havuzu boyutu

session nesnesinin pool_size parametresiyle bağlantı havuzu boyutunu ayarlayın.

# Set the connection pool size. The default value is 10.
session = oss2.Session(pool_size=20)

# Initialize an OSS bucket instance.
bucket = oss2.Bucket(auth, endpoint, bucket_name, session=session, region=region)

TLS sürümü

Bir TLS sürümü belirtmek için özel bir SSLAdapter kullanarak oturum oluşturun.

Python SDK 2,18,1 ve sonraki sürümler TLS sürümünü belirtmenize olanak tanır.
import ssl
from requests.adapters import HTTPAdapter

# Define a custom adapter to specify the TLS version.
class SSLAdapter(HTTPAdapter):
    def init_poolmanager(self, *args, **http_client_config):
        # Specify TLS 1.2.
        http_client_config["ssl_version"] = ssl.PROTOCOL_TLSv1_2
        return super(SSLAdapter, self).init_poolmanager(*args, **http_client_config)
        
# Create a session by using SSLAdapter.
session = oss2.Session(adapter=SSLAdapter())

# Initialize an OSS bucket instance.
bucket = oss2.Bucket(auth, endpoint, bucket_name, session=session, region=region)

CRC kontrolünü devre dışı bırakın

CRC veri bütünlüğü kontrolünü devre dışı bırakmak için enable_crc=False parametresini ayarlayın.

Önemli

CRC özelliğini etkin tutun. Devre dışı bırakılması durumunda OSS, yükleme ve indirme işlemleri sırasında veri bütünlüğünü garanti edemez.

# Initialize an OSS bucket instance.
bucket = oss2.Bucket(auth, endpoint, bucket_name, enable_crc=False, region=region)

İmza sürümü

Önemli

Alibaba Cloud Object Storage V1 imzaları aşağıdaki takvime göre kullanımdan kaldırılacaktır. Hizmetlerinizin etkilenmemesini sağlamak için mümkün olan en kısa sürede V4 imzaya yükseltme yapmanızı öneririz.

  • 1 Mart 2025 tarihinden itibaren yeni kullanıcılar V1 imzasını kullanamaz.

  • 1 Eylül 2025 tarihinden itibaren V1 imzası için destek ve bakım kademeli olarak sonlandırılacak ve bu imzayı kullanan yeni paketler oluşturulamaz.

Aşağıdaki örnek, istemciyi V1 imzasıyla başlatır. V4 imzasıyla başlatma için İstemciyi Başlatma bölümüne bakın.

Örnek kodu çalıştırmadan önce <endpoint> gibi yer tutucuları kendi bölge ve uç nokta bilgilerinizle değiştirin. Örneğin: https://oss-ap-southeast-1.aliyuncs.com .
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# OSS Python SDK V1 client initialization sample code
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

def main():

    # Load access credentials from environment variables. You must set the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables.
    auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())

    # Set the endpoint.
    endpoint = "<endpoint>"
    # Set the bucket name.
    bucket_name = "example-bucket"

    # Initialize an OSS bucket instance.
    bucket = oss2.Bucket(auth, endpoint, bucket_name)
    
    # List files in the bucket.
    print("=== List files in the bucket ===")
    try:
        # List files by using the list_objects() method.
        result = bucket.list_objects()
        
        # Iterate through the object list and print each object's key.
        for obj in result.object_list:
            print(obj.key)
        
        # Print statistics.
        print(f"\nTotal files listed: {len(result.object_list)}")
        if result.is_truncated:
            print("Note: The result is truncated. More files are available.")
            
    except oss2.exceptions.OssError as e:
        print(f"OSS error: {e}")
        raise
    except Exception as e:
        print(f"An error occurred: {e}")
        raise

if __name__ == "__main__":
    # Program entry point.
    try:
        main()
    except Exception as e:
        print(f"An error occurred while running the program: {e}")
        raise

Özel uygulama adı

User-Agent üstbilgisine özel bir tanımlayıcı eklemek için app_name parametresini ayarlayın. Varsayılan değer: boş dize.

Uygulama adı bir HTTP üstbilgi değeri olarak iletilir ve HTTP standartlarına uygun olmalıdır.
# Initialize an OSS bucket instance.
bucket = oss2.Bucket(auth, endpoint, bucket_name, app_name="client_test", region=region)

Örnek kod

OSS Python SDK V1; paket yönetimi, nesne işlemleri, erişim kontrolü ve şifreli aktarım için kod örnekleri sağlar. Bu örnekleri referans olarak kullanabilir veya uygulamanıza entegre edebilirsiniz.

GitHub örnek kodları

Dokümantasyon örnek kodları

bucket.py

bucket_cname.py

Özel bir alan adını eşleme (Python SDK V1)

bucket_cors.py

Kaynaklar arası paylaşım (CORS) (Python SDK V1)

bucket_inventory.py

Envanter (Python SDK V1)

bucket_logging.py

Günlük kaydı tutma (Python SDK V1)

bucket_meta_query.py

Paket meta verilerini sorgulama (Python SDK V1)

bucket_policy.py

İlke

bucket_referer.py

Hotlink koruması (Python SDK V1)

bucket_replication.py

Çoğaltma (Python SDK V1)

bucket_symlink.py

Sembolik bağlantıları yönetme (Python SDK V1)

bucket_tagging.py

Paket etiketleme (Python SDK V1)

bucket_transfer_acceleration.py

Hızlandırılmış aktarım (Python SDK V1)

bucket_versioning.py

Sürüm oluşturmayı yönetme (Python SDK V1)

bucket_website.py

Statik web sitesi barındırma

bucket_worm.py

Alıkoyma ilkesi

download.py

image.py

Görüntü işleme (Python SDK V1)

object_basic.py

object_callback.py

Yükleme geri araması (Python SDK V1)

object_check.py

Veri bütünlüğü kontrolü (Python SDK V1)

object_crypto.py

İstemci taraflı şifreleme (Python SDK V1)

object_extra.py

Kullanıcı tanımlı meta verileri ayarlama

object_forbid_overwrite.py

Nesne üzerine yazmayı önleme (Python SDK V1)

object_operation.py

object_post.py

POST ile yükleme

object_progress.py

object_request_payment.py

İstekte bulunan öder (Python SDK V1)

object_restore.py

Nesneyi geri yükleme (Python SDK V1)

server_side_encryption.py

Sunucu taraflı şifreleme (Python SDK V1)

object_storage_type.py

Bir nesnenin depolama sınıfını değiştirme (Python SDK V1)

sts.py

STS belirteci ile erişim (Python SDK V1)

object_tagging.py

select_csv.py

Nesne sorgulama (Python SDK V1)

traffic_limit.py

Bağlantı aktarım hızını sınırlama (Python SDK V1)

upload.py

Uç nokta bilgilerini sorgulama

Genel (IPv4), dahili ve hızlandırılmış aktarım uç noktaları dahil olmak üzere tüm kullanılabilir bölgeler veya belirli bir bölge için uç nokta bilgilerini sorgulayabilirsiniz.

Not

Python SDK 2.18.0 ve sonraki sürümleri uç nokta bilgilerini sorgulamayı destekler.

Örnek kodu çalıştırmadan önce, <region-id> gibi yer tutucuları gerçek bölge ve uç nokta bilgilerinizle değiştirin; örneğin ap-southeast-1 .
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Sample code for querying endpoint information using the OSS Python SDK

import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

def main():

    print("=== Querying endpoint information for all supported regions ===\n")
    
    # Obtain access credentials from environment variables. You must set the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Specify the endpoint for the region where your bucket is located.
    endpoint = "<endpoint>"
    
    # Specify the region that corresponds to the endpoint. This parameter is required when you use Signature V4.
    region = "<region-id>"
    
    # Initialize an OSS Service instance.
    service = oss2.Service(auth, endpoint, region=region)
    
    try:
        # Query endpoint information for all supported regions.
        result = service.describe_regions()
        
        # Iterate through the region information.
        for r in result.regions:
            print(f"Region: {r.region}")
            print(f"  Public (IPv4) Endpoint: {r.internet_endpoint}")
            print(f"  Internal (Classic Network or VPC) Endpoint: {r.internal_endpoint}")
            print(f"  Transfer Acceleration Endpoint: {r.accelerate_endpoint}")
            print("-" * 80)
        
        # Print statistics.
        print(f"\nFound endpoint information for {len(result.regions)} regions.")
            
    except oss2.exceptions.OssError as e:
        print(f"OSS error: {e}")
        raise
    except Exception as e:
        print(f"An error occurred: {e}")
        raise

if __name__ == "__main__":
    # Entry point of the program.
    try:
        main()
    except Exception as e:
        print(f"An error occurred during execution: {e}")
        raise

Belirli bir bölgenin uç nokta bilgilerini sorgulamak için describe_regions yöntemine OSS'e özel bölge kimliğini belirtin.

result = service.describe_regions("oss-<region-id>")

Kimlik bilgisi yapılandırması

OSS, birden çok kimlik bilgisi başlatma yöntemini destekler. Kimlik doğrulama gereksinimlerinize göre bir yöntem seçin.

alibabacloud-credentials kütüphanesinin 0.3.5 veya sonraki bir sürümünü kullanmanız gerekir. Daha eski bir sürüm kullanılması hatayla sonuçlanır.

Bir kimlik bilgisi türü seçin


Başlatma yöntemi


Kullanım Senaryoları


Ön yapılandırma


Kimlik bilgisi türü


Geçerlilik Süresi


Döndürme veya yenileme


RAM kullanıcısının Access Key (AK) öğesini kullanma


Sık kimlik bilgisi döndürmesi olmadan cloud hizmetlerine uzun süreli erişim gerektiren ve güvenli ortamlarda çalışan uygulamalar için.


Evet


Access Key (AK)


Uzun vadeli


Manuel döndürme


Security Token Service (STS) geçici erişim kimlik bilgilerini kullanma


Sınırlı ömre ve belirli izinlere sahip kimlik bilgilerine ihtiyaç duyan ve güvenilmeyen ortamlarda çalışan uygulamalar için.


Evet


STS belirteci


Geçici


Manuel yenileme


RAM rolü ARN kullanma


Hesaplar arası erişim gibi, cloud hizmetlerine yetkili erişim gerektiren uygulamalar için.


Evet


STS belirteci


Geçici


Otomatik yenileme


ECS örnek RAM rolü kullanma


Alibaba Cloud Elastic Compute Service (ECS) örneklerinde, Elastic Container Instance (ECI) örneklerinde veya Container Service for Kubernetes (ACK) işçi düğümlerinde çalışan uygulamalar için.


Hayır


STS belirteci


Geçici


Otomatik yenileme


OIDC rolü ARN kullanma


Alibaba Cloud Container Service for Kubernetes (ACK) işçi düğümlerinde çalışan ve güvenilmeyen uygulamalar için.


Hayır


STS belirteci


Geçici


Otomatik yenileme


Function Compute (FC) bağlamından kimlik bilgilerini kullanma


Alibaba Cloud Function Compute (FC) içinde çalışan işlevler için.


Hayır


STS belirteci


Geçici


Yenileme gerekmez


Kimlik bilgisi URI'si kullanma


Kimlik bilgilerini harici bir sistemden alması gereken uygulamalar için.


Hayır


STS belirteci


Geçici


Otomatik yenileme


Otomatik döndürülen Access Key (AK) kullanma


Access Key (AK) sızıntısı riski bulunan bir ortamda dağıtılan ve cloud hizmetlerine uzun süreli erişim için sık kimlik bilgisi döndürmesi gerektiren uygulamalar için.


Hayır


Access Key (AK)


Uzun vadeli


Otomatik döndürme


Özel kimlik bilgisi sağlayıcısı kullanma


Önceki yöntemler gereksinimlerinizi karşılamıyorsa kimlik bilgilerini almak için özel bir yöntem tanımlayabilirsiniz.


Özel


Özel


Özel


Özel

RAM kullanıcısı AK

Sık kimlik bilgisi döndürmesi olmadan uzun vadeli OSS erişimine ihtiyaç duyan güvenli ve kararlı ortamlar için uygundur. Kimlik bilgisi sağlayıcısını bir RAM kullanıcısının AccessKey (AK) bilgileriyle başlatın. Bu yöntem manuel AK bakımı gerektirdiğinden güvenlik riskleri oluşturur.

Önemli
  • Bir Alibaba Cloud hesabı tüm kaynaklar üzerinde tam izinlere sahiptir. Hesabın AK bilgileri sızdırılırsa sisteminiz risk altında kalır. Bunun yerine yalnızca gerekli minimum izinlere sahip bir RAM kullanıcısının AK bilgisini kullanın.

  • Bir RAM kullanıcısı için AK oluşturmak üzere bkz. AccessKey oluşturma. AccessKey ID ve AccessKey Secret yalnızca oluşturma sırasında gösterilir. Bu bilgileri unutursanız yeni bir tane oluşturmanız gerekir.

Environment variables

  1. Bir RAM kullanıcısının Access Key (AK) bilgilerini kullanarak ortam değişkenlerini yapılandırın.

    Linux

    1. Ortam değişkeni ayarlarını ~/.bashrc dosyasına eklemek için komut satırı arayüzünde aşağıdaki komutları çalıştırın.

      echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
      echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
    2. Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.

      source ~/.bashrc
    3. Ortam değişkenlerinin yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.

      echo $OSS_ACCESS_KEY_ID
      echo $OSS_ACCESS_KEY_SECRET

    macOS

    1. Varsayılan kabuk türünü görüntülemek için terminalde aşağıdaki komutu çalıştırın.

      echo $SHELL
    2. Varsayılan kabuk türüne göre aşağıdaki işlemleri gerçekleştirin.

      Zsh

      1. Ortam değişkeni ayarlarını ~/.zshrc dosyasına eklemek için aşağıdaki komutları çalıştırın.

        echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
        echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
      2. Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.

        source ~/.zshrc
      3. Ortam değişkenlerinin yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

      Bash

      1. Ortam değişkeni ayarlarını ~/.bash_profile dosyasına eklemek için aşağıdaki komutları çalıştırın.

        echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile
        echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile
      2. Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.

        source ~/.bash_profile
      3. Ortam değişkenlerinin yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

    Windows

    CMD

    1. CMD'de aşağıdaki komutları çalıştırın.

      setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
      setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
    2. Ortam değişkenlerinin yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.

      echo %OSS_ACCESS_KEY_ID%
      echo %OSS_ACCESS_KEY_SECRET%

    PowerShell

    1. PowerShell'de aşağıdaki komutları çalıştırın.

      [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
      [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
    2. Ortam değişkenlerinin yapılandırıldığını doğrulamak için aşağıdaki komutları çalıştırın.

      [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
      [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
  2. Ortam değişkenlerini değiştirdikten sonra yeni değerlerin yüklenmesi için IDE'nizi, CLI'nizi ve diğer çalışma zamanı ortamlarınızı yeniden başlatın veya yenileyin.

  3. Kimlik bilgilerini sağlamak için ortam değişkenlerini kullanın.

    Örnek kodu çalıştırmadan önce <region-id> gibi yer tutucuları gerçek bölge ve uç nokta bilgileriyle değiştirin. Örneğin, <region-id> ifadesini ap-southeast-1 ile değiştirin.
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    # OSS Python SDK V1: Sample code for client initialization
    
    import oss2
    from oss2.credentials import EnvironmentVariableCredentialsProvider
    
    def main():
    
        # Load access credentials from environment variables. You must set OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET.
        auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
        # Set the OSS service region.
        region = "<region-id>"
        # Set the endpoint.
        endpoint = "<endpoint>"
        # Set the bucket name.
        bucket_name = "example-bucket-hz"
    
        # Initialize an OSS Bucket instance.
        bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
        
        # List objects in the bucket.
        print("=== List objects in the bucket ===")
        try:
            # Use the list_objects method to list objects.
            result = bucket.list_objects()
            
            # Iterate through the object list and print only the object keys.
            for obj in result.object_list:
                print(obj.key)
            
            # Print statistics.
            print(f"\nTotal objects listed: {len(result.object_list)}")
            if result.is_truncated:
                print("Note: The result is truncated. More objects are not listed.")
                
        except oss2.exceptions.OssError as e:
            print(f"OSS error: {e}")
            raise
        except Exception as e:
            print(f"An error occurred: {e}")
            raise
    
    if __name__ == "__main__":
        # Entry point of the program.
        try:
            main()
        except Exception as e:
            print(f"An error occurred during execution: {e}")
            raise
    

Static credentials

Aşağıdaki örnek kod, kimlik bilgilerinin uygulamanıza nasıl sabit kodlanacağını gösterir.

Önemli

Üretim ortamındaki uygulamalara kimlik bilgilerini gömmeyin. Bu yöntem yalnızca test amaçlıdır.

Örnek kodu çalıştırmadan önce <region-id> gibi yer tutucuları gerçek bölge ve uç nokta bilgileriyle değiştirin. Örneğin, <region-id> ifadesini ap-southeast-1 ile değiştirin.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# OSS Python SDK V1: Sample code for client initialization

import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

def main():

    # Specify the AccessKey ID and AccessKey Secret of a RAM user.
    access_key_id = 'yourAccessKeyID'
    access_key_secret = 'yourAccessKeySecret'
    # Configure access credentials using the Access Key (AK) of the RAM user.
    auth = oss2.AuthV4(access_key_id, access_key_secret)
    # Set the OSS service region.
    region = "<region-id>"
    # Set the endpoint.
    endpoint = "<endpoint>"
    # Set the bucket name.
    bucket_name = "example-bucket-hz"

    # Initialize an OSS Bucket instance.
    bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
    
    # List objects in the bucket.
    print("=== List objects in the bucket ===")
    try:
        # Use the list_objects method to list objects.
        result = bucket.list_objects()
        
        # Iterate through the object list and print only the object keys.
        for obj in result.object_list:
            print(obj.key)
        
        # Print statistics.
        print(f"\nTotal objects listed: {len(result.object_list)}")
        if result.is_truncated:
            print("Note: The result is truncated. More objects are not listed.")
            
    except oss2.exceptions.OssError as e:
        print(f"OSS error: {e}")
        raise
    except Exception as e:
        print(f"An error occurred: {e}")
        raise

if __name__ == "__main__":
    # Entry point of the program.
    try:
        main()
    except Exception as e:
        print(f"An error occurred during execution: {e}")
        raise

STS geçici kimlik bilgileri

Geçici OSS erişimine ihtiyaç duyan uygulamalar için uygundur. Kimlik bilgisi sağlayıcısını STS'den alınan geçici kimlik bilgileriyle (AccessKey ID, AccessKey Secret ve güvenlik belirteci) başlatın. STS belirtecinin süresi dolmadan önce manuel olarak yenilemeniz gerekir.

Önemli

Environment variables

  1. Geçici erişim kimlik bilgilerini kullanarak ortam değişkenlerini ayarlayın.

    macOS, Linux, and Unix

    Önemli
    • Bir RAM kullanıcısının Access Key (AK) bilgileri yerine STS'den alınan geçici erişim kimlik bilgilerini (Access Key ID, Access Key Secret ve güvenlik belirteci) kullanın.

    • STS'den alınan Access Key ID "STS." ile başlar; örneğin "STS.****".

    export OSS_ACCESS_KEY_ID=<STS_ACCESS_KEY_ID>
    export OSS_ACCESS_KEY_SECRET=<STS_ACCESS_KEY_SECRET>
    export OSS_SESSION_TOKEN=<STS_SECURITY_TOKEN>

    Windows

    Önemli
    • Bir RAM kullanıcısının Access Key (AK) bilgileri yerine STS'den alınan geçici erişim kimlik bilgilerini (Access Key ID, Access Key Secret ve güvenlik belirteci) kullanın.

    • STS'den alınan Access Key ID "STS." ile başlar; örneğin "STS.****".

    set OSS_ACCESS_KEY_ID=<STS_ACCESS_KEY_ID>
    set OSS_ACCESS_KEY_SECRET=<STS_ACCESS_KEY_SECRET>
    set OSS_SESSION_TOKEN=<STS_SECURITY_TOKEN>
  2. Kimlik bilgilerini sağlamak için ortam değişkenlerini kullanın.

    Örnek kodu çalıştırmadan önce <region-id> gibi yer tutucuları gerçek bölge ve uç nokta bilgileriyle değiştirin. Örneğin, <region-id> ifadesini ap-southeast-1 ile değiştirin.
    # -*- coding: utf-8 -*-
    import oss2
    from oss2.credentials import EnvironmentVariableCredentialsProvider
    
    # yourEndpoint specifies the endpoint for the region where the bucket is located.
    endpoint = '<endpoint>'
    
    # yourBucketName specifies the bucket name.
    bucket_name = 'yourBucketName'
    
    # Specify the region where the bucket is located.
    region = '<region-id>'
    
    # Configure access credentials by using the STS AK, SK, and Security Token from environment variables.
    # Note that ProviderAuthV4 indicates the use of V4 signatures.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Initialize the bucket by using the Auth instance. Note that the region parameter is required when using V4 signatures;
    # otherwise, an error occurs.
    bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
    
    # Use the bucket object for subsequent operations...

Static credentials

Kimlik bilgilerini uygulamanıza sabit kodlayabilir ve geçici erişim anahtarlarını açıkça ayarlayabilirsiniz.

Örnek kodu çalıştırmadan önce <region-id> gibi yer tutucuları gerçek bölge ve uç nokta bilgileriyle değiştirin. Örneğin, <region-id> ifadesini ap-southeast-1 ile değiştirin.
# -*- coding: utf-8 -*-
import oss2

# Specify the temporary AccessKey ID and AccessKey Secret obtained from STS, not the AccessKey ID and AccessKey Secret of your Alibaba Cloud account.
# Note that the Access Key ID obtained from STS starts with "STS."
sts_access_key_id = 'STS.****************'
sts_access_key_secret = 'yourAccessKeySecret'
# Specify the security token obtained from STS.
security_token = 'yourSecurityToken'

# yourEndpoint specifies the endpoint for the region where the bucket is located.
endpoint = '<endpoint>'

# yourBucketName specifies the bucket name.
bucket_name = 'yourBucketName'

# Specify the region where the bucket is located.
region = '<region-id>'

# Initialize the StsAuth instance. Note that setting auth_version to "v4" enables OSS V4 signatures.
auth = oss2.StsAuth(sts_access_key_id,
                    sts_access_key_secret,
                    security_token,
                    auth_version="v4")

# Initialize the bucket using the StsAuth instance. Note that the region parameter is required when using V4 signatures;
# otherwise, an error occurs.
bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)

# Use the bucket object for subsequent operations...

RAM rolü ARN

Hesaplar arası erişim için uygundur. Kimlik bilgisi sağlayıcısını bir RAM rolü ARN ile başlatın. Kimlik bilgisi aracı, süresi dolmadan önce AssumeRole işlevini çağırarak STS belirtecini otomatik olarak yeniler. İzinleri daha da kısıtlamak için policy parametresini ayarlayabilirsiniz.

Önemli
  • Bir Alibaba Cloud hesabı tüm kaynaklar üzerinde tam izinlere sahiptir. Hesabın AK bilgileri sızdırılırsa sisteminiz risk altında kalır. Bunun yerine yalnızca gerekli minimum izinlere sahip bir RAM kullanıcısının AK bilgisini kullanın.

  • Bir RAM kullanıcısı için AK oluşturmak üzere bkz. AccessKey oluşturma. AccessKey ID ve AccessKey Secret yalnızca oluşturma sırasında gösterilir. Bu bilgileri unutursanız yeni bir tane oluşturmanız gerekir.

  • Bir RAM rolü ARN elde etmek için bkz. RAM rolü oluşturma.

  1. Kimlik bilgisi bağımlılığını ekleyin.

    pip install alibabacloud_credentials
  2. Erişim kimlik bilgisi olarak Access Key (AK) ve RAM rolü ARN bilgisini yapılandırın.

    Örnek kodu çalıştırmadan önce <region-id> gibi yer tutucuları gerçek bölge ve uç nokta bilgileriyle değiştirin. Örneğin, <region-id> ifadesini ap-southeast-1 ile değiştirin.
    # -*- coding: utf-8 -*-
    import oss2
    from alibabacloud_credentials.client import Client
    from alibabacloud_credentials.models import Config
    from oss2 import CredentialsProvider
    from oss2.credentials import Credentials
    import os
    
    class CredentialProviderWrapper(CredentialsProvider):
        def __init__(self, client):
            self.client = client
    
        def get_credentials(self):
            credential = self.client.get_credential()
            access_key_id = credential.access_key_id
            access_key_secret = credential.access_key_secret
            security_token = credential.security_token
            return Credentials(access_key_id, access_key_secret, security_token)
    
    config = Config(
        # Obtain the Access Key (AccessKey ID and AccessKey Secret) of the RAM user from environment variables.
        access_key_id=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
        access_key_secret=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
        type='ram_role_arn',
        # The ARN of the RAM role to assume. Example: acs:ram::123456789012****:role/adminrole. You can set the RoleArn using the ALIBABA_CLOUD_ROLE_ARN environment variable.
        role_arn='<RoleArn>',
        # The role session name. You can set the RoleSessionName using the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable.
        role_session_name='<RoleSessionName>',
        # Optional. A more restrictive permission policy. Example: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
        policy='<Policy>',
        # Optional. The validity period of the role session.
        role_session_expiration=3600
    )
    
    cred = Client(config)
    
    credentials_provider = CredentialProviderWrapper(cred)
    
    # Note that ProviderAuthV4 indicates the use of V4 signatures.
    auth = oss2.ProviderAuthV4(credentials_provider)
    
    # yourEndpoint specifies the endpoint for the region where the bucket is located.
    endpoint = '<endpoint>'
    
    # yourBucketName specifies the bucket name.
    bucket_name = 'yourBucketName'
    
    # Specify the region where the bucket is located.
    region = '<region-id>'
    
    # Initialize the bucket by using the Auth instance. Note that the region parameter is required when using V4 signatures;
    # otherwise, an error occurs.
    bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
    
    # Use the bucket object for subsequent operations...

ECS örnek RAM rolü

ECS örneklerinde, ECI örneklerinde veya Container Service for Kubernetes (ACK) işçi düğümlerindeki uygulamalar için uygundur. Bir ECS örnek RAM rolü, bir AK veya STS belirteci sağlamadan ECS örneklerinde, ECI örneklerinde veya Container Service for Kubernetes (ACK) işçi düğümlerinde STS belirtecinin otomatik olarak yenilenmesini sağlar. Rol elde etmek için bkz. RAM rolü oluşturma. Rolü bir örneke atamak için bkz. Örnek RAM rolü.

  1. Kimlik bilgisi bağımlılığını ekleyin.

    pip install alibabacloud_credentials
  2. Erişim kimlik bilgisi olarak ECS örnek RAM rolünü yapılandırın.

    Örnek kodu çalıştırmadan önce <region-id> gibi yer tutucuları gerçek bölge ve uç nokta bilgileriyle değiştirin. Örneğin, <region-id> ifadesini ap-southeast-1 ile değiştirin.
    # -*- coding: utf-8 -*-
    import oss2
    from alibabacloud_credentials.client import Client
    from alibabacloud_credentials.models import Config
    from oss2 import CredentialsProvider
    from oss2.credentials import Credentials
    
    class CredentialProviderWrapper(CredentialsProvider):
        def __init__(self, client):
            self.client = client
    
        def get_credentials(self):
            credential = self.client.get_credential()
            access_key_id = credential.access_key_id
            access_key_secret = credential.access_key_secret
            security_token = credential.security_token
            return Credentials(access_key_id, access_key_secret, security_token)
    
    config = Config(
        type='ecs_ram_role',      # Credential type. Fixed value: ecs_ram_role.
        role_name='<RoleName>'    # The name of the RAM role attached to the ECS instance. Optional. If not set, it is retrieved automatically. We strongly recommend setting this parameter to reduce requests.
    )
    
    cred = Client(config)
    
    credentials_provider = CredentialProviderWrapper(cred)
    
    # Note that ProviderAuthV4 indicates the use of V4 signatures.
    auth = oss2.ProviderAuthV4(credentials_provider)
    
    # yourEndpoint specifies the endpoint for the region where the bucket is located.
    endpoint = '<endpoint>'
    
    # yourBucketName specifies the bucket name.
    bucket_name = 'yourBucketName'
    
    # Specify the region where the bucket is located.
    region = '<region-id>'
    
    # Initialize the bucket by using the Auth instance. Note that the region parameter is required when using V4 signatures;
    # otherwise, an error occurs.
    bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
    
    # Use the bucket object for subsequent operations...

OIDC rol ARN'si

Güvenilmeyen uygulamalar ACK çalışan düğümlerinde çalıştığında, bu uygulamaların düğümün örnek RAM rolü STS belirtecini elde etmesini önlemek için RRSA kullanın. Küme, her pod başına bir hizmet hesabı OIDC belirteci dosyasını bağlar ve yapılandırmayı ortam değişkenlerine ekler. Kimlik bilgisi aracı, bir AK veya STS belirteci gerektirmeden AssumeRoleWithOIDC aracılığıyla OIDC belirtecini bir STS belirteci ile değiştirir. RRSA kullanarak pod izin yalıtımını uygulamak için ServiceAccount için RAM izinlerini yapılandırma.

  1. Kimlik bilgisi bağımlılığını ekleyin.

    pip install alibabacloud_credentials
  2. Erişim kimlik bilgisi olarak OIDC rolünü yapılandırın.

    Örnek kodu çalıştırmadan önce, <region-id> gibi yer tutucuları gerçek bölge ve uç nokta değerleriyle değiştirin. Örneğin, <region-id> ifadesini ap-southeast-1 ile değiştirin.
    # -*- coding: utf-8 -*-
    import oss2
    from alibabacloud_credentials.client import Client
    from alibabacloud_credentials.models import Config
    from oss2 import CredentialsProvider
    from oss2.credentials import Credentials
    import os
    
    class CredentialProviderWrapper(CredentialsProvider):
        def __init__(self, client):
            self.client = client
    
        def get_credentials(self):
            credential = self.client.get_credential()
            access_key_id = credential.access_key_id
            access_key_secret = credential.access_key_secret
            security_token = credential.security_token
            return Credentials(access_key_id, access_key_secret, security_token)
    
    config = Config(
        # Credential type. Fixed value: oidc_role_arn.
        type='oidc_role_arn',
        # The ARN of the RAM role. You can set the RoleArn using the ALIBABA_CLOUD_ROLE_ARN environment variable.
        role_arn=os.environ.get('<RoleArn>'),
        # The ARN of the OIDC provider. You can set the OidcProviderArn using the ALIBABA_CLOUD_OIDC_PROVIDER_ARN environment variable.
        oidc_provider_arn=os.environ.get('<OidcProviderArn>'),
        # The OIDC token file path. You can set the OidcTokenFilePath using the ALIBABA_CLOUD_OIDC_TOKEN_FILE environment variable.
        oidc_token_file_path=os.environ.get('<OidcTokenFilePath>'),
        # The role session name. You can set the RoleSessionName using the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable.
        role_session_name='<RoleSessionName>',
        # Optional. A more restrictive permission policy. Example: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
        policy='<Policy>',
        # The validity period of the session.
        role_session_expiration=3600
    )
    
    cred = Client(config)
    
    credentials_provider = CredentialProviderWrapper(cred)
    
    # Note that ProviderAuthV4 indicates the use of V4 signatures.
    auth = oss2.ProviderAuthV4(credentials_provider)
    
    # yourEndpoint specifies the endpoint for the region where the bucket is located.
    endpoint = '<endpoint>'
    
    # yourBucketName specifies the bucket name.
    bucket_name = 'yourBucketName'
    
    # Specify the region where the bucket is located.
    region = '<region-id>'
    
    # Initialize the bucket by using the Auth instance. Note that the region parameter is required when using V4 signatures;
    # otherwise, an error occurs.
    bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
    
    # Use the bucket object for subsequent operations...

Function Compute bağlamı

FC'de çalışan işlevler için uygundur. FC, bir STS belirteci (36 saat geçerli) almak için bir hizmet rolü üstlenir ve bunu bağlam Kimlik Bilgileri parametresi aracılığıyla iletir. Maksimum işlev çalıştırma süresi 24 saat olduğundan, belirteç yürütme sırasında sona ermez; bu nedenle yenileme gerekmez. FC'nin OSS'e erişim izinlerini vermek için bkz. Function Compute'a diğer cloud hizmetlerine erişim izni vermek için işlev rolü kullanma.

Kimlik bilgisi sağlayıcısını FC bağlamındaki kimlik bilgileriyle başlatın.

Örnek kodu çalıştırmadan önce, <region-id> gibi yer tutucuları gerçek bölge ve uç nokta değerleriyle değiştirin. Örneğin, <region-id> ifadesini ap-southeast-1 ile değiştirin.
# -*- coding: utf-8 -*-
import oss2
from oss2 import CredentialsProvider
from oss2.credentials import Credentials

def handler(event, context):

    class CredentialProviderWrapper(CredentialsProvider):
        def get_credentials(self):
            creds = context.credentials
            return Credentials(creds.access_key_id, creds.access_key_secret, creds.security_token)

    credentials_provider = CredentialProviderWrapper()
    # Note that ProviderAuthV4 indicates the use of V4 signatures.
    auth = oss2.ProviderAuthV4(credentials_provider)

    # yourEndpoint specifies the endpoint for the region where the bucket is located.
    endpoint = '<endpoint>'

    # yourBucketName specifies the bucket name.
    bucket_name = 'yourBucketName'

    # Specify the region where the bucket is located.
    region = '<region-id>'

    # Initialize the bucket by using the Auth instance. Note that the region parameter is required when using V4 signatures;
    # otherwise, an error occurs.
    bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)

    # Use the bucket object for subsequent operations...

    return 'success'

Kimlik Bilgisi URI'si

Kimlik bilgilerini harici bir sistemden alan uygulamalar için uygundur. Kimlik bilgisi aracı, sağlanan URI'den bir STS belirteci alır ve otomatik yenilemeyi yönetir.

Önemli
  • Bir kimlik bilgisi URI'si, STS belirtecini almak için kullanılan sunucu adresidir.

  • Kimlik bilgisi URI'si yanıtını sağlayan arka uç hizmeti, uygulamanın her zaman geçerli kimlik bilgileri almasını sağlamak için otomatik STS belirteci yenileme mantığını uygulamalıdır.

  1. Kimlik bilgisi aracının STS belirtecini doğru şekilde ayrıştırıp kullanabilmesi için URI yanıtı aşağıdaki protokole uymalıdır:

    • Yanıt durum kodu: 200

    • Yanıt gövdesi yapısı:

      {
          "Code": "Success",
          "AccessKeySecret": "AccessKeySecret",
          "AccessKeyId": "AccessKeyId",
          "Expiration": "2021-09-26T03:46:38Z",
          "SecurityToken": "SecurityToken"
      }
  2. Kimlik bilgisi bağımlılığını ekleyin.

    pip install alibabacloud_credentials
  3. Erişim kimlik bilgisi olarak kimlik bilgisi URI'sini yapılandırın.

    Örnek kodu çalıştırmadan önce, <region-id> gibi yer tutucuları gerçek bölge ve uç nokta değerleriyle değiştirin. Örneğin, <region-id> ifadesini ap-southeast-1 ile değiştirin.
    # -*- coding: utf-8 -*-
    import oss2
    from alibabacloud_credentials.client import Client
    from alibabacloud_credentials.models import Config
    from oss2 import CredentialsProvider
    from oss2.credentials import Credentials
    
    class CredentialProviderWrapper(CredentialsProvider):
        def __init__(self, client):
            self.client = client
    
        def get_credentials(self):
            credential = self.client.get_credential()
            access_key_id = credential.access_key_id
            access_key_secret = credential.access_key_secret
            security_token = credential.security_token
            return Credentials(access_key_id, access_key_secret, security_token)
    
    config = Config(
        type='credentials_uri',
        # The URI for the credentials, in the format http://local_or_remote_uri/. You can set the CredentialsUri using the ALIBABA_CLOUD_CREDENTIALS_URI environment variable.
        credentials_uri='<CredentialsUri>',
    )
    
    cred = Client(config)
    
    credentials_provider = CredentialProviderWrapper(cred)
    
    # Note that ProviderAuthV4 indicates the use of V4 signatures.
    auth = oss2.ProviderAuthV4(credentials_provider)
    
    # yourEndpoint specifies the endpoint for the region where the bucket is located.
    endpoint = '<endpoint>'
    
    # yourBucketName specifies the bucket name.
    bucket_name = 'yourBucketName'
    
    # Specify the region where the bucket is located.
    region = '<region-id>'
    
    # Initialize the bucket by using the Auth instance. Note that the region parameter is required when using V4 signatures;
    # otherwise, an error occurs.
    bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
    
    # Use the bucket object for subsequent operations...

Otomatik döndürülen AK

AK'nin ele geçirilme riski altında olduğu ortamlar için uygundur. Yönetilen RAM kullanıcı AK'sini otomatik olarak döndüren KMS'ten bir ClientKey ile kimlik bilgisi sağlayıcısını başlatın. KMS, bir AK ele geçirildiğinde anında döndürmeyi de destekler. Bir ClientKey edinmek için bkz. Uygulama Erişim Noktası oluşturma.

  1. Secrets Manager istemci bağımlılığını ekleyin.

    pip install aliyun-secret-manager-client
  2. secretsmanager.properties adlı bir yapılandırma dosyası oluşturun.

    # The type of access credential. Fixed value: client_key
    credentials_type=client_key
    
    # The decryption password for the ClientKey. You can read it from an environment variable or a file. Set only one.
    client_key_password_from_env_variable=<your client key private key password environment variable name>
    client_key_password_from_file_path=<your client key private key password file path>
    
    # The path to the private key file of the ClientKey.
    client_key_private_key_path=<your client key private key file path>
    
    # The region of the associated KMS.
    cache_client_region_id=[{"regionId":"<regionId>"}]
  3. Kimlik bilgisi bilgilerini sağlamak için yapılandırma dosyasını kullanın.

    Örnek kodu çalıştırmadan önce, <region-id> gibi yer tutucuları gerçek bölge ve uç nokta değerleriyle değiştirin. Örneğin, <region-id> ifadesini ap-southeast-1 ile değiştirin.
    # -*- coding: utf-8 -*-
    import json
    import oss2
    from oss2 import CredentialsProvider
    from oss2.credentials import Credentials
    from alibaba_cloud_secretsmanager_client.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder
    
    class CredentialProviderWrapper(CredentialsProvider):
        def get_credentials(self):
            secret_cache_client = SecretManagerCacheClientBuilder.new_client()
            secret_info = secret_cache_client.get_secret_info("<secretName>")
            secret_value_json = json.loads(secret_info.secret_value)
            return Credentials(secret_value_json["AccessKeyId"], secret_value_json["AccessKeySecret"])
    
    credentials_provider = CredentialProviderWrapper()
    
    # Note that ProviderAuthV4 indicates the use of V4 signatures.
    auth = oss2.ProviderAuthV4(credentials_provider)
    
    # yourEndpoint specifies the endpoint for the region where the bucket is located.
    endpoint = '<endpoint>'
    
    # yourBucketName specifies the bucket name.
    bucket_name = 'yourBucketName'
    
    # Specify the region where the bucket is located.
    region = '<region-id>'
    
    # Initialize the bucket by using the Auth instance. Note that the region parameter is required when using V4 signatures;
    # otherwise, an error occurs.
    bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
    
    # Use the bucket object for subsequent operations...

Özel kimlik bilgisi sağlayıcısı

Yukarıdaki kimlik bilgisi yapılandırma yöntemlerinden hiçbiri gereksinimlerinizi karşılamıyorsa, CredentialProvider arabirimini uygulayarak özel bir kimlik bilgisi sağlayıcısı tanımlayabilirsiniz. Uygulamanız bir STS belirteci kullanıyorsa, kimlik bilgisi yenilemesini de yönetmeniz gerekir.

Örnek kodu çalıştırmadan önce, <region-id> gibi yer tutucuları gerçek bölge ve uç nokta değerleriyle değiştirin. Örneğin, <region-id> ifadesini ap-southeast-1 ile değiştirin.
# -*- coding: utf-8 -*-
import oss2
from oss2 import CredentialsProvider
from oss2.credentials import Credentials

class CredentialProviderWrapper(CredentialsProvider):
    def get_credentials(self):
        # TODO
        # Implement your custom method for obtaining access credentials.

        # Return long-term credentials: access_key_id, access_key_secret
        return Credentials('<access_key_id>', '<access_key_secrect>')

        # Return temporary credentials: access_key_id, access_key_secret, token
        # For temporary credentials, you need to refresh them based on their expiration time.
        # return Credentials('<access_key_id>', '<access_key_secrect>', '<token>');

credentials_provider = CredentialProviderWrapper()

# Note that ProviderAuthV4 indicates the use of V4 signatures.
auth = oss2.ProviderAuthV4(credentials_provider)

# yourEndpoint specifies the endpoint for the region where the bucket is located.
endpoint = '<endpoint>'

# yourBucketName specifies the bucket name.
bucket_name = 'yourBucketName'

# Specify the region where the bucket is located.
region = '<region-id>'

# Initialize the bucket by using the Auth instance. Note that the region parameter is required when using V4 signatures;
# otherwise, an error occurs.
bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)

# Use the bucket object for subsequent operations...

SSS

Hata: No module named _crcfunext?

OSS Python SDK V1 kullanılarak yapılan yüklemeler ve indirmeler, ossutil veya diğer SDK'lar gibi diğer araçlara kıyasla daha yavaştır.

  • Neden:

    _crcfunext.so kütüphanesi, sistemde gerekli Python.h dosyası eksik olduğu için crcmod derlemesi sırasında oluşturulamaz. crcmod hakkında daha fazla bilgi için crcmod tanıtımı bölümüne bakın.

  • Çözüm:

    crcmod için C uzantı modunun doğru şekilde yüklendiğini doğrulayın.

    1. Python ortamına girmek için aşağıdaki komutu çalıştırın.

      python
    2. crcmod modülünden _crcfunext C uzantı modülünü içe aktarmak için aşağıdaki komutu çalıştırın.

      import crcmod._crcfunext

      Aşağıdaki hata, crcmod kütüphanesi için C uzantı modunun yüklenemediğini gösterir.

      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      ImportError: No module named _crcfunext                                 
    3. İşletim sisteminize göre bir çözüm seçin.

      Windows

      1. crcmod-1.7.win32-py2.7.msi veya .msi dosyasının başka bir sürümünü indirin.

        Not

        crcmod 32 bit sürümü, hem 32 bit hem de 64 bit Windows sistemleriyle uyumludur.

      2. .msi dosyasını yükleyin ve yükleme işlemi sırasında crcmod için yükleme yolunu yerel Python yükleme dizininizdeki Lib\site-packages klasörüne belirtin. Örneğin, D:\python\Lib\site-packages\.

      3. Yükleme tamamlandıktan sonra crcmod doğrulama adımlarını tekrar çalıştırın.

      Linux

      Bu sorun bir Linux sisteminde oluşursa aşağıdaki adımları gerçekleştirin:

      1. crcmod paketini kaldırmak için aşağıdaki komutu çalıştırın.

        pip uninstall crcmod
      2. python-devel paketini yükleyin. Bkz. Ortamı hazırlama.

      3. crcmod paketini yeniden yüklemek için aşağıdaki komutu çalıştırın.

        pip install crcmod

        Yükleme tekrar başarısız olursa crcmod paketini kaldırın ve ayrıntılı hata bilgilerini görüntülemek için aşağıdaki komutu çalıştırın.

        pip install crcmod -v

Hata: No module named 'Crypto'?

  • Neden:

    Sistemde Crypto modülü yok veya crypto modülü (küçük harfle başlayan) mevcut.

  • Çözüm:

    Yerel Python yükleme yolunuzda Crypto modülünü kontrol edin, örneğin D:\python3.9\Lib\site-packages.

    • Crypto modülü mevcut değilse aşağıdaki komutu çalıştırın.

      python -m pip install --upgrade setuptools
    • crypto (küçük c harfiyle) adında bir modül varsa, bunu Crypto olarak yeniden adlandırın ve ardından programınızı yeniden başlatın.

Hata: "not an internal or external command"?

Windows'ta, 'is not recognized as an internal or external command' hatası alırsanız Python ve pip yükleme yollarını (genellikle Python dizinindeki Scripts klasörü) Path ortam değişkenine ekleyin. Değişikliklerin etkili olması için bilgisayarınızı yeniden başlatın.

OSS Python SDK V1 yükleme hatası

Yükleme başarısız olursa paketi kaldırın ve yeniden deneyin.

pip uninstall oss2            

OSS Python SDK V1'i yükseltme

SDK'yı yükseltmek için aşağıdaki komutu çalıştırın.

 pip install --upgrade oss2

AccessDenied hatalarını giderme

Bir AccessDenied hatası, yetersiz izinleri gösterir. Sorun giderme adımları şöyledir:

  1. Doğru AccessKey ID ve AccessKey Secret kullandığınızdan emin olun.

  2. RAM kullanıcısının paket veya nesne işlemleri için gerekli izinlere sahip olduğunu doğrulayın.

  3. Paket ilkesini kontrol edin: "Access denied by bucket policy" içeren bir hata mesajı, isteğin bir paket ilkesi tarafından engellendiğini gösterir.

Bölge içi erişim için aktarım hızını artırma

Daha hızlı aktarımlar için, paketinizle aynı bölgedeki bir Alibaba Cloud ürününden (ECS gibi) dahili bir uç nokta kullanarak OSS'e erişin.

AccessKey'leri görüntüleme ve AccessKey Secret'ları yönetme

  1. Bir RAM kullanıcısının AccessKey'ini görüntülemek için: RAM konsolu üzerinde oturum açın ve AccessKey bilgilerini görüntülemek için belirli kullanıcıyı seçin.

  2. Bir RAM kullanıcısının AccessKey Secret değeri yalnızca oluşturma sırasında gösterilir. Bu değeri kaybederseniz RAM konsolu üzerinden yeni bir AccessKey oluşturun. AccessKey oluşturma.