All Products
Search
Document Center

Object Storage Service:OSS Python SDK V2

Last Updated:Jun 21, 2026

GitHub | Panduan Pengembang OSS SDK for Python 2.0 | Dokumentasi OSS SDK for Python 2.0

Mulai cepat

Prasyarat

Anda memerlukan Python 3.8 atau versi yang lebih baru.

Untuk memeriksa versi Python Anda, jalankan perintah python --version. Jika Python belum terinstal atau versi Anda lebih rendah dari 3.8, unduh dan instal Python.

Instal SDK

  • Instal versi terbaru untuk memastikan contoh kode berjalan dengan benar.

    pip install alibabacloud-oss-v2
  • Impor paket SDK:

    import alibabacloud_oss_v2 as oss

Konfigurasi kredensial akses

Konfigurasikan kredensial dengan pasangan AccessKey pengguna RAM.

  1. Di Konsol RAM, buat Pengguna RAM dan pilih Using permanent AccessKey to access. Simpan Pasangan Kunci Akses tersebut, lalu berikan izin AliyunOSSFullAccess kepada pengguna.

  2. Gunakan pasangan AccessKey pengguna RAM untuk mengonfigurasi variabel lingkungan.

    Linux

    1. Tambahkan variabel lingkungan ke file ~/.bashrc.

      echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
      echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
      1. Terapkan perubahan.

        source ~/.bashrc
      2. Verifikasi variabel lingkungan.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

    macOS

    1. Periksa jenis shell default.

      echo $SHELL
      1. Ikuti langkah-langkah sesuai jenis shell Anda.

        Zsh

        1. Tambahkan variabel lingkungan ke file ~/.zshrc.

          echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
          echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
        2. Terapkan perubahan.

          source ~/.zshrc
        3. Verifikasi variabel lingkungan.

          echo $OSS_ACCESS_KEY_ID
          echo $OSS_ACCESS_KEY_SECRET

        Bash

        1. Tambahkan variabel lingkungan ke file ~/.bash_profile.

          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. Terapkan perubahan.

          source ~/.bash_profile
        3. Verifikasi variabel lingkungan.

          echo $OSS_ACCESS_KEY_ID
          echo $OSS_ACCESS_KEY_SECRET

    Windows

    CMD

    1. Atur variabel lingkungan di CMD.

      setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
      setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
      1. Verifikasi variabel lingkungan.

        echo %OSS_ACCESS_KEY_ID%
        echo %OSS_ACCESS_KEY_SECRET%

    PowerShell

    1. Atur variabel lingkungan di PowerShell.

      [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
      [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
      1. Verifikasi variabel lingkungan.

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

Inisialisasi klien

Penting

Karena adanya perubahan kebijakan untuk meningkatkan kepatuhan dan keamanan, mulai 20 Maret 2025, pengguna OSS baru harus menggunakan nama domain kustom (CNAME) untuk melakukan operasi API data pada bucket OSS yang berada di wilayah Tiongkok Daratan. Titik akhir publik default dibatasi untuk operasi ini. Lihat pengumuman resmi untuk daftar lengkap operasi yang terdampak. Jika Anda mengakses data melalui HTTPS, Anda harus mengikat Sertifikat SSL yang valid ke domain kustom Anda. Ini adalah wajib untuk akses Konsol OSS, karena konsol menerapkan HTTPS.

Sebelum menjalankan kode contoh, ganti placeholder seperti <region-id> dengan wilayah dan titik akhir yang sebenarnya, misalnya ap-southeast-1.

Sinkronkan OSSClient

import alibabacloud_oss_v2 as oss

def main():
    """
    Detail konfigurasi untuk menginisialisasi klien Python SDK V2:

    1. Versi signature: SDK menggunakan Signature V4 secara default untuk keamanan yang lebih baik.
    2. Konfigurasi wilayah: Saat menginisialisasi klien, Anda harus menentukan ID wilayah Alibaba Cloud.
    3. Konfigurasi titik akhir:
       - Anda dapat menggunakan parameter endpoint untuk menentukan titik akhir kustom untuk permintaan layanan.
       - Jika Anda tidak menentukan titik akhir, SDK secara otomatis membuat titik akhir publik berdasarkan wilayah yang ditentukan.
    4. Konfigurasi protokol:
       - SDK menggunakan HTTPS untuk membuat titik akhir secara default.
       - Untuk menggunakan HTTP, Anda harus secara eksplisit menentukan protokol dalam titik akhir.
    """

    # Muat kredensial dari variabel lingkungan untuk autentikasi.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default SDK dan atur penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Metode 1: Tentukan hanya wilayah (Direkomendasikan).
    # Anda harus menentukan ID wilayah. SDK secara otomatis membuat titik akhir HTTPS berdasarkan wilayah.
    cfg.region = '<region-id>' 

    # # Metode 2: Tentukan wilayah dan titik akhir.
    # # Anda harus menentukan ID wilayah.
    # cfg.region = '<region-id>'
    # # Tentukan titik akhir publik wilayah tempat bucket berada.
    # cfg.endpoint = '<endpoint>'

    # Buat klien OSS dengan konfigurasi yang ditentukan.
    client = oss.Client(cfg)

    # Definisikan string yang akan diunggah.
    text_string = "Hello, OSS!"
    data = text_string.encode('utf-8')  # Encode string sebagai byte string UTF-8.

    # Kirim permintaan untuk mengunggah objek. Tentukan nama bucket, kunci objek, dan data.
    result = client.put_object(oss.PutObjectRequest(
        bucket="Your Bucket Name",
        key="Your Object Key",
        body=data,
    ))

    # Cetak kode status, ID permintaan, dan ETag untuk memverifikasi bahwa permintaan berhasil.
    print(f'status code: {result.status_code}\n'
          f'request id: {result.request_id}\n'
          f'etag: {result.etag}'
    )

# Saat skrip ini dijalankan langsung, panggil fungsi main.
if __name__ == "__main__":
    main()

OSSClient Async

Persyaratan OSSClient Async:

  • alibabacloud-oss-v2: >= 1.2.0

  • Instal aiohttp: pip install aiohttp

import asyncio
import alibabacloud_oss_v2 as oss
import alibabacloud_oss_v2.aio as oss_aio

async def main():
    """
    Detail konfigurasi untuk menginisialisasi klien async Python SDK V2:

    1. Versi signature: SDK menggunakan Signature V4 secara default untuk keamanan yang lebih baik.
    2. Konfigurasi wilayah: Saat menginisialisasi AsyncClient, Anda harus menentukan ID wilayah Alibaba Cloud.
    3. Konfigurasi titik akhir:
       - Anda dapat menggunakan parameter endpoint untuk menentukan titik akhir kustom untuk permintaan layanan.
       - Jika Anda tidak menentukan titik akhir, SDK secara otomatis membuat titik akhir publik berdasarkan wilayah yang ditentukan.
    4. Konfigurasi protokol:
       - SDK menggunakan HTTPS untuk membuat titik akhir secara default.
       - Untuk menggunakan HTTP, Anda harus secara eksplisit menentukan protokol dalam titik akhir.
    5. Fitur asinkron:
       - Impor modul async: import alibabacloud_oss_v2.aio as oss_aio
       - Buat klien async: oss_aio.AsyncClient(cfg)
       - Semua operasi memerlukan kata kunci await.
       - Anda harus memanggil await client.close() dalam blok finally untuk menutup koneksi.
       - Anda harus menginstal dependensi aiohttp: pip install aiohttp
    """

    # Muat kredensial dari variabel lingkungan untuk autentikasi.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default SDK dan atur penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Metode 1: Tentukan hanya wilayah (Direkomendasikan).
    # Anda harus menentukan ID wilayah. SDK secara otomatis membuat titik akhir HTTPS berdasarkan wilayah.
    cfg.region = '<region-id>'

    # # Metode 2: Tentukan wilayah dan titik akhir.
    # # Anda harus menentukan ID wilayah.
    # cfg.region = '<region-id>'
    # # Tentukan titik akhir publik wilayah tempat bucket berada.
    # cfg.endpoint = '<endpoint>'

    # Buat klien async OSS dengan konfigurasi yang ditentukan.
    client = oss_aio.AsyncClient(cfg)

    try:
        # Definisikan string yang akan diunggah.
        text_string = "Hello, OSS!"
        data = text_string.encode('utf-8')  # Encode string sebagai byte string UTF-8.

        # Kirim permintaan async untuk mengunggah objek. Tentukan nama bucket, kunci objek, dan data.
        # Catatan: Gunakan kata kunci await untuk menunggu operasi async selesai.
        result = await client.put_object(
            oss.PutObjectRequest(
                bucket="Your Bucket Name",
                key="Your Object Key",
                body=data,
            )
        )

        # Cetak kode status, ID permintaan, dan ETag untuk memverifikasi bahwa permintaan berhasil.
        print(f'status code: {result.status_code}\n'
              f'request id: {result.request_id}\n'
              f'etag: {result.etag}'
        )

    except Exception as e:
        print(f'Upload gagal: {e}')

    finally:
        # Tutup koneksi klien async untuk mencegah kebocoran resource.
        await client.close()

# Saat skrip ini dijalankan langsung, panggil fungsi main.
if __name__ == "__main__":
    # Gunakan asyncio.run() untuk menjalankan fungsi main async.
    asyncio.run(main())

Output unggah berhasil:

status code: 200
request id: 6875F95738B0ED3030F086A0
etag: "56AAD346F0899BFE8BDD02C06BBE511E"

Konfigurasi klien

Parameter

Deskripsi

Contoh

region

(Wajib) Wilayah tujuan permintaan dikirim.

oss.config.Config(region="<region-id>")

credentials_provider

(Wajib) Penyedia kredensial akses.

oss.config.Config(credentials_provider=provider)

endpoint

Titik akhir layanan. Jika tidak ditentukan, klien secara otomatis menghasilkan titik akhir dari wilayah.

oss.config.Config(endpoint="oss-<region-id>.aliyuncs.com")

http_client

Klien HTTP. Jika tidak ditentukan, klien menggunakan klien HTTP default.

oss.config.Config(http_client=customClient)

retry_max_attempts

Jumlah maksimum percobaan ulang untuk permintaan HTTP yang gagal. Default adalah 3.

oss.config.Config(retry_max_attempts=5)

retryer

Strategi percobaan ulang kustom untuk permintaan HTTP.

oss.config.Config(retryer=customRetryer)

connect_timeout

Timeout koneksi dalam detik. Default adalah 10.

oss.config.Config(connect_timeout=20)

readwrite_timeout

Timeout baca/tulis dalam detik. Default adalah 20.

oss.config.Config(readwrite_timeout=30)

insecure_skip_verify

Melewati verifikasi sertifikat SSL. Default adalah false (verifikasi dilakukan).

oss.config.Config(insecure_skip_verify=true)

enabled_redirect

Mengaktifkan pengalihan HTTP. Default adalah false.

oss.config.Config(enabled_redirect=true)

proxy_host

Server proxy untuk permintaan.

oss.config.Config(proxy_host="http://user:passswd@proxy.example-***.com")

signature_version

Versi signature yang digunakan. Default adalah v4.

oss.config.Config(signature_version="v1")

disable_ssl

Menonaktifkan SSL dan menggunakan HTTP. Default adalah false (HTTPS digunakan).

oss.config.Config(disable_ssl=true)

use_path_style

Menunjukkan apakah akan menggunakan addressing gaya path (misalnya, https://endpoint/bucket-name). Default, false, menggunakan addressing gaya virtual-hosted (misalnya, https://bucket-name.endpoint).

oss.config.Config(use_path_style=true)

use_cname

Menggunakan nama domain kustom untuk akses. Default adalah false.

oss.config.Config(use_cname=true)

use_dualstack_endpoint

Menggunakan titik akhir dual-stack untuk akses. Default adalah false.

oss.config.Config(use_dualstack_endpoint=true)

use_accelerate_endpoint

Menggunakan titik akhir percepatan untuk akses. Default adalah false.

oss.config.Config(use_accelerate_endpoint=true)

use_internal_endpoint

Menggunakan titik akhir internal untuk akses. Default adalah false.

oss.config.Config(use_internal_endpoint=true)

disable_upload_crc64_check

Menonaktifkan pemeriksaan CRC64 untuk unggahan. Default adalah false (pemeriksaan diaktifkan).

oss.config.Config(disable_upload_crc64_check=true)

disable_download_crc64_check

Menonaktifkan pemeriksaan CRC64 untuk unduhan. Default adalah false (pemeriksaan diaktifkan).

oss.config.Config(disable_download_crc64_check=true)

additional_headers

Menentukan header permintaan tambahan yang disertakan dalam signature. Parameter ini hanya berlaku untuk versi signature v4.

oss.config.Config(additional_headers=["content-length"])

user_agent

Menentukan string kustom untuk ditambahkan ke header User-Agent.

oss.config.Config(user_agent="user identifier")

Nama domain kustom

Nama domain kustom memungkinkan pratinjau objek di browser dan pengiriman yang dipercepat CDN.

Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan wilayah dan titik akhir, misalnya, ap-southeast-1.
import alibabacloud_oss_v2 as oss

def main():
    # Muat kredensial dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default SDK dan atur penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Tentukan wilayah bucket.
    cfg.region = '<region-id>'

    # Tentukan nama domain kustom Anda. Misalnya, www.example-***.com.
    cfg.endpoint = 'https://www.example-***.com'

    # Atur use_cname ke True untuk menggunakan nama domain kustom.
    cfg.use_cname = True

    # Buat klien OSS.
    client = oss.Client(cfg)

    # Gunakan klien untuk operasi selanjutnya.

# Titik masuk skrip.
if __name__ == "__main__":
    main()

Kontrol timeout

Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan wilayah dan titik akhir, misalnya, ap-southeast-1.
import alibabacloud_oss_v2 as oss
from typing import Dict, Any

def main():
    # Muat kredensial dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default.
    cfg = oss.config.load_default()

    # Ganti timeout koneksi default (10 detik).
    cfg.connect_timeout = 30

    # Ganti timeout baca/tulis default (20 detik).
    cfg.readwrite_timeout = 30

    # Atur penyedia kredensial.
    cfg.credentials_provider = credentials_provider

    # Tentukan wilayah.
    cfg.region = '<region-id>'

    # Buat klien OSS dengan konfigurasi yang ditentukan.
    client = oss.Client(cfg)

# Jalankan fungsi main saat skrip dieksekusi langsung.
if __name__ == "__main__":
    main()

Kebijakan percobaan ulang

Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan wilayah dan titik akhir, misalnya, ap-southeast-1.
import alibabacloud_oss_v2 as oss

def main():
    """
    Konfigurasi kebijakan percobaan ulang SDK:

    Kebijakan percobaan ulang default:
    Jika Anda tidak mengonfigurasi kebijakan percobaan ulang, SDK menggunakan StandardRetryer() secara default. Konfigurasi default adalah sebagai berikut:
    - max_attempts: Jumlah maksimum percobaan ulang. Default: 3.
    - max_backoff: Waktu backoff maksimum dalam detik. Default: 20.
    - base_delay: Waktu delay dasar dalam detik. Default: 0.2.
    - backoff_delayer: Algoritma backoff. SDK menggunakan backoff eksponensial dengan jitter (FullJitter) secara default.
      Formula: random.uniform(0, 1) * min(2 ** attempts * base_delay, max_backoff)
    - error_retryables: Jenis kesalahan yang dapat dicoba ulang. Untuk informasi lebih lanjut, lihat https://gosspublic.alicdn.com/sdk-doc/alibabacloud-oss-python-sdk-v2/latest/_modules/alibabacloud_oss_v2/retry/error_retryable.html

    Ketika terjadi kesalahan yang dapat dicoba ulang, klien menunda dan mencoba ulang permintaan sesuai konfigurasi ini.
    Latensi permintaan keseluruhan meningkat dengan setiap percobaan ulang. Jika konfigurasi default tidak memenuhi kebutuhan Anda,
    Anda dapat menyesuaikan parameter percobaan ulang atau memodifikasi implementasi percobaan ulang.
    """

    # Muat kredensial dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default.
    cfg = oss.config.load_default()

    # Contoh konfigurasi kebijakan percobaan ulang:

    # 1. Sesuaikan jumlah maksimum percobaan ulang (default: 3, diatur ke 5 di sini).
    cfg.retryer = oss.retry.StandardRetryer(max_attempts=5)

    # 2. Sesuaikan waktu delay backoff.
    # Sesuaikan base_delay menjadi 0.5 detik (default: 0.2) dan max_backoff menjadi 25 detik (default: 20).
    # cfg.retryer = oss.retry.StandardRetryer(max_backoff=25, base_delay=0.5)

    # 3. Sesuaikan algoritma backoff.
    # Ganti algoritma FullJitter default dengan backoff delay tetap 2 detik.
    # cfg.retryer = oss.retry.StandardRetryer(backoff_delayer=oss.retry.FixedDelayBackoff(2))

    # 4. Nonaktifkan kebijakan percobaan ulang.
    # Gunakan retry.NopRetryer() untuk menonaktifkan semua percobaan ulang.
    # cfg.retryer = oss.retry.NopRetryer()

    # Atur penyedia kredensial.
    cfg.credentials_provider = credentials_provider

    # Tentukan wilayah tempat bucket berada.
    cfg.region = '<region-id>'

    # Buat klien OSS dengan konfigurasi yang ditentukan.
    client = oss.Client(cfg)

    # Gunakan klien yang dibuat untuk operasi selanjutnya...

# Saat skrip ini dijalankan langsung, panggil fungsi main.
if __name__ == "__main__":
    main()

Atur ukuran kolam koneksi

Untuk http_client, gunakan parameter max_connections untuk mengatur ukuran kolam koneksi.

Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan wilayah yang sebenarnya, misalnya, ap-southeast-1.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Contoh konfigurasi kolam koneksi OSS Python SDK V2

import alibabacloud_oss_v2 as oss

def main():

    # Muat kredensial akses dari variabel lingkungan (OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET harus diatur).
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default SDK dan atur penyedia kredensial.
    config = oss.config.load_default()
    config.credentials_provider = credentials_provider

    # Atur wilayah layanan OSS.
    config.region = "<region-id>"

    # ============ Konfigurasi klien HTTP kustom ============
    # Buat dictionary untuk konfigurasi klien HTTP.
    http_client_config = {}
    
    # Atur ukuran kolam koneksi ke 100. Default adalah 20.
    http_client_config["max_connections"] = 100
    
    # Buat klien HTTP dengan konfigurasi kustom.
    http_client = oss.transport.RequestsHttpClient(**http_client_config)
    
    # Atur klien HTTP kustom dalam objek konfigurasi.
    config.http_client = http_client
    # ============================================
    
    # Inisialisasi instance klien OSS.
    client = oss.Client(config)

    # Konfigurasikan informasi bucket dan objek.
    bucket = "example-bucket"             # nama bucket
    key = "dest.jpg"                      # kunci objek di OSS
    file_path = "dest.jpg"                # Jalur penyimpanan lokal

    # Unduh objek dari OSS ke jalur lokal yang ditentukan.
    client.get_object_to_file(oss.GetObjectRequest(bucket, key), file_path)
    print(f"Unduhan objek selesai: {key} -> {file_path}")
    print(f"Ukuran kolam koneksi diatur ke: {http_client_config['max_connections']}")

if __name__ == "__main__":
    # Titik masuk program
    try:
        main()
    except Exception as e:
        print(f"Terjadi kesalahan selama eksekusi: {e}")
        raise

HTTP/HTTPS

Gunakan cfg.disable_ssl = True untuk menonaktifkan permintaan HTTPS.

Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan wilayah dan titik akhir, misalnya, atau ap-southeast-1.
import alibabacloud_oss_v2 as oss

def main():
    # Muat kredensial dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default SDK dan atur penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Tentukan wilayah klien.
    cfg.region = '<region-id>'

    # Nonaktifkan permintaan HTTPS.
    cfg.disable_ssl = True

    # Buat klien OSS menggunakan konfigurasi yang ditentukan.
    client = oss.Client(cfg)

    # Gunakan klien yang dibuat untuk melakukan operasi selanjutnya...

# Titik masuk berikut memanggil fungsi main saat skrip dijalankan langsung.
if __name__ == "__main__":
    main()

Server proxy

Konfigurasikan server proxy ketika kebijakan perusahaan membatasi akses internet langsung.

Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan wilayah dan titik akhir yang valid, misalnya, atau ap-southeast-1.
import alibabacloud_oss_v2 as oss

def main():
    # Muat kredensial dari variabel lingkungan untuk autentikasi.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default SDK dan atur penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Tentukan wilayah tempat bucket berada.
    cfg.region = '<region-id>'

    # Atur user agent.
    cfg.user_agent = 'aliyun-sdk-python'

    # Atur server proxy.
    cfg.proxy_host = 'http://user:passswd@proxy.example-***.com'

    # Buat klien OSS dengan konfigurasi yang ditentukan.
    client = oss.Client(cfg)

    # Gunakan klien yang dibuat untuk melakukan operasi selanjutnya...

# Saat skrip ini dijalankan langsung, panggil fungsi main.
if __name__ == "__main__":
    main()

Gunakan titik akhir internal

Akses resource OSS di wilayah yang sama melalui titik akhir internal untuk mengurangi biaya dan latensi.

Sebelum menjalankan kode contoh, ganti placeholder seperti <region-id> dengan nilai wilayah dan titik akhir yang sebenarnya, misalnya, ap-southeast-1.
import alibabacloud_oss_v2 as oss

def main():
    # Muat kredensial dari variabel lingkungan untuk autentikasi.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default SDK dan atur penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Metode 1: Tentukan wilayah dan atur use_internal_endpoint ke true.
    # Tentukan wilayah tempat bucket berada.
    cfg.region = '<region-id>'
    cfg.use_internal_endpoint = True

    # # Metode 2: Tentukan wilayah dan titik akhir secara langsung.
    # # Tentukan wilayah tempat bucket berada.
    # cfg.region = '<region-id>'
    # # Tentukan titik akhir internal untuk wilayah bucket.
    # cfg.endpoint = '<endpoint>'

    # Buat klien OSS.
    client = oss.Client(cfg)

    # Gunakan klien untuk operasi selanjutnya...

# Panggil fungsi main jika skrip dieksekusi langsung.
if __name__ == "__main__":
    main()

Akselerasi transfer

Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan wilayah dan titik akhir, misalnya, atau ap-southeast-1.
import alibabacloud_oss_v2 as oss

def main():
    # Muat kredensial dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default SDK dan atur penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Metode 1: Tentukan wilayah dan atur use_accelerate_endpoint ke true.
    # Tentukan wilayah bucket.
    cfg.region = '<region-id>'
    cfg.use_accelerate_endpoint = True

    # # Metode 2: Tentukan wilayah dan titik akhir percepatan secara langsung.
    # # Tentukan wilayah bucket.
    # cfg.region = '<region-id>'
    # # Tentukan titik akhir percepatan.
    # cfg.endpoint = 'https://oss-accelerate.aliyuncs.com'

    # Buat klien OSS dengan konfigurasi.
    client = oss.Client(cfg)

    # Gunakan klien ini untuk operasi selanjutnya...

# Jalankan fungsi main jika skrip dieksekusi langsung.
if __name__ == "__main__":
    main()

Gunakan domain khusus

Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan wilayah dan titik akhir Anda, misalnya, ap-southeast-1.
import alibabacloud_oss_v2 as oss

def main():
    # Muat kredensial dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default SDK dan atur penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Tentukan wilayah tempat bucket berada.
    cfg.region = '<region-id>'

    # Tentukan domain khusus Anda. Misalnya, https://service.corp.example.com.
    cfg.endpoint = 'https://service.corp.example.com'

    # Buat klien OSS dengan konfigurasi yang ditentukan.
    client = oss.Client(cfg)

    # Gunakan klien yang dibuat untuk melakukan operasi selanjutnya...

# Saat skrip ini dijalankan langsung, panggil fungsi main.
if __name__ == "__main__":
    main()

Klien HTTP kustom

Ganti klien HTTP default dengan cfg.http_client ketika parameter konfigurasi standar tidak mencukupi.

Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan wilayah dan titik akhir yang valid, misalnya, atau ap-southeast-1.
import alibabacloud_oss_v2 as oss
from typing import Dict, Any

def main():
    # Muat kredensial dari variabel lingkungan untuk autentikasi.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default.
    cfg = oss.config.load_default()

    # Atur parameter untuk klien HTTP.
    kwargs: Dict[str, Any] = {}

    # Atur sesi.
    # kwargs["session"] = requests.Session()

    # Atur adapter.
    # kwargs["adapter"] = HTTPAdapter()

    # Menentukan apakah akan melewati verifikasi sertifikat. Default: false.
    # kwargs["insecure_skip_verify"] = False

    # Menentukan apakah akan mengaktifkan pengalihan HTTP. Default: false.
    # kwargs["enabled_redirect"] = False

    # Atur server proxy.
    # kwargs["proxy_host"] = config.proxy_host

    # Atur ukuran blok.
    # kwargs["block_size"] = 16 * 1024

    # Timeout koneksi dalam detik. Default: 10.
    kwargs["connect_timeout"] = 30

    # Timeout baca-tulis dalam detik. Default: 20.
    kwargs["readwrite_timeout"] = 30

    # Koneksi maksimum. Default: 20.
    kwargs["max_connections"] = 1024

    # Buat klien HTTP dengan parameter yang ditentukan.
    cfg.http_client = oss.transport.RequestsHttpClient(**kwargs)

    # Atur penyedia kredensial.
    cfg.credentials_provider = credentials_provider

    # Tentukan wilayah tempat bucket berada.
    cfg.region = '<region-id>'

    # Buat klien OSS dengan konfigurasi yang ditentukan.
    client = oss.Client(cfg)

    # Gunakan klien untuk operasi OSS selanjutnya...

# Memanggil fungsi main saat skrip dieksekusi langsung.
if __name__ == "__main__":
    main()

Konfigurasi kredensial akses

Pilih metode kredensial sesuai kasus penggunaan Anda.

Cara memilih kredensial akses

Metode inisialisasi

Skenario

Prasyarat

Jenis kredensial

Masa berlaku

Metode pembaruan

Gunakan AccessKey pengguna RAM

Aplikasi jangka panjang di lingkungan aman tanpa kebutuhan rotasi kredensial.

Ya

AccessKey

Jangka panjang

Rotasi manual

Gunakan token STS

Aplikasi di lingkungan tidak tepercaya yang memerlukan akses terbatas waktu dan terbatas cakupan.

Ya

Token STS

Sementara

Pembaruan manual

Gunakan ARN peran RAM

Skema akses delegasi seperti akses lintas akun.

Ya

Token STS

Sementara

Pembaruan otomatis

Gunakan peran RAM instans ECS

Aplikasi pada komputasi Alibaba Cloud (instans ECS, ECI, atau node pekerja ACK).

Tidak

Token STS

Sementara

Pembaruan otomatis

Gunakan ARN peran OIDC

Aplikasi tidak tepercaya pada node pekerja ACK.

Tidak

Token STS

Sementara

Pembaruan otomatis

Gunakan kredensial akses kustom

Pengambilan kredensial kustom ketika metode bawaan tidak mencukupi.

Kustom

Kustom

Kustom

Kustom

Gunakan AccessKey pengguna RAM

Inisialisasi penyedia kredensial dengan pasangan AccessKey (ID AccessKey dan Rahasia AccessKey) dari akun Alibaba Cloud atau pengguna RAM Anda. Metode ini memerlukan manajemen kunci manual dan membawa risiko keamanan yang lebih tinggi.

Peringatan
  • Akun Alibaba Cloud memiliki izin penuh atas resource-nya. Kebocoran pasangan AccessKey menimbulkan ancaman keamanan signifikan bagi sistem Anda. Kami sangat menyarankan agar Anda tidak menggunakan pasangan AccessKey akun Alibaba Cloud. Sebagai gantinya, gunakan pasangan AccessKey pengguna RAM dengan izin minimum yang diperlukan.

  • Untuk membuat pasangan AccessKey untuk pengguna RAM, lihat Buat pasangan AccessKey. ID AccessKey dan rahasia AccessKey hanya ditampilkan saat Anda membuat pasangan tersebut. Simpan di lokasi aman segera. Jika Anda kehilangannya, Anda tidak dapat mengambilnya kembali dan harus membuat pasangan AccessKey baru.

Variabel lingkungan

  1. Gunakan pasangan AccessKey pengguna RAM untuk mengonfigurasi variabel lingkungan.

  2. Setelah memperbarui variabel lingkungan sistem, restart atau refresh lingkungan build dan runtime Anda, termasuk IDE, command-line interface, aplikasi desktop lainnya, dan layanan latar belakang, untuk memuat variabel lingkungan sistem terbaru.

  3. Gunakan variabel lingkungan untuk meneruskan kredensial.

    Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan wilayah dan titik akhir, misalnya, atau ap-southeast-1.
    import alibabacloud_oss_v2 as oss
    
    def main():
        # Muat kredensial dari variabel lingkungan untuk autentikasi.
        credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
    
        # Muat konfigurasi default SDK dan atur penyedia kredensial.
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # Tentukan wilayah tempat bucket berada.
        cfg.region = '<region-id>'
    
        # Buat klien OSS dengan konfigurasi yang ditentukan.
        client = oss.Client(cfg)
    
        # Gunakan klien yang dibuat untuk melakukan operasi selanjutnya...
    
    # Saat skrip ini dijalankan langsung, panggil fungsi main.
    if __name__ == "__main__":
        main()  # Titik masuk skrip. Memanggil fungsi main saat file dijalankan langsung.

Kredensial statis

Hard-code pasangan AccessKey untuk pengujian (tidak untuk produksi):

Peringatan

Jangan menyematkan kredensial langsung dalam aplikasi Anda di lingkungan produksi. Metode ini hanya untuk tujuan pengujian.

Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan wilayah dan titik akhir, misalnya, atau ap-southeast-1.
import alibabacloud_oss_v2 as oss

def main():
    # Buat penyedia kredensial statis dan atur secara eksplisit ID AccessKey dan rahasia AccessKey.
    # Ganti placeholder dengan ID AccessKey dan rahasia AccessKey pengguna RAM Anda.
    credentials_provider = oss.credentials.StaticCredentialsProvider(
        access_key_id="RAM AccessKey ID",
        access_key_secret="RAM AccessKey Secret"
    )

    # Muat konfigurasi default SDK dan atur penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Tentukan wilayah tempat bucket berada.
    cfg.region = '<region-id>'

    # Buat klien OSS dengan konfigurasi yang ditentukan.
    client = oss.Client(cfg)

    # Gunakan klien yang dibuat untuk melakukan operasi selanjutnya...

# Saat skrip ini dijalankan langsung, panggil fungsi main.
if __name__ == "__main__":
    main()  # Titik masuk skrip. Memanggil fungsi main saat file dijalankan langsung.

Gunakan kredensial sementara dari STS

Inisialisasi penyedia kredensial dengan kredensial STS sementara (ID AccessKey, Rahasia AccessKey, dan Token Keamanan). Token harus diperbarui secara manual sebelum kedaluwarsa.

Penting

Variabel lingkungan

  1. Gunakan kredensial identitas sementara untuk mengatur variabel lingkungan.

    macOS/Linux/Unix

    Peringatan
    • Variabel lingkungan ini memerlukan kredensial identitas sementara (ID AccessKey, Rahasia AccessKey, dan Token Keamanan) dari STS, bukan ID AccessKey dan Rahasia AccessKey pengguna RAM.

    • ID AccessKey yang diperoleh dari STS diawali dengan STS., misalnya, STS.L4aBSCSJVMuKg5U1****.

    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

    Peringatan
    • Variabel lingkungan ini memerlukan kredensial identitas sementara (ID AccessKey, Rahasia AccessKey, dan Token Keamanan) dari STS, bukan ID AccessKey dan Rahasia AccessKey pengguna RAM.

    • ID AccessKey yang diperoleh dari STS diawali dengan STS., misalnya, STS.L4aBSCSJVMuKg5U1****.

    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. Konfigurasikan SDK untuk membaca kredensial dari variabel lingkungan.

    Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan wilayah dan titik akhir yang sebenarnya, misalnya, atau ap-southeast-1.
    import alibabacloud_oss_v2 as oss
    
    def main():
        # Muat kredensial dari variabel lingkungan.
        credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
    
        # Muat konfigurasi default SDK dan atur penyedia kredensial.
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # Tentukan wilayah tempat Bucket berada.
        cfg.region = '<region-id>'
    
        # Buat klien OSS dengan konfigurasi yang ditentukan.
        client = oss.Client(cfg)
    
        # Gunakan klien yang dibuat untuk melakukan operasi selanjutnya...
    
    # Titik masuk skrip
    if __name__ == "__main__":
        main()  # Memanggil fungsi main.

Kredensial statis

Hard-code kredensial sementara secara langsung (hanya untuk pengujian):

Peringatan

Jangan menyematkan kredensial akses dalam aplikasi Anda di lingkungan produksi. Metode ini hanya untuk tujuan pengujian.

Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan wilayah dan titik akhir yang sebenarnya, misalnya, atau ap-southeast-1.
import alibabacloud_oss_v2 as oss

def main():
    # Gunakan ID AccessKey dan Rahasia AccessKey sementara dari STS, bukan kredensial akun Alibaba Cloud Anda.
    # Perhatikan bahwa ID AccessKey dari STS diawali dengan "STS.".
    sts_access_key_id = 'STS.****************'
    sts_access_key_secret = 'yourAccessKeySecret'
    # Berikan Token Keamanan yang diperoleh dari STS.
    sts_security_token = 'yourSecurityToken'

    # Buat penyedia kredensial statis dan atur secara eksplisit ID AccessKey, Rahasia AccessKey, dan Token Keamanan sementara.
    credentials_provider = oss.credentials.StaticCredentialsProvider(
        access_key_id=sts_access_key_id,
        access_key_secret=sts_access_key_secret,
        security_token=sts_security_token,
    )

    # Muat konfigurasi default SDK dan atur penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Tentukan wilayah tempat Bucket berada.
    cfg.region = '<region-id>'

    # Buat klien OSS dengan konfigurasi yang ditentukan.
    client = oss.Client(cfg)

    # Gunakan klien yang dibuat untuk melakukan operasi selanjutnya...

# Titik masuk skrip
if __name__ == "__main__":
    main()  # Memanggil fungsi main.

Gunakan ARN peran RAM

Inisialisasi penyedia kredensial dengan ARN peran RAM untuk akses delegasi (seperti lintas akun). SDK secara otomatis memperbarui token STS melalui AssumeRole. Gunakan parameter policy untuk membatasi izin.

Penting
  • Akun Alibaba Cloud memiliki izin penuh atas resource-nya. Kebocoran pasangan AccessKey menimbulkan risiko keamanan signifikan bagi akun Anda. Jangan gunakan pasangan AccessKey akun Alibaba Cloud. Gunakan pasangan AccessKey dari pengguna RAM dengan izin minimum yang diperlukan saja.

  • Untuk membuat pasangan AccessKey untuk pengguna RAM, lihat Buat pasangan AccessKey. ID AccessKey dan rahasia AccessKey hanya ditampilkan sekali, saat pembuatan. Anda harus menyimpannya segera. Jika pasangan AccessKey hilang, Anda harus membuat yang baru untuk menggantinya.

  • Untuk mendapatkan ARN peran RAM, lihat CreateRole - Buat peran RAM.

  1. Tambahkan dependensi alibabacloud_credentials.

    pip install alibabacloud_credentials
  2. Konfigurasikan pasangan AccessKey dan ARN peran RAM sebagai kredensial akses.

    Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan wilayah dan titik akhir yang sebenarnya, misalnya, atau ap-southeast-1.
    # -*- coding: utf-8 -*-
    import os
    from alibabacloud_credentials.client import Client
    from alibabacloud_credentials.models import Config
    import alibabacloud_oss_v2 as oss
    
    def main():
        config = Config(
            # ID AccessKey dan rahasia AccessKey pengguna RAM, diambil dari variabel lingkungan.
            access_key_id=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
            access_key_secret=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
            type='ram_role_arn',
            # ARN peran RAM yang akan diasumsikan. Contoh: acs:ram::123456789012****:role/adminrole. Anda dapat mengatur ini menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN.
            role_arn='<RoleArn>',
            # Nama sesi peran. Anda dapat mengatur ini menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME.
            role_session_name='<RoleSessionName>',
            # Opsional. Kebijakan izin yang lebih restriktif. Contoh: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
            policy='<Policy>',
            # Opsional. Durasi sesi dalam detik. Default: 3600 (1 jam).
            role_session_expiration=3600
        )
    
        cred_client = Client(config)
    
        def get_credentials_wrapper():
            cred = cred_client.get_credential()
            return oss.credentials.Credentials(access_key_id=cred.access_key_id, access_key_secret=cred.access_key_secret, security_token=cred.security_token)
    
        # Buat penyedia kredensial untuk memuat kredensial secara dinamis.
        credentials_provider = oss.credentials.CredentialsProviderFunc(func=get_credentials_wrapper)
    
        # Muat konfigurasi default SDK OSS.
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # Tentukan wilayah tempat bucket berada.
        cfg.region = '<region-id>'
    
        # Buat instance klien OSS.
        client = oss.Client(cfg)
    
        # Gunakan klien untuk operasi selanjutnya...
    
    if __name__ == "__main__":
        main()  # Titik masuk skrip. Memanggil fungsi main saat file dijalankan langsung.

Gunakan peran RAM instans ECS

Untuk aplikasi pada instans ECS, instans ECI, atau node pekerja Container Service for Kubernetes, gunakan peran RAM instans ECS. SDK secara otomatis memperbarui token STS tanpa kredensial yang dikodekan keras. Buat peran RAM.

  1. Tambahkan dependensi alibabacloud_credentials.

    pip install alibabacloud_credentials
  2. Konfigurasikan peran RAM instans ECS sebagai kredensial akses.

    Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan ID wilayah yang sebenarnya, misalnya, atau ap-southeast-1.
    from alibabacloud_credentials.client import Client
    from alibabacloud_credentials.models import Config
    import alibabacloud_oss_v2 as oss
    
    def main():
        config = Config(
            type='ecs_ram_role',      # Menentukan jenis kredensial akses. Harus 'ecs_ram_role'.
            role_name='EcsRoleExample'    # Opsional: Nama peran RAM yang diberikan ke instans ECS. Jika dihilangkan, nama peran diambil secara otomatis. Kami menyarankan Anda mengatur parameter ini untuk mengurangi permintaan.
        )
    
        cred_client = Client(config)
    
        def get_credentials_wrapper():
            cred = cred_client.get_credential()
            return oss.credentials.Credentials(access_key_id=cred.access_key_id, access_key_secret=cred.access_key_secret, security_token=cred.security_token)
    
        # Buat penyedia kredensial untuk memuat kredensial secara dinamis.
        credentials_provider = oss.credentials.CredentialsProviderFunc(func=get_credentials_wrapper)
    
        # Muat konfigurasi default SDK OSS.
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # Tentukan wilayah tempat bucket berada.
        cfg.region = '<region-id>'
    
        # Buat instance klien OSS.
        client = oss.Client(cfg)
    
        # Gunakan klien untuk operasi selanjutnya...
    
    if __name__ == "__main__":
        main()

ARN peran OIDC

Untuk aplikasi tidak tepercaya pada node pekerja Container Service for Kubernetes, gunakan RRSA (RAM Roles for Service Accounts) untuk menerapkan prinsip least-privilege di tingkat pod. RRSA memasang file token OIDC per pod dan memanggil AssumeRoleWithOIDC untuk menukarnya dengan token STS terbatas. Isolasi izin pod berdasarkan RRSA.

  1. Tambahkan dependensi alibabacloud_credentials.

    pip install alibabacloud_credentials
  1. Konfigurasikan ARN peran OIDC sebagai kredensial akses.

    Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan wilayah dan titik akhir, misalnya, atau ap-southeast-1.
    # -*- coding: utf-8 -*-
    import os
    from alibabacloud_credentials.client import Client
    from alibabacloud_credentials.models import Config
    import alibabacloud_oss_v2 as oss
    
    def main():
        config = Config(
            # Tentukan jenis kredensial. Nilainya tetap 'oidc_role_arn'.
            type='oidc_role_arn',
            # ARN peran RAM. Anda dapat mengatur nilai ini dengan menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN.
            role_arn=os.environ.get('<RoleArn>'),
            # ARN penyedia OIDC. Anda dapat mengatur nilai ini dengan menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_PROVIDER_ARN.
            oidc_provider_arn=os.environ.get('<OidcProviderArn>'),
            # Jalur file token OIDC. Anda dapat mengatur nilai ini dengan menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_TOKEN_FILE.
            oidc_token_file_path=os.environ.get('<OidcTokenFilePath>'),
            # Nama sesi peran. Anda dapat mengatur nilai ini dengan menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME.
            role_session_name='<RoleSessionName>',
            # Kebijakan izin yang lebih restriktif. Parameter ini opsional. Contoh: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
            policy='<Policy>',
            # Masa berlaku sesi peran dalam detik. Default adalah 3600 detik (1 jam). Parameter ini opsional.
            role_session_expiration=3600
        )
    
        cred_client = Client(config)
    
        def get_credentials_wrapper():
            cred = cred_client.get_credential()
            return oss.credentials.Credentials(access_key_id=cred.access_key_id, access_key_secret=cred.access_key_secret, security_token=cred.security_token)
    
        # Buat penyedia kredensial untuk memuat kredensial secara dinamis.
        credentials_provider = oss.credentials.CredentialsProviderFunc(func=get_credentials_wrapper)
    
        # Muat konfigurasi default SDK OSS.
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # Tentukan wilayah tempat bucket berada.
        cfg.region = '<region-id>'
    
        # Buat instance klien OSS.
        client = oss.Client(cfg)
    
        # Gunakan klien untuk operasi selanjutnya...
    
    # Panggil fungsi main saat skrip ini dijalankan langsung.
    if __name__ == "__main__":
        main()  # Titik masuk skrip. Memanggil fungsi main saat file dijalankan langsung.

Kredensial akses kustom

Menyesuaikan pengambilan kredensial dengan salah satu pendekatan berikut:

  1. Menggunakan antarmuka credentials.CredentialsProviderFunc

    Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan wilayah dan titik akhir yang sebenarnya, misalnya, atau ap-southeast-1.
    import argparse
    import alibabacloud_oss_v2 as oss
    import os
    
    def main():
    
        def get_credentials_wrapper():
            # Mengembalikan kredensial jangka panjang.
            return oss.credentials.Credentials(access_key_id='access_key_id', access_key_secret='access_key_security')
            # Mengembalikan kredensial STS sementara.
            # return oss.credentials.Credentials(access_key_id='access_key_id', access_key_secret='access_key_security', security_token='security_token')
    
        credentials_provider = oss.credentials.CredentialsProviderFunc(func=get_credentials_wrapper)
    
       # Muat konfigurasi default SDK dan atur penyedia kredensial.
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
        
        # Tentukan wilayah tempat bucket berada.
        cfg.region = "<region-id>"
    
        # Buat klien OSS dengan konfigurasi yang ditentukan.
        client = oss.Client(cfg)
    
        # Gunakan klien untuk melakukan operasi selanjutnya...
    
    if __name__ == "__main__":
        main()  # Titik masuk skrip. Memanggil fungsi main saat file dijalankan langsung.
  2. Mengimplementasikan antarmuka credentials.CredentialsProvider

    Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan wilayah dan titik akhir yang sebenarnya, misalnya, atau ap-southeast-1.
    # -*- coding: utf-8 -*-
    import alibabacloud_oss_v2 as oss
    
    class CredentialProviderWrapper(oss.credentials.CredentialsProvider):
        def get_credentials(self):
            # TODO
            # Sesuaikan logika untuk mendapatkan kredensial akses.
    
            # Mengembalikan kredensial jangka panjang: access_key_id, access_key_secret.
            return oss.credentials.Credentials('<access_key_id>', '<access_key_secret>')
    
            # Mengembalikan kredensial STS sementara: access_key_id, access_key_secret, token.
            # Kredensial sementara harus diperbarui sebelum kedaluwarsa.
            # return oss.credentials.Credentials('<access_key_id>', '<access_key_secret>', '<token>');
    
    def main():
        # Instansiasi penyedia kredensial kustom.
        credentials_provider = CredentialProviderWrapper()
    
        # Muat konfigurasi default SDK OSS.
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # Tentukan wilayah tempat bucket berada.
        cfg.region = '<region-id>'
    
        client = oss.Client(cfg)
    
        # Gunakan klien untuk melakukan operasi selanjutnya...
    
    if __name__ == "__main__":
        main()  # Titik masuk skrip. Memanggil fungsi main saat file dijalankan langsung.

Akses anonim

Akses resource OSS baca-publik tanpa kredensial.

Sebelum menjalankan kode contoh, ganti placeholder <region-id> dengan wilayah dan titik akhir yang sebenarnya, misalnya, atau ap-southeast-1.
import alibabacloud_oss_v2 as oss

# Buat penyedia kredensial anonim.
credentials_provider = oss.credentials.AnonymousCredentialsProvider()

# Konfigurasikan klien.
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
# Tentukan wilayah bucket.
cfg.region = '<region-id>'

# Buat klien OSS.
client = oss.Client(cfg)

Penyelesaian masalah kesalahan

Saat permintaan gagal, respons menyertakan kode status HTTP, pesan, ID permintaan, dan kode kesalahan (EC). Gunakan EC untuk mendiagnosis akar penyebabnya.

  1. Sebagai contoh, kode berikut memicu kesalahan dengan mencoba mengunduh objek yang tidak ada.

    Sebelum menjalankan kode contoh, ganti placeholder seperti <region-id> dengan wilayah dan titik akhir yang sebenarnya, misalnya, atau ap-southeast-1.
    import alibabacloud_oss_v2 as oss
    
    def main():
        # Muat kredensial dari variabel lingkungan untuk autentikasi.
        credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
    
        # Muat konfigurasi default SDK dan atur penyedia kredensial.
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # Atur wilayah dalam konfigurasi.
        cfg.region = '<region-id>'
    
        # Buat klien OSS dengan konfigurasi yang ditentukan.
        client = oss.Client(cfg)
    
        # Kirim permintaan untuk mendapatkan objek, menentukan nama bucket dan kunci objek.
        result = client.get_object(oss.GetObjectRequest(
            bucket="Your Bucket Name",  # Tentukan nama bucket.
            key="Your Object Key",  # Tentukan kunci objek.
        ))
    
        # Cetak kode status dan ID permintaan dari respons.
        print(f'status code: {result.status_code},'
              f' request id: {result.request_id},'
        )
    
        # Gunakan context manager untuk memastikan resource dilepas.
        with result.body as body_stream:
            data = body_stream.read()
            print(f"Pembacaan objek selesai. Panjang data: {len(data)} byte")
    
            path = "./get-object-sample.txt"
            with open(path, 'wb') as f:
                f.write(data)
            print(f"Objek diunduh dan disimpan ke: {path}")
    
    if __name__ == "__main__":
        main()  # Titik masuk skrip.
  2. Menjalankan skrip mengembalikan kesalahan berikut. Respons menyertakan baris 'EC': '0026-00000001', yang memberikan pengenal unik untuk penyebab kesalahan.

    alibabacloud_oss_v2.exceptions.OperationError: operation error GetObject: Error returned by Service.
            Http Status Code: 404.
            Error Code: NoSuchKey.
            Request Id: 67CA9AD3ECB4DB3034E5A92D.
            Message: The specified key does not exist..
            EC: 0026-00000001.
            Timestamp: 2025-03-07 07:05:55+00:00.
            Request Endpoint: GET https://xxx.oss-cn-hangzhou.aliyuncs.com/asghdjfjdas.
  3. Untuk mendiagnosis kesalahan, gunakan EC dari output kesalahan dan ikuti langkah-langkah berikut.

    1. Buka Platform Diagnostik Mandiri OpenAPI.

    2. Di kotak pencarian, masukkan EC, misalnya, 0026-00000001, lalu klik Diagnose.

    3. Tinjau hasil pencarian untuk mengetahui penyebab dan solusi kesalahan. Halaman diagnostik merinci Deskripsi Masalah (objek target tidak ada) dan mencantumkan Penyebab Kemungkinan (misalnya, objek gagal diunggah atau dihapus oleh pengguna, aturan siklus hidup, atau replikasi lintas wilayah), Contoh Masalah, dan Solusi. Solusi tersebut mungkin menyarankan menggunakan antarmuka HeadObject untuk memverifikasi keberadaan objek, menggunakan antarmuka ListObjectVersions untuk memeriksa VersionID, atau meninjau konfigurasi untuk konvensi penamaan, aturan siklus hidup, izin pengguna, dan replikasi lintas wilayah. Bagian Referensi di bagian bawah berisi tautan ke dokumentasi untuk NoSuchKey dan NoSuchVersion.

Contoh kode

Contoh kode operasi umum:

Deskripsi

File contoh

Buat bucket (Python SDK V2)

put_bucket.py

Daftar bucket (Python SDK V2)

list_buckets.py

Periksa apakah bucket ada (Python SDK V2)

is_bucket_exist.py

Dapatkan wilayah bucket (Python SDK V2)

get_bucket_location.py

Dapatkan informasi bucket (Python SDK V2)

get_bucket_info.py

Dapatkan kapasitas penyimpanan bucket (Python SDK V2)

get_bucket_stat.py

Hapus bucket (Python SDK V2)

delete_bucket.py

Grup resource (Python SDK V2)

Tag bucket (Python SDK V2)

Requester Pays (Python SDK V2)

Dapatkan informasi titik akhir (Python SDK V2)

describe_regions.py

Unggah sederhana (Python SDK V2)

put_object.py

Unggah lampiran (Python SDK V2)

append_object.py

Unggah multipart (Python SDK V2)

complete_multipart_upload.py

Unggah formulir (Python SDK V2)

post_object.py

Unggah menggunakan URL yang ditandatangani sebelumnya (Python SDK V2)

presigner_put_object.py

Manajer unggah file (Python SDK V2)

upload_file.py

Unduh sederhana (Python SDK V2)

get_object.py

Unduh rentang (Python SDK V2)

get_object.py

Akses file-like hanya-baca (Python SDK V2)

open_file.py

Unduh menggunakan URL yang ditandatangani sebelumnya (Python SDK V2)

presigner_get_object.py

Manajer unduh file (Python SDK V2)

download_file.py

Salin objek (Python SDK V2)

copy_object.py

Salin multipart (Python SDK V2)

upload_part_copy.py

Manajer salin file (Python SDK V2)

copier.py

Periksa apakah objek ada (Python SDK V2)

is_object_exist.py

Daftar objek (Python SDK V2)

list_objects_v2.py

Hapus objek (Python SDK V2)

Pulihkan objek (Python SDK V2)

Kelola metadata objek (Python SDK V2)

Ubah kelas penyimpanan objek (Python SDK V2)

copy_object.py

Ganti nama objek (Python SDK V2)

copy_object.py

Kelola tautan simbolik (Python SDK V2)

Kelola ACL bucket (Python SDK V2)

Kelola ACL objek (Python SDK V2)

Kebijakan Bucket (Python SDK V2)

put_bucket_policy.py

Kelola pengendalian versi (Python SDK V2)

put_bucket_version.py

Proteksi hotlink (Python SDK V2)

CORS (Python SDK V2)

Kebijakan retensi (Python SDK V2)

Enkripsi sisi server (Python SDK V2)

Enkripsi sisi klien (Python SDK V2)

Replikasi (Python SDK V2)

put_bucket_replication.py

Pemantauan akses (Python SDK V2)

put_bucket_access_monitor.py

Manajemen siklus hidup (Python SDK V2)

Inventaris bucket (Python SDK V2)

Logging (Python SDK V2)

Baca Langsung Arsip (Python SDK V2)

put_bucket_archive_direct_read.py

Pengambilan skalar (Python SDK V2)

Indeks vektor (Python SDK V2)

Ikat nama domain kustom (Python SDK V2)

Akselerasi transfer (Python SDK V2)

put_bucket_transfer_acceleration.py

Pemrosesan sinkron (Python SDK V2)

process_object.py

Pemrosesan asinkron (Python SDK V2)

async_process_object.py

Blokir Akses Publik Global untuk OSS (Python SDK V2)

put_public_access_block.py

Blokir Akses Publik tingkat Bucket untuk OSS (Python SDK V2)

put_bucket_public_access_block.py

Blokir Akses Publik tingkat Titik Akses untuk OSS (Python SDK V2)

put_access_point_public_access_block.py

Manajemen QoS kolam resource (Python SDK V2)

-