全部产品
Search
文档中心

Object Storage Service:OSS SDK untuk Python 2.0

更新时间:Nov 29, 2025

GitHub | Panduan Developer OSS SDK untuk Python 2.0 | Dokumentasi OSS SDK untuk Python 2.0

Integrasi cepat

Ikuti langkah-langkah berikut untuk mengintegrasikan OSS SDK untuk Python 2.0:

Persiapan lingkungan

Diperlukan Python 3.8 atau versi yang lebih baru.

Periksa versi Python dengan menjalankan perintah python --version. Jika Python belum terinstal atau versinya lebih lama dari Python 3.8, unduh dan instal Python.

Instal SDK

  • Jalankan perintah berikut untuk menginstal paket OSS SDK untuk Python 2.0. Kami menyarankan Anda menggunakan versi terbaru agar contoh kode dalam topik ini dapat berjalan dengan benar.

    pip install alibabacloud-oss-v2
  • Gunakan kode berikut untuk mengimpor paket OSS SDK untuk Python 2.0.

    import alibabacloud_oss_v2 as oss

Konfigurasi kredensial akses

Gunakan pasangan AccessKey pengguna RAM untuk mengonfigurasi kredensial akses.

  1. Di Konsol RAM, buat pengguna RAM dan pilih Uses A Permanent AccessKey Pair For Access. Simpan pasangan AccessKey tersebut, lalu berikan izin AliyunOSSFullAccess kepada pengguna.

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

    Linux

    1. Jalankan perintah berikut di CLI untuk menambahkan pengaturan 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. Jalankan perintah berikut untuk menerapkan perubahan.

        source ~/.bashrc
      2. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

    macOS

    1. Di terminal, jalankan perintah berikut untuk memeriksa jenis shell default.

      echo $SHELL
      1. Lakukan operasi berikut berdasarkan jenis shell default.

        Zsh

        1. Jalankan perintah berikut untuk menambahkan pengaturan 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. Jalankan perintah berikut untuk menerapkan perubahan.

          source ~/.zshrc
        3. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.

          echo $OSS_ACCESS_KEY_ID
          echo $OSS_ACCESS_KEY_SECRET

        Bash

        1. Jalankan perintah berikut untuk menambahkan pengaturan 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. Jalankan perintah berikut untuk menerapkan perubahan.

          source ~/.bash_profile
        3. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.

          echo $OSS_ACCESS_KEY_ID
          echo $OSS_ACCESS_KEY_SECRET

    Windows

    CMD

    1. Di Command Prompt, Anda dapat menjalankan perintah berikut.

      setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
      setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
      1. Anda dapat menjalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.

        echo %OSS_ACCESS_KEY_ID%
        echo %OSS_ACCESS_KEY_SECRET%

    PowerShell

    1. Jalankan perintah berikut 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. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.

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

Inisialisasi OSSClient

Inisialisasi OSSClient dengan region dan endpoint, lalu jalankan kode uji.

OSSClient Sinkron

import alibabacloud_oss_v2 as oss

def main():
    """
    Konfigurasi inisialisasi client Python SDK V2:

    1. Versi signature: Python SDK V2 menggunakan signature V4 secara default untuk keamanan yang lebih tinggi.
    2. Konfigurasi region: Saat menginisialisasi client, Anda harus menentukan ID region Alibaba Cloud. Misalnya, ID region untuk China (Hangzhou) adalah cn-hangzhou.
    3. Konfigurasi endpoint:
       - Gunakan parameter Endpoint untuk menyesuaikan endpoint permintaan layanan.
       - Jika Anda tidak menentukan endpoint, endpoint publik akan dibuat secara otomatis berdasarkan region. Misalnya, jika region adalah cn-hangzhou, endpoint-nya adalah https://oss-cn-hangzhou.aliyuncs.com.
    4. Konfigurasi protokol:
       - SDK menggunakan HTTPS secara default untuk membuat endpoint.
       - Untuk menggunakan HTTP, tentukan di endpoint, misalnya http://oss-cn-hangzhou.aliyuncs.com.
    """

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

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

    # Metode 1: Tentukan hanya region (Direkomendasikan)
    # Anda harus menentukan ID region. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou). SDK secara otomatis membuat endpoint HTTPS berdasarkan region.
    cfg.region = 'cn-hangzhou' 

    # # Metode 2: Tentukan region dan endpoint
    # # Anda harus menentukan ID region. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
    # cfg.region = 'cn-hangzhou'
    # # Tentukan endpoint publik region tempat bucket berada. Misalnya, untuk China (Hangzhou), atur endpoint ke 'https://oss-cn-hangzhou.aliyuncs.com'.
    # cfg.endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'

    # Buat client 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 menjadi byte string UTF-8.

    # Jalankan 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 hasilnya untuk memeriksa apakah 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()  # Titik masuk skrip. Memanggil fungsi main saat file dijalankan langsung.

OSSClient Asinkron

Untuk menggunakan OSSClient asinkron, Anda memerlukan hal berikut:

  • 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():
    """
    Konfigurasi inisialisasi client asinkron Python SDK V2:

    1. Versi signature: Python SDK V2 menggunakan signature V4 secara default untuk keamanan yang lebih tinggi.

    2. Konfigurasi region: Saat menginisialisasi AsyncClient, Anda harus menentukan ID region Alibaba Cloud. Misalnya, ID region untuk China (Hangzhou) adalah cn-hangzhou.

    3. Konfigurasi endpoint:
       - Gunakan parameter Endpoint untuk menyesuaikan endpoint permintaan layanan.
       - Jika Anda tidak menentukan endpoint, endpoint publik akan dibuat secara otomatis berdasarkan region. Misalnya, jika region adalah cn-hangzhou, endpoint-nya adalah https://oss-cn-hangzhou.aliyuncs.com.

    4. Konfigurasi protokol:
       - SDK menggunakan HTTPS secara default untuk membuat endpoint.
       - Untuk menggunakan HTTP, tentukan di endpoint, misalnya http://oss-cn-hangzhou.aliyuncs.com.
    
    5. Fitur asinkron:
       - Impor modul asinkron: import alibabacloud_oss_v2.aio as oss_aio
       - Buat client asinkron: oss_aio.AsyncClient(cfg)
       - Semua operasi memerlukan kata kunci await.
       - Anda harus memanggil await client.close() di blok finally untuk menutup koneksi.
       - Instal dependensi aiohttp: pip install aiohttp
    """

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

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

    # Metode 1: Tentukan hanya region (Direkomendasikan)
    # Anda harus menentukan ID region. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou). SDK secara otomatis membuat endpoint HTTPS berdasarkan region.
    cfg.region = 'cn-hangzhou'

    # # Metode 2: Tentukan region dan endpoint
    # # Anda harus menentukan ID region. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
    # cfg.region = 'cn-hangzhou'
    # # Tentukan endpoint publik region tempat bucket berada. Misalnya, untuk China (Hangzhou), atur endpoint ke 'https://oss-cn-hangzhou.aliyuncs.com'.
    # cfg.endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'

    # Buat client OSS asinkron 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 menjadi byte string UTF-8.

        # Jalankan permintaan asinkron untuk mengunggah objek. Tentukan nama bucket, kunci objek, dan data.
        # Catatan: Gunakan kata kunci await untuk menunggu operasi asinkron 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 hasilnya untuk memeriksa apakah 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 client asinkron (Penting: untuk menghindari kebocoran resource).
        await client.close()


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

Setelah menjalankan kode, output berikut menunjukkan unggahan berhasil:

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

Konfigurasi client

Konfigurasi apa saja yang didukung oleh client?

Parameter

Deskripsi

Contoh

region

(Wajib) Region tempat permintaan dikirim.

oss.config.Config(region="cn-hangzhou")

credentials_provider

(Wajib) Kredensial akses.

oss.config.Config(credentials_provider=provider)

endpoint

Endpoint.

oss.config.Config(endpoint="oss-cn-hangzhou.aliyuncs.com")

http_client

Client HTTP.

oss.config.Config(http_client=customClient)

retry_max_attempts

Jumlah maksimum percobaan ulang untuk permintaan HTTP. Nilai default adalah 3.

oss.config.Config(retry_max_attempts=5)

retryer

Implementasi retry untuk permintaan HTTP.

oss.config.Config(retryer=customRetryer)

connect_timeout

Periode timeout untuk membuat koneksi. Nilai default adalah 10 detik.

oss.config.Config(connect_timeout=20)

readwrite_timeout

Periode timeout untuk membaca dan menulis data. Nilai default adalah 20 detik.

oss.config.Config(readwrite_timeout=30)

insecure_skip_verify

Menentukan apakah verifikasi sertifikat SSL dilewati. Secara default, sertifikat SSL diverifikasi.

oss.config.Config(insecure_skip_verify=true)

enabled_redirect

Menentukan apakah pengalihan HTTP diaktifkan. Secara default, fitur ini dinonaktifkan.

oss.config.Config(enabled_redirect=true)

proxy_host

Mengonfigurasi server proxy

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

signature_version

Versi signature. Nilai default adalah v4.

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

disable_ssl

Menentukan apakah menggunakan HTTP alih-alih HTTPS. Secara default, HTTPS digunakan.

oss.config.Config(disable_ssl=true)

use_path_style

Menentukan apakah menggunakan metode akses path-style, juga dikenal sebagai metode akses domain tingkat kedua. Secara default, metode domain bucket-hosting digunakan.

oss.config.Config(use_path_style=true)

use_cname

Menentukan apakah menggunakan nama domain kustom untuk akses. Secara default, fitur ini dinonaktifkan.

oss.config.Config(use_cname=true)

use_dualstack_endpoint

Menentukan apakah menggunakan titik akhir dual-stack untuk akses. Secara default, fitur ini dinonaktifkan.

oss.config.Config(use_dualstack_endpoint=true)

use_accelerate_endpoint

Menentukan apakah menggunakan titik akhir percepatan untuk akses. Secara default, fitur ini dinonaktifkan.

oss.config.Config(use_accelerate_endpoint=true)

use_internal_endpoint

Menentukan apakah menggunakan titik akhir internal same-region untuk akses. Secara default, fitur ini dinonaktifkan.

oss.config.Config(use_internal_endpoint=true)

disable_upload_crc64_check

Menentukan apakah menonaktifkan pemeriksaan redundansi siklik 64-bit (CRC64) untuk unggahan. Secara default, CRC64 diaktifkan.

oss.config.Config(disable_upload_crc64_check=true)

disable_download_crc64_check

Menentukan apakah menonaktifkan CRC64 untuk unduhan. Secara default, CRC64 diaktifkan.

oss.config.Config(disable_download_crc64_check=true)

additional_headers

Menentukan header permintaan tambahan yang akan ditandatangani. Parameter ini hanya berlaku untuk signature V4.

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

user_agent

Menentukan informasi User-Agent tambahan.

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

Gunakan nama domain kustom

Saat Anda menggunakan endpoint OSS default, Anda mungkin mengalami masalah seperti tidak dapat mengakses atau melihat pratinjau objek. Dengan mengakses OSS melalui nama domain kustom, Anda dapat melihat pratinjau objek langsung di browser dan mempercepat pengiriman konten menggunakan CDN.

import alibabacloud_oss_v2 as oss

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

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

    # Tentukan region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
    cfg.region = 'cn-hangzhou'

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

    # Perhatikan bahwa Anda harus mengatur use_cname ke true untuk menggunakan nama domain kustom.
    cfg.use_cname = True

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

    # Gunakan client 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.

Kontrol timeout

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 periode timeout untuk membuat koneksi. Nilai default adalah 10 detik.
    cfg.connect_timeout = 30

    # Atur periode timeout untuk membaca dan menulis data. Nilai default adalah 20 detik.
    cfg.readwrite_timeout = 30

    # Atur penyedia kredensial.
    cfg.credentials_provider = credentials_provider

    # Tentukan region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
    cfg.region = 'cn-hangzhou'

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

    # Gunakan client 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.

Kebijakan retry

import alibabacloud_oss_v2 as oss

def main():
    """
    Konfigurasi kebijakan retry SDK:

    Kebijakan retry default:
    Jika tidak ada kebijakan retry yang dikonfigurasi, SDK menggunakan StandardRetryer() sebagai implementasi client default dengan konfigurasi berikut:
    - max_attempts: Jumlah maksimum retry. 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. Secara default digunakan algoritma FullJitter.
      Formula: [0.0, 1.0) * min(2^attempts * baseDelay, maxBackoff)
    - error_retryables: Jenis kesalahan yang dapat diretry. Untuk informasi selengkapnya, lihat https://gosspublic.alicdn.com/sdk-doc/alibabacloud-oss-python-sdk-v2/latest/_modules/alibabacloud_oss_v2/retry/error_retryable.html

    Saat terjadi kesalahan yang dapat diretry, konfigurasi yang disediakan digunakan untuk menunda dan kemudian mencoba ulang permintaan.
    Latensi keseluruhan permintaan meningkat seiring jumlah retry. Jika konfigurasi default tidak memenuhi kebutuhan Anda,
    Anda dapat mengonfigurasi parameter retry atau memodifikasi implementasi retry.
    """

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

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

    # Contoh konfigurasi kebijakan retry:

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

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

    # 3. Sesuaikan algoritma backoff.
    # Gunakan algoritma backoff waktu tetap alih-alih algoritma FullJitter default, dengan delay 2 detik setiap kali.
    # cfg.retryer = oss.retry.StandardRetryer(backoff_delayer=oss.retry.FixedDelayBackoff(2))

    # 4. Nonaktifkan kebijakan retry.
    # Untuk menonaktifkan semua upaya retry, gunakan implementasi retry.NopRetryer.
    # cfg.retryer = oss.retry.NopRetryer()

    # Atur penyedia kredensial.
    cfg.credentials_provider = credentials_provider

    # Tentukan region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
    cfg.region = 'cn-hangzhou'

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

    # Gunakan client 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.

Atur ukuran kolam koneksi

Di http_client, tentukan parameter max_connections untuk mengonfigurasi ukuran kolam koneksi.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Contoh konfigurasi kolam koneksi OSS SDK untuk Python 2.0

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 SDK default dan atur penyedia kredensial.
    config = oss.config.load_default()
    config.credentials_provider = credentials_provider

    # Atur region layanan OSS.
    config.region = "cn-hangzhou"

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

    # Konfigurasi informasi bucket dan file.
    bucket = "example-bucket"             # Nama bucket
    key = "dest.jpg"                      # Path objek di OSS
    file_path = "dest.jpg"                # Path penyimpanan lokal

    # Unduh objek dari OSS ke path lokal yang ditentukan.
    client.get_object_to_file(oss.GetObjectRequest(bucket, key), file_path)
    print(f"Unduhan file 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

Protokol HTTP/HTTPS

Anda dapat menggunakan cfg.disable_ssl = True untuk menonaktifkan protokol HTTPS.

import alibabacloud_oss_v2 as oss

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

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

    # Tentukan region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
    cfg.region = 'cn-hangzhou'

    # Nonaktifkan permintaan HTTPS.
    cfg.disable_ssl = True

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

    # Gunakan client 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.

Server proxy

Kebijakan keamanan perusahaan sering kali membatasi akses langsung ke internet. Anda dapat mengonfigurasi server proxy untuk mengakses resource OSS.

import alibabacloud_oss_v2 as oss

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

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

    # Tentukan region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
    cfg.region = 'cn-hangzhou'

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

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

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

    # Gunakan client 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 titik akhir internal same-region

Menggunakan titik akhir internal same-region untuk mengakses resource OSS di region yang sama dapat mengurangi biaya traffic dan meningkatkan kecepatan akses.

import alibabacloud_oss_v2 as oss

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

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

    # Metode 1: Tentukan region dan atur use_internal_endpoint ke true.
    # Tentukan region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
    cfg.region = 'cn-hangzhou'
    cfg.use_internal_endpoint = True

    # # Metode 2: Langsung tentukan region dan endpoint.
    # # Tentukan region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
    # cfg.region = 'cn-hangzhou'
    # # Tentukan titik akhir internal region tempat bucket berada. Misalnya, untuk China (Hangzhou), atur endpoint ke 'oss-cn-hangzhou-internal.aliyuncs.com'.
    # cfg.endpoint = 'oss-cn-hangzhou-internal.aliyuncs.com'

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

    # Gunakan client 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 titik akhir percepatan

import alibabacloud_oss_v2 as oss

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

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

    # Metode 1: Tentukan region dan atur use_accelerate_endpoint ke true.
    # Tentukan region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
    cfg.region = 'cn-hangzhou'
    cfg.use_accelerate_endpoint = True

    # # Metode 2: Langsung tentukan region dan titik akhir percepatan.
    # # Tentukan region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
    # cfg.region = 'cn-hangzhou'
    # # Tentukan titik akhir percepatan region tempat bucket berada, misalnya 'https://oss-accelerate.aliyuncs.com'.
    # cfg.endpoint = 'https://oss-accelerate.aliyuncs.com'

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

    # Gunakan client 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 domain khusus

import alibabacloud_oss_v2 as oss

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

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

    # Tentukan region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
    cfg.region = 'cn-hangzhou'

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

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

    # Gunakan client 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 titik akhir Finance Cloud

Kode berikut menunjukkan cara mengonfigurasi OSSClient menggunakan titik akhir Finance Cloud.

import alibabacloud_oss_v2 as oss

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

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

    # Tentukan region dan endpoint.
    # Tentukan region tempat bucket berada. Misalnya, untuk China (Hangzhou) Finance, atur region ke cn-hangzhou-finance.
    cfg.region = 'cn-hangzhou-finance'
    # Tentukan titik akhir internal region tempat bucket berada. Misalnya, untuk China (Hangzhou) Finance, atur endpoint ke 'https://oss-cn-hzjbp-a-internal.aliyuncs.com'.
    # Untuk menggunakan protokol HTTP, tentukan endpoint sebagai 'http://oss-cn-hzjbp-a-internal.aliyuncs.com'.
    cfg.endpoint = 'https://oss-cn-hzjbp-a-internal.aliyuncs.com'

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

    # Gunakan client 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 titik akhir Gov Cloud

Kode berikut menunjukkan cara mengonfigurasi OSSClient menggunakan titik akhir Gov Cloud.

import alibabacloud_oss_v2 as oss

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

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

    # Tentukan region dan endpoint.
    # Tentukan region tempat bucket berada. Misalnya, untuk China North 2 Alibaba Gov 1, atur region ke cn-north-2-gov-1.
    cfg.region = 'cn-north-2-gov-1'
    # Tentukan titik akhir internal region tempat bucket berada. Misalnya, untuk China North 2 Alibaba Gov 1, atur endpoint ke 'https://oss-cn-north-2-gov-1-internal.aliyuncs.com'.
    # Untuk menggunakan protokol HTTP, tentukan endpoint sebagai 'http://oss-cn-north-2-gov-1-internal.aliyuncs.com'.
    cfg.endpoint = 'https://oss-cn-north-2-gov-1-internal.aliyuncs.com'

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

    # Gunakan client 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 client HTTP kustom

Jika parameter konfigurasi standar tidak memenuhi kebutuhan Anda, gunakan cfg.http_client untuk mengganti client HTTP default.

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 client HTTP.
    kwargs: Dict[str, Any] = {}

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

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

    # Tentukan apakah verifikasi sertifikat dilewati. Secara default, sertifikat tidak dilewati.
    # kwargs["insecure_skip_verify"] = False

    # Tentukan apakah pengalihan HTTP diaktifkan. Secara default, fitur ini dinonaktifkan.
    # kwargs["enabled_redirect"] = False

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

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

    # Timeout koneksi. Nilai default adalah 10 detik.
    kwargs["connect_timeout"] = 30

    # Periode timeout untuk membaca dan menulis data. Nilai default adalah 20 detik.
    kwargs["readwrite_timeout"] = 30

    # Koneksi maksimum. Nilai default adalah 20.
    kwargs["max_connections"] = 1024

    # Buat client HTTP dan masukkan parameter client HTTP.
    cfg.http_client = oss.transport.RequestsHttpClient(**kwargs)

    # Atur penyedia kredensial.
    cfg.credentials_provider = credentials_provider

    # Tentukan region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
    cfg.region = 'cn-hangzhou'

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

    # Gunakan client 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.

Konfigurasi kredensial akses

OSS menyediakan beberapa cara untuk menginisialisasi kredensial. Anda dapat memilih metode inisialisasi berdasarkan kebutuhan autentikasi dan otorisasi Anda.

Bagaimana cara memilih kredensial akses?

Metode inisialisasi penyedia kredensial

Skenario

Memerlukan pasangan AccessKey atau token STS yang telah dikonfigurasi sebelumnya

Jenis kredensial dasar

Validitas kredensial

Metode rotasi atau refresh

Gunakan pasangan AccessKey pengguna RAM

Aplikasi yang berjalan di lingkungan aman dan stabil yang tidak rentan terhadap serangan eksternal dan memerlukan akses jangka panjang ke layanan Alibaba Cloud tanpa rotasi kredensial yang sering.

Ya

AccessKey

Jangka panjang

Rotasi manual

Gunakan token STS

Aplikasi yang berjalan di lingkungan tidak tepercaya dan memerlukan kontrol atas validitas akses dan izin.

Ya

Token STS

Sementara

Refresh manual

Gunakan ARN peran RAM

Aplikasi yang memerlukan akses resmi ke layanan Alibaba Cloud, seperti akses lintas akun.

Ya

Token STS

Sementara

Auto-refresh

Gunakan peran RAM instans ECS

Aplikasi yang berjalan pada instans ECS Alibaba Cloud, instans ECI, atau node pekerja Container Service for Kubernetes.

Tidak

Token STS

Sementara

Auto-refresh

Gunakan ARN peran OIDC

Aplikasi tidak tepercaya yang berjalan pada node pekerja Container Service for Kubernetes di Alibaba Cloud.

Tidak

Token STS

Sementara

Auto-refresh

Gunakan kredensial akses kustom

Jika metode konfigurasi kredensial di atas tidak memenuhi kebutuhan Anda, Anda dapat menyesuaikan cara mendapatkan kredensial.

Kustom

Kustom

Kustom

Kustom

Gunakan pasangan AccessKey pengguna RAM

Jika aplikasi Anda berjalan di lingkungan aman dan stabil yang tidak rentan terhadap serangan eksternal, memerlukan akses jangka panjang ke OSS, dan tidak dapat melakukan rotasi kredensial secara sering, Anda dapat menginisialisasi penyedia kredensial dengan pasangan AccessKey (ID AccessKey dan rahasia AccessKey) akun Alibaba Cloud atau pengguna RAM. Perhatikan bahwa metode ini mengharuskan Anda untuk memelihara pasangan AccessKey secara manual, yang meningkatkan risiko keamanan dan kompleksitas pemeliharaan.

Peringatan
  • Akun Alibaba Cloud memiliki izin penuh atas resource-nya. Jika pasangan AccessKey bocor, hal ini menimbulkan ancaman keamanan signifikan bagi sistem Anda. Kami tidak merekomendasikan penggunaan pasangan AccessKey akun Alibaba Cloud. Sebagai gantinya, gunakan pasangan AccessKey pengguna RAM dengan izin minimum yang diperlukan.

  • Untuk informasi selengkapnya tentang cara membuat pasangan AccessKey untuk pengguna RAM, lihat Buat pasangan AccessKey. ID AccessKey dan rahasia AccessKey pengguna RAM hanya ditampilkan saat pasangan tersebut dibuat. Anda harus segera menyimpannya. Jika lupa, Anda harus membuat pasangan AccessKey baru untuk rotasi.

Variabel lingkungan

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

    Linux

    1. Jalankan perintah berikut di CLI untuk menambahkan konfigurasi 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. Jalankan perintah berikut untuk menerapkan perubahan:

        source ~/.bashrc
      2. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah berlaku:

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

    macOS

    1. Jalankan perintah berikut di terminal untuk melihat jenis shell default:

      echo $SHELL
    2. Konfigurasi variabel lingkungan berdasarkan jenis shell default.

      Zsh

      1. Jalankan perintah berikut untuk menambahkan konfigurasi 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. Jalankan perintah berikut untuk menerapkan perubahan:

        source ~/.zshrc
      3. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan berlaku:

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

      Bash

      1. Jalankan perintah berikut untuk menambahkan konfigurasi 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. Jalankan perintah berikut untuk menerapkan perubahan:

        source ~/.bash_profile
      3. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan berlaku:

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

    Windows

    CMD

    1. Jalankan perintah berikut di CMD:

      setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
      setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
    2. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan berlaku:

      echo %OSS_ACCESS_KEY_ID%
      echo %OSS_ACCESS_KEY_SECRET%

    PowerShell

    1. Jalankan perintah berikut 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)
    2. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan berlaku:

      [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
      [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
  2. Setelah Anda memodifikasi variabel lingkungan sistem, Anda harus me-restart atau merefresh lingkungan pengembangan Anda, termasuk IDE, antarmuka baris perintah, aplikasi desktop lainnya, dan layanan latar belakang, untuk memastikan variabel lingkungan sistem terbaru dimuat.

  3. Gunakan variabel lingkungan untuk meneruskan informasi kredensial.

    import alibabacloud_oss_v2 as oss
    
    def main():
        # Muat kredensial dari variabel lingkungan untuk autentikasi.
        credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
    
        # Muat konfigurasi SDK default dan atur penyedia kredensial.
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # Tentukan region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
        cfg.region = 'cn-hangzhou'
    
        # Buat client OSS dengan konfigurasi yang ditentukan.
        client = oss.Client(cfg)
    
        # Gunakan client 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

Kode berikut menunjukkan cara hard-code kredensial akses dan secara eksplisit menyetel pasangan AccessKey yang akan digunakan.

Peringatan

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

import alibabacloud_oss_v2 as oss

def main():
    # Buat penyedia kredensial statis dan secara eksplisit atur ID AccessKey dan rahasia AccessKey. Ganti 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 SDK default dan atur penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Tentukan region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
    cfg.region = 'cn-hangzhou'

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

    # Gunakan client 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 token STS

Jika aplikasi Anda memerlukan akses sementara ke OSS, inisialisasi penyedia kredensial dengan kredensial identitas sementara (ID AccessKey, rahasia AccessKey, dan Token Keamanan) yang diperoleh dari Security Token Service (STS). Perhatikan bahwa metode ini mengharuskan Anda untuk memelihara token STS secara manual, yang meningkatkan risiko keamanan dan kompleksitas pemeliharaan. Selain itu, untuk mengakses OSS sementara beberapa kali, Anda harus merefresh token STS secara manual.

Penting

Variabel lingkungan

  1. Anda dapat menggunakan kredensial identitas sementara untuk menyetel variabel lingkungan.

    Mac OS X/Linux/Unix

    Peringatan
    • Perhatikan bahwa ini menggunakan kredensial identitas sementara (ID AccessKey, rahasia AccessKey, dan Token Keamanan) yang diperoleh dari STS, bukan pasangan AccessKey pengguna RAM.

    • Perhatikan bahwa 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
    • Perhatikan bahwa ini menggunakan kredensial identitas sementara (ID AccessKey, rahasia AccessKey, dan Token Keamanan) yang diperoleh dari STS, bukan pasangan AccessKey (ID AccessKey dan rahasia AccessKey) pengguna RAM.

    • Perhatikan bahwa 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. Meneruskan informasi kredensial melalui variabel lingkungan.

    import alibabacloud_oss_v2 as oss
    
    def main():
        # Muat informasi autentikasi yang diperlukan untuk mengakses OSS dari variabel lingkungan untuk verifikasi identitas.
        credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
    
        # Muat konfigurasi SDK default dan atur penyedia kredensial.
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # Tentukan region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
        cfg.region = 'cn-hangzhou'
    
        # Buat client OSS dengan konfigurasi yang ditentukan.
        client = oss.Client(cfg)
    
        # Gunakan client 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

Kode berikut menunjukkan cara hard-code kredensial akses dan secara eksplisit menyetel pasangan AccessKey sementara yang akan digunakan.

Peringatan

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

import alibabacloud_oss_v2 as oss

def main():
    # Tentukan ID AccessKey sementara dan rahasia AccessKey yang diperoleh, bukan ID AccessKey dan rahasia AccessKey akun Alibaba Cloud Anda.
    # Perhatikan bahwa ID AccessKey yang diperoleh dari STS diawali dengan "STS", seperti yang ditunjukkan di bawah.
    sts_access_key_id = 'STS.****************'
    sts_access_key_secret = 'yourAccessKeySecret'
    # Tentukan token keamanan STS yang diperoleh.
    sts_security_token = 'yourSecurityToken'

    # Buat penyedia kredensial statis dan secara eksplisit atur ID AccessKey sementara, rahasia AccessKey, dan token keamanan STS.
    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 SDK default dan atur penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Tentukan region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
    cfg.region = 'cn-hangzhou'

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

    # Gunakan client 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 ARN peran RAM

Jika aplikasi Anda memerlukan akses resmi ke OSS, seperti akses lintas akun, inisialisasi penyedia kredensial dengan ARN peran RAM. Implementasi dasar metode ini adalah token STS. Dengan menentukan Nama Sumber Daya Alibaba Cloud (ARN) peran RAM, alat kredensial memperoleh token STS dari STS dan memanggil operasi AssumeRole untuk meminta token STS baru sebelum sesi saat ini kedaluwarsa. Anda juga dapat memberikan nilai ke parameter policy untuk membatasi peran RAM ke set izin yang lebih kecil.

Penting
  • Akun Alibaba Cloud memiliki izin penuh atas resource-nya. Jika pasangan AccessKey bocor, hal ini menimbulkan ancaman keamanan signifikan bagi sistem Anda. Kami tidak merekomendasikan penggunaan pasangan AccessKey akun Alibaba Cloud. Sebagai gantinya, gunakan pasangan AccessKey pengguna RAM dengan izin minimum yang diperlukan.

  • Untuk informasi selengkapnya tentang cara membuat pasangan AccessKey untuk pengguna RAM, lihat Buat pasangan AccessKey. ID AccessKey dan rahasia AccessKey pengguna RAM hanya ditampilkan saat pasangan tersebut dibuat. Anda harus segera menyimpannya. Jika lupa, Anda harus membuat pasangan AccessKey baru untuk rotasi.

  • Untuk informasi selengkapnya tentang cara 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.

    # -*- 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(
            # Dapatkan pasangan AccessKey (ID AccessKey dan rahasia AccessKey) pengguna RAM 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 menyetel RoleArn melalui variabel lingkungan ALIBABA_CLOUD_ROLE_ARN.
            role_arn='<RoleArn>',
            # Nama sesi peran. Anda dapat menyetel RoleSessionName melalui variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME.
            role_session_name='<RoleSessionName>',
            # Kebijakan izin yang lebih kecil. Ini opsional. Contoh: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
            policy='<Policy>',
            # Periode validitas sesi peran dalam detik. Default adalah 3600 detik (1 jam). 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 pemuatan 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 region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
        cfg.region = 'cn-hangzhou'
    
        # Buat instance client OSS.
        client = oss.Client(cfg)
    
        # Gunakan client untuk 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 peran RAM instans ECS

Jika aplikasi Anda berjalan pada instans ECS, instans ECI, atau node pekerja Container Service for Kubernetes, kami merekomendasikan agar Anda menginisialisasi penyedia kredensial dengan peran RAM instans ECS. Implementasi dasar metode ini adalah token STS. Peran RAM instans ECS memungkinkan Anda mengaitkan peran dengan instans ECS, instans ECI, atau node pekerja Container Service for Kubernetes untuk merefresh token STS secara otomatis dalam instans tersebut. Metode ini menghilangkan risiko memelihara pasangan AccessKey atau token STS secara manual karena Anda tidak perlu menyediakannya. Untuk informasi selengkapnya tentang cara mendapatkan peran RAM instans ECS, lihat CreateRole - Buat peran RAM.

  1. Tambahkan dependensi alibabacloud_credentials.

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

    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',      # Jenis kredensial akses. Tetap sebagai ecs_ram_role.
            role_name='EcsRoleExample'    # Nama peran RAM yang diberikan ke instans ECS. Ini adalah parameter opsional. Jika tidak diatur, akan diambil secara otomatis. Kami sangat menyarankan menyetelnya 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 pemuatan 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 region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
        cfg.region = 'cn-hangzhou'
    
        # Buat instance client OSS.
        client = oss.Client(cfg)
    
        # Gunakan client untuk 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 ARN peran OIDC

Setelah Anda menyetel peran RAM node pekerja di Container Service for Kubernetes, aplikasi dalam pod pada node tersebut dapat memperoleh token STS peran terkait melalui layanan meta global, mirip dengan aplikasi yang diterapkan di ECS. Namun, jika Anda menerapkan aplikasi tidak tepercaya pada kluster container (seperti aplikasi yang diajukan oleh pelanggan Anda yang kodenya tidak terbuka untuk Anda), Anda mungkin tidak ingin mereka memperoleh token STS peran RAM instans terkait node pekerja melalui layanan meta global. Untuk mengamankan resource cloud Anda sekaligus memungkinkan aplikasi tidak tepercaya ini memperoleh token STS yang diperlukan secara aman dan mencapai minimisasi izin tingkat aplikasi, Anda dapat menggunakan fitur RAM Roles for Service Account (RRSA). Implementasi dasar metode ini adalah token STS. Kluster container Alibaba Cloud membuat dan memasang file token OpenID Connect (OIDC) akun layanan yang sesuai untuk pod aplikasi yang berbeda dan menyuntikkan informasi konfigurasi terkait ke variabel lingkungan. Alat kredensial memperoleh informasi konfigurasi dari variabel lingkungan dan memanggil operasi AssumeRoleWithOIDC STS untuk menukarnya dengan token STS peran yang terikat. Metode ini menghilangkan risiko memelihara pasangan AccessKey atau token STS secara manual karena Anda tidak perlu menyediakannya. Untuk informasi selengkapnya, lihat Isolasi izin pod berdasarkan RRSA.

  1. Tambahkan dependensi alibabacloud_credentials.

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

    # -*- 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. Tetap sebagai oidc_role_arn.
            type='oidc_role_arn',
            # ARN peran RAM. Anda dapat menyetel RoleArn melalui variabel lingkungan ALIBABA_CLOUD_ROLE_ARN.
            role_arn=os.environ.get('<RoleArn>'),
            # ARN penyedia OIDC. Anda dapat menyetel OidcProviderArn melalui variabel lingkungan ALIBABA_CLOUD_OIDC_PROVIDER_ARN.
            oidc_provider_arn=os.environ.get('<OidcProviderArn>'),
            # Path file token OIDC. Anda dapat menyetel OidcTokenFilePath melalui variabel lingkungan ALIBABA_CLOUD_OIDC_TOKEN_FILE.
            oidc_token_file_path=os.environ.get('<OidcTokenFilePath>'),
            # Nama sesi peran. Anda dapat menyetel RoleSessionName melalui variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME.
            role_session_name='<RoleSessionName>',
            # Kebijakan izin yang lebih kecil. Ini opsional. Contoh: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
            policy='<Policy>',
            # Periode validitas sesi peran dalam detik. Default adalah 3600 detik (1 jam). 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 pemuatan 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 region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
        cfg.region = 'cn-hangzhou'
    
        # Buat instance client OSS.
        client = oss.Client(cfg)
    
        # Gunakan client untuk 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 akses kustom

Jika metode konfigurasi kredensial di atas tidak memenuhi kebutuhan Anda, sesuaikan cara Anda mendapatkan kredensial. SDK mendukung beberapa metode implementasi.

  1. Gunakan antarmuka credentials.CredentialsProviderFunc

    import argparse
    import alibabacloud_oss_v2 as oss
    import os
    
    def main():
    
        def get_credentials_wrapper():
            # Kembalikan kredensial jangka panjang.
            return oss.credentials.Credentials(access_key_id='access_key_id', access_key_secret='access_key_security')
            # Kembalikan 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 SDK default dan atur penyedia kredensial.
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
        
        # Tentukan region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
        cfg.region = "cn-hangzhou"
    
        # Buat client OSS dengan konfigurasi yang ditentukan.
        client = oss.Client(cfg)
    
        # Gunakan client untuk operasi selanjutnya...
    
    if __name__ == "__main__":
        main()  # Titik masuk skrip. Memanggil fungsi main saat file dijalankan langsung.
  2. Implementasikan antarmuka credentials.CredentialsProvider

    # -*- coding: utf-8 -*-
    import alibabacloud_oss_v2 as oss
    
    class CredentialProviderWrapper(oss.credentials.CredentialsProvider):
        def get_credentials(self):
            # TODO
            # Sesuaikan metode untuk mendapatkan kredensial akses.
    
            # Kembalikan kredensial jangka panjang: access_key_id, access_key_secret.
            return oss.credentials.Credentials('<access_key_id>', '<access_key_secret>')
    
            # Kembalikan kredensial STS sementara: access_key_id, access_key_secret, token.
            # Untuk kredensial sementara, Anda perlu merefresh berdasarkan waktu kedaluwarsanya.
            # return oss.credentials.Credentials('<access_key_id>', '<access_key_secret>', '<token>');
    
    
    def main():
        # Buat penyedia kredensial untuk pemuatan kredensial secara dinamis.
        credentials_provider = CredentialProviderWrapper()
    
        # Muat konfigurasi default SDK OSS.
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # Tentukan region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
        cfg.region = 'cn-hangzhou'
    
        client = oss.Client(cfg)
    
        # Gunakan client untuk operasi selanjutnya...
    
    
    if __name__ == "__main__":
        main()  # Titik masuk skrip. Memanggil fungsi main saat file dijalankan langsung.

Akses anonim

Jika Anda hanya perlu mengakses resource OSS baca-publik, Anda dapat menggunakan akses anonim, yang tidak memerlukan kredensial apa pun.

import alibabacloud_oss_v2 as oss

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

# Konfigurasikan client.
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
# Tentukan region tempat bucket berada. Misalnya, atur region ke cn-hangzhou untuk China (Hangzhou).
cfg.region = 'cn-hangzhou'

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

Pemecahan masalah kesalahan

Saat Anda menggunakan OSS SDK untuk Python 2.0 untuk mengakses OSS dan terjadi kesalahan, OSS mengembalikan informasi seperti kode HTTP, pesan, ID permintaan, dan kode kesalahan (EC). EC menunjukkan penyebab spesifik kesalahan tersebut. Anda dapat menggunakan EC untuk memecahkan masalah kesalahan tersebut.

  1. Sebagai contoh, kesalahan dikembalikan saat Anda menggunakan kode berikut untuk mengunduh file yang tidak ada.

    import alibabacloud_oss_v2 as oss
    
    def main():
        # Muat kredensial dari variabel lingkungan untuk autentikasi.
        credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
    
        # Muat konfigurasi SDK default dan atur penyedia kredensial.
        cfg = oss.config.load_default()
        cfg.credentials_provider = credentials_provider
    
        # Atur informasi region dalam konfigurasi.
        cfg.region = 'cn-hangzhou'
    
        # Buat client OSS dengan konfigurasi yang ditentukan.
        client = oss.Client(cfg)
    
        # Jalankan 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 informasi hasil mendapatkan objek untuk memeriksa apakah permintaan berhasil.
        print(f'status code: {result.status_code},'
              f' request id: {result.request_id},'
        )
    
        # Gunakan context manager untuk memastikan pelepasan resource.
        with result.body as body_stream:
            data = body_stream.read()
            print(f"Pembacaan file selesai, panjang data: {len(data)} byte")
    
            path = "./get-object-sample.txt"
            with open(path, 'wb') as f:
                f.write(data)
            print(f"Unduhan file selesai, disimpan ke path: {path}")
    
    # Saat skrip ini dijalankan langsung, panggil fungsi main.
    if __name__ == "__main__":
        main()  # Titik masuk skrip. Memanggil fungsi main saat file dijalankan langsung.
  2. Contoh berikut menunjukkan hasil yang dikembalikan. Hasil tersebut berisi 'EC': '0026-00000001', yang merupakan pengidentifikasi unik untuk penyebab kesalahan ini.

  3. Ikuti langkah-langkah berikut untuk menemukan penyebab masalah dan solusi yang sesuai menggunakan EC yang dikembalikan dalam contoh permintaan kesalahan di atas.

    1. Buka OpenAPI Self-service Diagnostic Platform.

    2. Di kotak pencarian, masukkan EC, seperti 0026-00000001.

    3. Temukan penyebab masalah dan solusi yang sesuai dalam hasil pencarian.

Contoh kode

OSS SDK untuk Python 2.0 menyediakan berbagai contoh kode untuk referensi atau penggunaan langsung Anda.

Konten contoh

File contoh GitHub

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

Penandaan bucket (Python SDK V2)

Bayar-per-peminta (Python SDK V2)

Kueri informasi endpoint (OSS SDK untuk Python 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 (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

File kelas baca-saja (Python SDK V2)

open_file.py

Unduh menggunakan URL yang ditandatangani (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)

Berbagi sumber daya lintas origin (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

Pelacakan akses (Python SDK V2)

put_bucket_access_monitor.py

Manajemen siklus hidup (Python SDK V2)

Inventaris bucket (Python SDK V2)

Penyimpanan log (Python SDK V2)

Akses real-time objek Archive (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 sumber daya (Python SDK V2)

-