Kami merekomendasikan OSS Python SDK V2, yang mendesain ulang autentikasi, mekanisme retry, dan penanganan error, serta menambahkan paginator, transfer manager, dan antarmuka berbasis file.
Memulai dengan cepat
Mulai menggunakan OSS Python SDK V1 dengan langkah-langkah berikut.
Persiapkan lingkungan
Instal Python
OSS Python SDK V1 kompatibel dengan Python 2.6, 2.7, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, atau versi yang lebih baru.
Saat menginstal Python SDK di lingkungan Windows, pastikan versi Visual C++ adalah 15.0 atau lebih baru.
Instal python-devel
OSS Python SDK V1 menggunakan pustaka crcmod untuk checksum CRC. Ekstensi C-nya memerlukan header Python.h dari python-devel. Tanpa itu, SDK akan menggunakan validasi CRC berbasis pure Python, yang jauh lebih lambat untuk proses upload dan download.
Windows
Di Windows, file header yang diperlukan sudah termasuk dalam instalasi Python bawaan. Anda tidak perlu menginstal python-devel secara terpisah.
macOS
Di macOS, file header yang diperlukan sudah termasuk dalam instalasi Python bawaan. Anda tidak perlu menginstal python-devel secara terpisah.
CentOS
Untuk menginstal python-devel, jalankan perintah berikut.
yum install python-devel
RHEL
Untuk menginstal python-devel, jalankan perintah berikut.
yum install python-devel
Fedora
Untuk menginstal python-devel, jalankan perintah berikut.
yum install python-devel
Debian
Untuk menginstal python-devel, jalankan perintah berikut.
apt-get install python-dev
Ubuntu
Untuk menginstal python-devel, jalankan perintah berikut.
apt-get install python-dev
Instal SDK
Instal SDK menggunakan salah satu metode berikut. Gunakan versi terbaru untuk memastikan kompatibilitas dengan contoh kode.
Instal dengan pip
-
Instal pip. pip diinstal secara default bersama Python 2.7.9 atau lebih baru, atau Python 3.4 atau lebih baru.
-
Untuk menginstal versi SDK terbaru, jalankan perintah berikut.
pip install oss2
Instal dari sumber
-
Unduh versi terbaru SDK dari GitHub, ekstrak paketnya, lalu masuk ke direktori tersebut. Pastikan direktori tersebut berisi file setup.py.
Untuk mengunduh versi sebelumnya dari OSS Python SDK V1, lihat Riwayat Rilis.
-
Untuk menginstal SDK, jalankan perintah berikut.
python setup.py install
Konfigurasi kredensial akses
Konfigurasikan kredensial akses dengan Pasangan AccessKey pengguna RAM.
-
Di Konsol RAM, buat pengguna RAM dengan Permanent AccessKey Pair. Simpan pasangan AccessKey tersebut dan berikan izin
AliyunOSSFullAccesskepada pengguna. -
Gunakan pasangan AccessKey pengguna RAM untuk mengonfigurasi variabel lingkungan.
Linux
-
Jalankan perintah berikut di antarmuka baris perintah 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 -
Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.bashrc -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
macOS
-
Jalankan perintah berikut di terminal untuk melihat jenis shell default.
echo $SHELL -
Lakukan operasi berikut berdasarkan jenis shell default.
Zsh
-
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 -
Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.zshrc -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
-
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 -
Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.bash_profile -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
Windows
CMD
-
Jalankan perintah berikut di CMD.
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET" -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
PowerShell
-
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) -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
-
Inisialisasi klien
Sebagian besar operasi dengan OSS Python SDK V1 menggunakan kelas oss2.Service dan oss2.Bucket.
-
Kelas
oss2.Servicemencantumkan bucket. Tidak mendukung akses melalui nama domain kustom. -
Kelas
oss2.Bucketmengupload, mendownload, dan menghapus file, serta mengonfigurasi berbagai pengaturan bucket.
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 berlokasi 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 wajib untuk akses Konsol OSS, karena konsol menerapkan HTTPS.
Inisialisasi instans bucket
Sebelum menjalankan kode contoh, ganti placeholder seperti<region-id>dengan wilayah dan titik akhir aktual Anda, sepertiap-southeast-1.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Contoh kode untuk menginisialisasi klien dengan OSS Python SDK V1
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
def main():
# Muat kredensial akses dari variabel lingkungan. Anda harus mengatur variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Atur wilayah layanan OSS.
region = "<region-id>"
# Atur titik akhir.
endpoint = "<endpoint>"
# Atur nama bucket.
bucket_name = "example-bucket"
# Inisialisasi instans Bucket OSS.
bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
# Cantumkan file dalam bucket.
print("=== Daftar file dalam bucket ===")
try:
# Gunakan metode list_objects untuk mencantumkan file.
result = bucket.list_objects()
# Iterasi melalui daftar file dan cetak hanya nama file-nya.
for obj in result.object_list:
print(obj.key)
# Cetak statistik.
print(f"\nTotal file yang dicantumkan: {len(result.object_list)}")
if result.is_truncated:
print("Catatan: Hasil dipotong. Masih ada file lain yang tersedia.")
except oss2.exceptions.OssError as e:
print(f"Kesalahan OSS: {e}")
raise
except Exception as e:
print(f"Terjadi kesalahan: {e}")
raise
if __name__ == "__main__":
# Titik masuk program.
try:
main()
except Exception as e:
print(f"Terjadi kesalahan selama eksekusi: {e}")
raise
Inisialisasi instans layanan
Sebelum menjalankan kode contoh, ganti placeholder seperti<region-id>dengan wilayah dan titik akhir aktual Anda, sepertiap-southeast-1.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Contoh kode untuk menginisialisasi instans Service dengan OSS Python SDK V1
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
def main():
# Muat kredensial akses dari variabel lingkungan. Anda harus mengatur variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Atur wilayah layanan OSS.
region = "<region-id>"
# Atur titik akhir.
endpoint = "<endpoint>"
# Inisialisasi instans Service OSS.
service = oss2.Service(auth, endpoint, region=region)
# Cantumkan semua bucket.
print("=== Daftar semua bucket ===")
try:
# Gunakan BucketIterator untuk mencantumkan bucket.
buckets = [b.name for b in oss2.BucketIterator(service)]
# Iterasi melalui daftar bucket dan cetak hanya nama bucket-nya.
for bucket in buckets:
print(bucket)
# Cetak statistik.
print(f"\nTotal bucket yang dicantumkan: {len(buckets)}")
except oss2.exceptions.OssError as e:
print(f"Kesalahan OSS: {e}")
raise
except Exception as e:
print(f"Terjadi kesalahan: {e}")
raise
if __name__ == "__main__":
# Titik masuk program.
try:
main()
except Exception as e:
print(f"Terjadi kesalahan selama eksekusi: {e}")
raise
Konfigurasi klien
Sesuaikan parameter seperti titik akhir, timeout, dan ukuran kolam koneksi saat menginisialisasi klien OSS.
Gunakan nama domain internal
Untuk mengakses OSS melalui jaringan internal, gunakan nama domain internal sebagai titik akhir.
Ganti placeholder<region-id>dalam kode dengan wilayah aktual, sepertiap-southeast-1.
endpoint = "oss-<region-id>-internal.aliyuncs.com"
# Inisialisasi instans bucket OSS.
bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
Gunakan nama domain kustom
Untuk menggunakan nama domain kustom, atur titik akhir ke domain Anda dan aktifkan is_cname=True.
Petakan nama domain kustom Anda ke bucket Anda sebelum menggunakannya. Akses OSS Menggunakan Nama Domain Kustom.
# Atur nama domain kustom.
endpoint = "http://example.com"
# Inisialisasi instans bucket OSS.
bucket = oss2.Bucket(auth, endpoint, bucket_name, is_cname=True, region=region)
Kontrol timeout
Atur parameter connect_timeout (dalam detik) saat menginisialisasi klien. Nilai default: 60 detik.
# Inisialisasi instans bucket OSS.
bucket = oss2.Bucket(auth, endpoint, bucket_name, connect_timeout=30, region=region)
Ukuran kolam koneksi
Sesuaikan ukuran kolam koneksi dengan parameter pool_size dari objek session.
# Atur ukuran kolam koneksi. Nilai default adalah 10.
session = oss2.Session(pool_size=20)
# Inisialisasi instans bucket OSS.
bucket = oss2.Bucket(auth, endpoint, bucket_name, session=session, region=region)
Versi TLS
Untuk menentukan versi TLS, buat sesi dengan menggunakan SSLAdapter kustom.
Python SDK versi 2.18.1 dan yang lebih baru memungkinkan Anda menentukan versi TLS.
import ssl
from requests.adapters import HTTPAdapter
# Definisikan adapter kustom untuk menentukan versi TLS.
class SSLAdapter(HTTPAdapter):
def init_poolmanager(self, *args, **http_client_config):
# Tentukan TLS 1.2.
http_client_config["ssl_version"] = ssl.PROTOCOL_TLSv1_2
return super(SSLAdapter, self).init_poolmanager(*args, **http_client_config)
# Buat sesi dengan menggunakan SSLAdapter.
session = oss2.Session(adapter=SSLAdapter())
# Inisialisasi instans bucket OSS.
bucket = oss2.Bucket(auth, endpoint, bucket_name, session=session, region=region)
Nonaktifkan pemeriksaan CRC
Untuk menonaktifkan pemeriksaan integritas data CRC, atur parameter enable_crc=False.
Pertahankan CRC tetap diaktifkan. Menonaktifkannya berarti OSS tidak dapat menjamin integritas data selama proses upload dan download.
# Inisialisasi instans bucket OSS.
bucket = oss2.Bucket(auth, endpoint, bucket_name, enable_crc=False, region=region)
Versi Tanda Tangan
Signature V1 Alibaba Cloud Object Storage akan dihentikan sesuai jadwal berikut. Kami merekomendasikan agar Anda segera upgrade ke signature V4 untuk memastikan layanan Anda tidak terganggu.
-
Per 1 Maret 2025, pengguna baru tidak dapat menggunakan signature V1.
-
Per 1 September 2025, kami akan menghentikan dukungan dan pemeliharaan untuk signature V1, dan Anda tidak dapat membuat bucket baru yang menggunakannya.
Contoh berikut menginisialisasi klien dengan signature V1. Untuk inisialisasi signature V4, lihat Inisialisasi Klien.
Sebelum menjalankan kode contoh, ganti placeholder seperti <endpoint> dengan wilayah dan titik akhir aktual Anda, seperti https://oss-ap-southeast-1.aliyuncs.com.#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Contoh kode inisialisasi klien OSS Python SDK V1
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
def main():
# Muat kredensial akses dari variabel lingkungan. Anda harus mengatur variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# Atur titik akhir.
endpoint = "<endpoint>"
# Atur nama bucket.
bucket_name = "example-bucket"
# Inisialisasi instans bucket OSS.
bucket = oss2.Bucket(auth, endpoint, bucket_name)
# Cantumkan file dalam bucket.
print("=== Daftar file dalam bucket ===")
try:
# Cantumkan file dengan menggunakan metode list_objects().
result = bucket.list_objects()
# Iterasi melalui daftar objek dan cetak key setiap objek.
for obj in result.object_list:
print(obj.key)
# Cetak statistik.
print(f"\nTotal file yang dicantumkan: {len(result.object_list)}")
if result.is_truncated:
print("Catatan: Hasil dipotong. Masih ada file lain yang tersedia.")
except oss2.exceptions.OssError as e:
print(f"Kesalahan OSS: {e}")
raise
except Exception as e:
print(f"Terjadi kesalahan: {e}")
raise
if __name__ == "__main__":
# Titik masuk program.
try:
main()
except Exception as e:
print(f"Terjadi kesalahan saat menjalankan program: {e}")
raise
Nama aplikasi kustom
Atur parameter app_name untuk menambahkan pengenal kustom ke header User-Agent. Nilai default: string kosong.
Nama aplikasi dikirimkan sebagai nilai header HTTP dan harus mematuhi standar HTTP.
# Inisialisasi instans bucket OSS.
bucket = oss2.Bucket(auth, endpoint, bucket_name, app_name="client_test", region=region)
Kode contoh
OSS Python SDK V1 menyediakan contoh kode untuk manajemen bucket, operasi objek, kontrol akses, dan transfer terenkripsi. Gunakan sebagai referensi atau integrasikan ke dalam aplikasi Anda.
|
Kode contoh GitHub |
Kode contoh dokumentasi |
Kueri informasi titik akhir
Kueri informasi titik akhir untuk semua wilayah yang tersedia atau wilayah tertentu, termasuk titik akhir publik (IPv4), internal, dan akselerasi transfer.
Python SDK versi 2.18.0 dan yang lebih baru mendukung kueri informasi titik akhir.
Sebelum menjalankan kode contoh, ganti placeholder seperti<region-id>dengan wilayah dan titik akhir aktual Anda, sepertiap-southeast-1.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Contoh kode untuk mengkueri informasi titik akhir menggunakan OSS Python SDK
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
def main():
print("=== Mengkueri informasi titik akhir untuk semua wilayah yang didukung ===\n")
# Dapatkan kredensial akses dari variabel lingkungan. Anda harus mengatur variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan titik akhir untuk wilayah tempat bucket Anda berada.
endpoint = "<endpoint>"
# Tentukan wilayah yang sesuai dengan titik akhir. Parameter ini wajib saat menggunakan Signature V4.
region = "<region-id>"
# Inisialisasi instans Service OSS.
service = oss2.Service(auth, endpoint, region=region)
try:
# Kueri informasi titik akhir untuk semua wilayah yang didukung.
result = service.describe_regions()
# Iterasi melalui informasi wilayah.
for r in result.regions:
print(f"Wilayah: {r.region}")
print(f" Titik Akhir Publik (IPv4): {r.internet_endpoint}")
print(f" Titik Akhir Internal (Jaringan Klasik atau VPC): {r.internal_endpoint}")
print(f" Titik Akhir Akselerasi Transfer: {r.accelerate_endpoint}")
print("-" * 80)
# Cetak statistik.
print(f"\nDitemukan informasi titik akhir untuk {len(result.regions)} wilayah.")
except oss2.exceptions.OssError as e:
print(f"Kesalahan OSS: {e}")
raise
except Exception as e:
print(f"Terjadi kesalahan: {e}")
raise
if __name__ == "__main__":
# Titik masuk program.
try:
main()
except Exception as e:
print(f"Terjadi kesalahan selama eksekusi: {e}")
raise
Untuk mengkueri informasi titik akhir untuk wilayah tertentu, tentukan ID wilayah spesifik OSS dalam metode describe_regions.
result = service.describe_regions("oss-<region-id>")
Konfigurasi kredensial
OSS mendukung beberapa metode inisialisasi kredensial. Pilih salah satu berdasarkan kebutuhan autentikasi Anda.
Anda harus menggunakan versi 0.3.5 atau lebih baru dari alibabacloud-credentials. Menggunakan versi yang lebih lama akan menghasilkan error.
AK Pengguna RAM
Cocok untuk lingkungan yang aman dan stabil yang memerlukan akses OSS jangka panjang tanpa rotasi kredensial yang sering. Inisialisasi penyedia kredensial dengan AccessKey (AK) pengguna RAM. Ini memerlukan pemeliharaan AK secara manual, yang menimbulkan risiko keamanan.
-
Akun Alibaba Cloud memiliki izin penuh atas semua sumber daya. Jika AK-nya bocor, sistem Anda berisiko. Gunakan AK pengguna RAM dengan izin minimum yang diperlukan.
-
Untuk membuat AK untuk pengguna RAM, lihat Buat AccessKey. ID AccessKey dan Secret AccessKey hanya ditampilkan saat pembuatan. Jika Anda lupa, buat yang baru.
Variabel lingkungan
-
Konfigurasikan variabel lingkungan menggunakan Access Key (AK) pengguna RAM.
Linux
-
Jalankan perintah berikut di antarmuka baris perintah 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 -
Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.bashrc -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
macOS
-
Jalankan perintah berikut di terminal untuk melihat jenis shell default.
echo $SHELL -
Lakukan operasi berikut berdasarkan jenis shell default.
Zsh
-
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 -
Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.zshrc -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
-
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 -
Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.bash_profile -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
Windows
CMD
-
Jalankan perintah berikut di CMD.
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET" -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
PowerShell
-
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) -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
-
-
Mulai ulang atau refresh IDE, CLI, dan lingkungan runtime lainnya setelah memodifikasi variabel lingkungan untuk memuat nilai baru.
-
Gunakan variabel lingkungan untuk menyediakan kredensial.
Sebelum menjalankan kode contoh, ganti placeholder seperti
<region-id>dengan wilayah dan titik akhir aktual. Misalnya, ganti<region-id>denganap-southeast-1.#!/usr/bin/env python3 # -*- coding: utf-8 -*- # OSS Python SDK V1: Contoh kode untuk inisialisasi klien import oss2 from oss2.credentials import EnvironmentVariableCredentialsProvider def main(): # Muat kredensial akses dari variabel lingkungan. Anda harus mengatur OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET. auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider()) # Atur wilayah layanan OSS. region = "<region-id>" # Atur titik akhir. endpoint = "<endpoint>" # Atur nama bucket. bucket_name = "example-bucket-hz" # Inisialisasi instans Bucket OSS. bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region) # Cantumkan objek dalam bucket. print("=== Daftar objek dalam bucket ===") try: # Gunakan metode list_objects untuk mencantumkan objek. result = bucket.list_objects() # Iterasi melalui daftar objek dan cetak hanya key objek-nya. for obj in result.object_list: print(obj.key) # Cetak statistik. print(f"\nTotal objek yang dicantumkan: {len(result.object_list)}") if result.is_truncated: print("Catatan: Hasil dipotong. Objek lain tidak dicantumkan.") except oss2.exceptions.OssError as e: print(f"Kesalahan OSS: {e}") raise except Exception as e: print(f"Terjadi kesalahan: {e}") raise if __name__ == "__main__": # Titik masuk program. try: main() except Exception as e: print(f"Terjadi kesalahan selama eksekusi: {e}") raise
Kredensial statis
Kode contoh berikut menunjukkan cara menyematkan kredensial langsung di aplikasi Anda.
Jangan menyematkan kredensial di aplikasi di lingkungan produksi. Metode ini hanya untuk tujuan pengujian.
Sebelum menjalankan kode contoh, ganti placeholder seperti<region-id>dengan wilayah dan titik akhir aktual. Misalnya, ganti<region-id>denganap-southeast-1.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# OSS Python SDK V1: Contoh kode untuk inisialisasi klien
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
def main():
# Tentukan ID AccessKey dan Secret AccessKey pengguna RAM.
access_key_id = 'yourAccessKeyID'
access_key_secret = 'yourAccessKeySecret'
# Konfigurasikan kredensial akses menggunakan Access Key (AK) pengguna RAM.
auth = oss2.AuthV4(access_key_id, access_key_secret)
# Atur wilayah layanan OSS.
region = "<region-id>"
# Atur titik akhir.
endpoint = "<endpoint>"
# Atur nama bucket.
bucket_name = "example-bucket-hz"
# Inisialisasi instans Bucket OSS.
bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
# Cantumkan objek dalam bucket.
print("=== Daftar objek dalam bucket ===")
try:
# Gunakan metode list_objects untuk mencantumkan objek.
result = bucket.list_objects()
# Iterasi melalui daftar objek dan cetak hanya key objek-nya.
for obj in result.object_list:
print(obj.key)
# Cetak statistik.
print(f"\nTotal objek yang dicantumkan: {len(result.object_list)}")
if result.is_truncated:
print("Catatan: Hasil dipotong. Objek lain tidak dicantumkan.")
except oss2.exceptions.OssError as e:
print(f"Kesalahan OSS: {e}")
raise
except Exception as e:
print(f"Terjadi kesalahan: {e}")
raise
if __name__ == "__main__":
# Titik masuk program.
try:
main()
except Exception as e:
print(f"Terjadi kesalahan selama eksekusi: {e}")
raise
Kredensial sementara STS
Cocok untuk aplikasi yang memerlukan akses OSS sementara. Inisialisasi penyedia kredensial dengan kredensial sementara (ID AccessKey, Secret AccessKey, dan token keamanan) dari STS. Anda harus merefresh token STS secara manual sebelum masa berlakunya habis.
-
Untuk mendapatkan kredensial akses sementara dengan memanggil operasi API, lihat AssumeRole - Dapatkan kredensial keamanan sementara untuk peran RAM.
-
Untuk mendapatkan kredensial akses sementara menggunakan SDK, lihat Gunakan kredensial sementara yang disediakan oleh STS untuk mengakses OSS.
-
Saat membuat token STS, Anda harus mengatur waktu kedaluwarsa. Setelah token kedaluwarsa, token tersebut tidak dapat digunakan lagi.
-
Untuk daftar titik akhir STS, lihat Titik akhir layanan.
Variabel lingkungan
-
Atur variabel lingkungan menggunakan kredensial akses sementara.
macOS, Linux, dan Unix
Penting-
Gunakan kredensial akses sementara (ID Access Key, Secret Access Key, dan token keamanan) yang diperoleh dari STS, bukan Access Key (AK) pengguna RAM.
-
ID Access Key yang diperoleh dari STS diawali dengan "STS.", misalnya, "STS.**************".
export OSS_ACCESS_KEY_ID=<STS_ACCESS_KEY_ID> export OSS_ACCESS_KEY_SECRET=<STS_ACCESS_KEY_SECRET> export OSS_SESSION_TOKEN=<STS_SECURITY_TOKEN>Windows
Penting-
Gunakan kredensial akses sementara (ID Access Key, Secret Access Key, dan token keamanan) yang diperoleh dari STS, bukan Access Key (AK) pengguna RAM.
-
ID Access Key yang diperoleh dari STS diawali dengan "STS.", misalnya, "STS.**************".
set OSS_ACCESS_KEY_ID=<STS_ACCESS_KEY_ID> set OSS_ACCESS_KEY_SECRET=<STS_ACCESS_KEY_SECRET> set OSS_SESSION_TOKEN=<STS_SECURITY_TOKEN> -
-
Sediakan kredensial menggunakan variabel lingkungan.
Sebelum menjalankan kode contoh, ganti placeholder seperti
<region-id>dengan wilayah dan titik akhir aktual. Misalnya, ganti<region-id>denganap-southeast-1.# -*- coding: utf-8 -*- import oss2 from oss2.credentials import EnvironmentVariableCredentialsProvider # yourEndpoint menentukan titik akhir untuk wilayah tempat bucket berada. endpoint = '<endpoint>' # yourBucketName menentukan nama bucket. bucket_name = 'yourBucketName' # Tentukan wilayah tempat bucket berada. region = '<region-id>' # Konfigurasikan kredensial akses dengan menggunakan AK STS, SK, dan Token Keamanan dari variabel lingkungan. # Perhatikan bahwa ProviderAuthV4 menunjukkan penggunaan signature V4. auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider()) # Inisialisasi bucket dengan menggunakan instance Auth. Perhatikan bahwa parameter region wajib saat menggunakan signature V4; # jika tidak, akan terjadi error. bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region) # Gunakan objek bucket untuk operasi selanjutnya...
Kredensial statis
Anda dapat menyematkan kredensial langsung di aplikasi dan secara eksplisit mengatur kunci akses sementara.
Sebelum menjalankan kode contoh, ganti placeholder seperti<region-id>dengan wilayah dan titik akhir aktual. Misalnya, ganti<region-id>denganap-southeast-1.
# -*- coding: utf-8 -*-
import oss2
# Tentukan ID AccessKey sementara dan Secret AccessKey yang diperoleh dari STS, bukan ID AccessKey dan Secret AccessKey akun Alibaba Cloud Anda.
# Perhatikan bahwa ID Access Key yang diperoleh dari STS diawali dengan "STS."
sts_access_key_id = 'STS.****************'
sts_access_key_secret = 'yourAccessKeySecret'
# Tentukan token keamanan yang diperoleh dari STS.
security_token = 'yourSecurityToken'
# yourEndpoint menentukan titik akhir untuk wilayah tempat bucket berada.
endpoint = '<endpoint>'
# yourBucketName menentukan nama bucket.
bucket_name = 'yourBucketName'
# Tentukan wilayah tempat bucket berada.
region = '<region-id>'
# Inisialisasi instance StsAuth. Perhatikan bahwa mengatur auth_version ke "v4" mengaktifkan signature V4 OSS.
auth = oss2.StsAuth(sts_access_key_id,
sts_access_key_secret,
security_token,
auth_version="v4")
# Inisialisasi bucket menggunakan instance StsAuth. Perhatikan bahwa parameter region wajib saat menggunakan signature V4;
# jika tidak, akan terjadi error.
bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
# Gunakan objek bucket untuk operasi selanjutnya...
ARN peran RAM
Cocok untuk akses lintas akun. Inisialisasi penyedia kredensial dengan ARN peran RAM. Alat kredensial secara otomatis merefresh token STS dengan memanggil AssumeRole sebelum masa berlakunya habis. Anda dapat mengatur parameter policy untuk membatasi izin lebih lanjut.
-
Akun Alibaba Cloud memiliki izin penuh atas semua sumber daya. Jika AK-nya bocor, sistem Anda berisiko. Gunakan AK pengguna RAM dengan izin minimum yang diperlukan.
-
Untuk membuat AK untuk pengguna RAM, lihat Buat AccessKey. ID AccessKey dan Secret AccessKey hanya ditampilkan saat pembuatan. Jika Anda lupa, buat yang baru.
-
Untuk mendapatkan ARN peran RAM, lihat Buat peran RAM.
-
Tambahkan dependensi kredensial.
pip install alibabacloud_credentials -
Konfigurasikan Access Key (AK) dan ARN peran RAM sebagai kredensial akses.
Sebelum menjalankan kode contoh, ganti placeholder seperti
<region-id>dengan wilayah dan titik akhir aktual. Misalnya, ganti<region-id>denganap-southeast-1.# -*- coding: utf-8 -*- import oss2 from alibabacloud_credentials.client import Client from alibabacloud_credentials.models import Config from oss2 import CredentialsProvider from oss2.credentials import Credentials import os class CredentialProviderWrapper(CredentialsProvider): def __init__(self, client): self.client = client def get_credentials(self): credential = self.client.get_credential() access_key_id = credential.access_key_id access_key_secret = credential.access_key_secret security_token = credential.security_token return Credentials(access_key_id, access_key_secret, security_token) config = Config( # Dapatkan Access Key (ID AccessKey dan Secret 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 mengatur RoleArn menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN. role_arn='<RoleArn>', # Nama sesi peran. Anda dapat mengatur RoleSessionName 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. Masa berlaku sesi peran. role_session_expiration=3600 ) cred = Client(config) credentials_provider = CredentialProviderWrapper(cred) # Perhatikan bahwa ProviderAuthV4 menunjukkan penggunaan signature V4. auth = oss2.ProviderAuthV4(credentials_provider) # yourEndpoint menentukan titik akhir untuk wilayah tempat bucket berada. endpoint = '<endpoint>' # yourBucketName menentukan nama bucket. bucket_name = 'yourBucketName' # Tentukan wilayah tempat bucket berada. region = '<region-id>' # Inisialisasi bucket dengan menggunakan instance Auth. Perhatikan bahwa parameter region wajib saat menggunakan signature V4; # jika tidak, akan terjadi error. bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region) # Gunakan objek bucket untuk operasi selanjutnya...
Peran RAM instans ECS
Cocok untuk aplikasi di instans ECS, instans ECI, atau node pekerja Container Service for Kubernetes (ACK). Peran RAM instans ECS memungkinkan refresh otomatis token STS di instans ECS, instans ECI, atau node pekerja Container Service for Kubernetes (ACK) tanpa menyediakan AK atau token STS. Untuk mendapatkan peran, lihat Buat peran RAM. Untuk melampirkannya ke instans, lihat Peran RAM instans.
-
Tambahkan dependensi kredensial.
pip install alibabacloud_credentials -
Konfigurasikan peran RAM instans ECS sebagai kredensial akses.
Sebelum menjalankan kode contoh, ganti placeholder seperti
<region-id>dengan wilayah dan titik akhir aktual. Misalnya, ganti<region-id>denganap-southeast-1.# -*- coding: utf-8 -*- import oss2 from alibabacloud_credentials.client import Client from alibabacloud_credentials.models import Config from oss2 import CredentialsProvider from oss2.credentials import Credentials class CredentialProviderWrapper(CredentialsProvider): def __init__(self, client): self.client = client def get_credentials(self): credential = self.client.get_credential() access_key_id = credential.access_key_id access_key_secret = credential.access_key_secret security_token = credential.security_token return Credentials(access_key_id, access_key_secret, security_token) config = Config( type='ecs_ram_role', # Jenis kredensial. Nilai tetap: ecs_ram_role. role_name='<RoleName>' # Nama peran RAM yang dilampirkan ke instans ECS. Opsional. Jika tidak diatur, akan diambil secara otomatis. Kami sangat menyarankan mengatur parameter ini untuk mengurangi permintaan. ) cred = Client(config) credentials_provider = CredentialProviderWrapper(cred) # Perhatikan bahwa ProviderAuthV4 menunjukkan penggunaan signature V4. auth = oss2.ProviderAuthV4(credentials_provider) # yourEndpoint menentukan titik akhir untuk wilayah tempat bucket berada. endpoint = '<endpoint>' # yourBucketName menentukan nama bucket. bucket_name = 'yourBucketName' # Tentukan wilayah tempat bucket berada. region = '<region-id>' # Inisialisasi bucket dengan menggunakan instance Auth. Perhatikan bahwa parameter region wajib saat menggunakan signature V4; # jika tidak, akan terjadi error. bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region) # Gunakan objek bucket untuk operasi selanjutnya...
ARN peran OIDC
Saat aplikasi tidak tepercaya berjalan di node pekerja ACK, gunakan RRSA untuk mencegahnya mendapatkan token STS peran RAM instans node. Kluster memasang file token OIDC service account per pod dan menyuntikkan konfigurasi ke variabel lingkungan. Alat kredensial menukar token OIDC menjadi token STS melalui AssumeRoleWithOIDC, tanpa memerlukan AK atau token STS. Konfigurasikan izin RAM untuk ServiceAccount guna mengimplementasikan isolasi izin pod dengan RRSA.
-
Tambahkan dependensi kredensial.
pip install alibabacloud_credentials -
Konfigurasikan peran OIDC sebagai kredensial akses.
Sebelum menjalankan kode contoh, ganti placeholder seperti
<region-id>dengan wilayah dan titik akhir aktual. Misalnya, ganti<region-id>denganap-southeast-1.# -*- coding: utf-8 -*- import oss2 from alibabacloud_credentials.client import Client from alibabacloud_credentials.models import Config from oss2 import CredentialsProvider from oss2.credentials import Credentials import os class CredentialProviderWrapper(CredentialsProvider): def __init__(self, client): self.client = client def get_credentials(self): credential = self.client.get_credential() access_key_id = credential.access_key_id access_key_secret = credential.access_key_secret security_token = credential.security_token return Credentials(access_key_id, access_key_secret, security_token) config = Config( # Jenis kredensial. Nilai tetap: oidc_role_arn. type='oidc_role_arn', # ARN peran RAM. Anda dapat mengatur RoleArn menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN. role_arn=os.environ.get('<RoleArn>'), # ARN penyedia OIDC. Anda dapat mengatur OidcProviderArn menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_PROVIDER_ARN. oidc_provider_arn=os.environ.get('<OidcProviderArn>'), # Jalur file token OIDC. Anda dapat mengatur OidcTokenFilePath menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_TOKEN_FILE. oidc_token_file_path=os.environ.get('<OidcTokenFilePath>'), # Nama sesi peran. Anda dapat mengatur RoleSessionName 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>', # Masa berlaku sesi. role_session_expiration=3600 ) cred = Client(config) credentials_provider = CredentialProviderWrapper(cred) # Perhatikan bahwa ProviderAuthV4 menunjukkan penggunaan signature V4. auth = oss2.ProviderAuthV4(credentials_provider) # yourEndpoint menentukan titik akhir untuk wilayah tempat bucket berada. endpoint = '<endpoint>' # yourBucketName menentukan nama bucket. bucket_name = 'yourBucketName' # Tentukan wilayah tempat bucket berada. region = '<region-id>' # Inisialisasi bucket dengan menggunakan instance Auth. Perhatikan bahwa parameter region wajib saat menggunakan signature V4; # jika tidak, akan terjadi error. bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region) # Gunakan objek bucket untuk operasi selanjutnya...
Konteks Function Compute
Cocok untuk fungsi yang berjalan di FC. FC mengasumsikan peran layanan untuk mendapatkan token STS (berlaku 36 jam) dan meneruskannya melalui parameter Credentials konteks. Karena waktu eksekusi fungsi maksimum adalah 24 jam, token tidak kedaluwarsa selama eksekusi, sehingga tidak perlu refresh. Untuk memberikan izin FC mengakses OSS, lihat Gunakan peran fungsi untuk memberikan izin Function Compute mengakses layanan cloud lainnya.
Inisialisasi penyedia kredensial dengan kredensial dari konteks FC.
Sebelum menjalankan kode contoh, ganti placeholder seperti<region-id>dengan wilayah dan titik akhir aktual. Misalnya, ganti<region-id>denganap-southeast-1.
# -*- coding: utf-8 -*-
import oss2
from oss2 import CredentialsProvider
from oss2.credentials import Credentials
def handler(event, context):
class CredentialProviderWrapper(CredentialsProvider):
def get_credentials(self):
creds = context.credentials
return Credentials(creds.access_key_id, creds.access_key_secret, creds.security_token)
credentials_provider = CredentialProviderWrapper()
# Perhatikan bahwa ProviderAuthV4 menunjukkan penggunaan signature V4.
auth = oss2.ProviderAuthV4(credentials_provider)
# yourEndpoint menentukan titik akhir untuk wilayah tempat bucket berada.
endpoint = '<endpoint>'
# yourBucketName menentukan nama bucket.
bucket_name = 'yourBucketName'
# Tentukan wilayah tempat bucket berada.
region = '<region-id>'
# Inisialisasi bucket dengan menggunakan instance Auth. Perhatikan bahwa parameter region wajib saat menggunakan signature V4;
# jika tidak, akan terjadi error.
bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
# Gunakan objek bucket untuk operasi selanjutnya...
return 'success'
URI kredensial
Cocok untuk aplikasi yang mendapatkan kredensial dari sistem eksternal. Alat kredensial mengambil token STS dari URI yang disediakan dan menangani refresh otomatis.
-
URI kredensial adalah alamat server tempat mendapatkan token STS.
-
Layanan backend yang menyediakan respons URI kredensial harus mengimplementasikan logika refresh otomatis token STS untuk memastikan aplikasi selalu mendapatkan kredensial yang valid.
-
Untuk memastikan alat kredensial dapat mengurai dan menggunakan token STS dengan benar, respons URI harus mematuhi protokol berikut:
-
Kode status respons: 200
-
Struktur isi respons:
{ "Code": "Success", "AccessKeySecret": "AccessKeySecret", "AccessKeyId": "AccessKeyId", "Expiration": "2021-09-26T03:46:38Z", "SecurityToken": "SecurityToken" }
-
-
Tambahkan dependensi kredensial.
pip install alibabacloud_credentials -
Konfigurasikan URI kredensial sebagai kredensial akses.
Sebelum menjalankan kode contoh, ganti placeholder seperti
<region-id>dengan wilayah dan titik akhir aktual. Misalnya, ganti<region-id>denganap-southeast-1.# -*- coding: utf-8 -*- import oss2 from alibabacloud_credentials.client import Client from alibabacloud_credentials.models import Config from oss2 import CredentialsProvider from oss2.credentials import Credentials class CredentialProviderWrapper(CredentialsProvider): def __init__(self, client): self.client = client def get_credentials(self): credential = self.client.get_credential() access_key_id = credential.access_key_id access_key_secret = credential.access_key_secret security_token = credential.security_token return Credentials(access_key_id, access_key_secret, security_token) config = Config( type='credentials_uri', # URI untuk kredensial, dalam format http://local_or_remote_uri/. Anda dapat mengatur CredentialsUri menggunakan variabel lingkungan ALIBABA_CLOUD_CREDENTIALS_URI. credentials_uri='<CredentialsUri>', ) cred = Client(config) credentials_provider = CredentialProviderWrapper(cred) # Perhatikan bahwa ProviderAuthV4 menunjukkan penggunaan signature V4. auth = oss2.ProviderAuthV4(credentials_provider) # yourEndpoint menentukan titik akhir untuk wilayah tempat bucket berada. endpoint = '<endpoint>' # yourBucketName menentukan nama bucket. bucket_name = 'yourBucketName' # Tentukan wilayah tempat bucket berada. region = '<region-id>' # Inisialisasi bucket dengan menggunakan instance Auth. Perhatikan bahwa parameter region wajib saat menggunakan signature V4; # jika tidak, akan terjadi error. bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region) # Gunakan objek bucket untuk operasi selanjutnya...
AK yang diputar-otomatis
Cocok untuk lingkungan di mana AK berisiko dikompromikan. Inisialisasi penyedia kredensial dengan ClientKey dari KMS, yang secara otomatis memutar AK pengguna RAM yang dikelola. KMS juga mendukung rotasi segera jika AK dikompromikan. Untuk mendapatkan ClientKey, lihat Buat Titik Akses Aplikasi.
-
Tambahkan dependensi klien Secrets Manager.
pip install aliyun-secret-manager-client -
Buat file konfigurasi bernama
secretsmanager.properties.# Jenis kredensial akses. Nilai tetap: client_key credentials_type=client_key # Kata sandi dekripsi untuk ClientKey. Anda dapat membacanya dari variabel lingkungan atau file. Atur hanya satu. client_key_password_from_env_variable=<nama variabel lingkungan kata sandi kunci privat client key Anda> client_key_password_from_file_path=<jalur file kata sandi kunci privat client key Anda> # Jalur ke file kunci privat ClientKey. client_key_private_key_path=<jalur file kunci privat client key Anda> # Wilayah KMS terkait. cache_client_region_id=[{"regionId":"<regionId>"}] -
Gunakan file konfigurasi untuk menyediakan informasi kredensial.
Sebelum menjalankan kode contoh, ganti placeholder seperti
<region-id>dengan wilayah dan titik akhir aktual. Misalnya, ganti<region-id>denganap-southeast-1.# -*- coding: utf-8 -*- import json import oss2 from oss2 import CredentialsProvider from oss2.credentials import Credentials from alibaba_cloud_secretsmanager_client.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder class CredentialProviderWrapper(CredentialsProvider): def get_credentials(self): secret_cache_client = SecretManagerCacheClientBuilder.new_client() secret_info = secret_cache_client.get_secret_info("<secretName>") secret_value_json = json.loads(secret_info.secret_value) return Credentials(secret_value_json["AccessKeyId"], secret_value_json["AccessKeySecret"]) credentials_provider = CredentialProviderWrapper() # Perhatikan bahwa ProviderAuthV4 menunjukkan penggunaan signature V4. auth = oss2.ProviderAuthV4(credentials_provider) # yourEndpoint menentukan titik akhir untuk wilayah tempat bucket berada. endpoint = '<endpoint>' # yourBucketName menentukan nama bucket. bucket_name = 'yourBucketName' # Tentukan wilayah tempat bucket berada. region = '<region-id>' # Inisialisasi bucket dengan menggunakan instance Auth. Perhatikan bahwa parameter region wajib saat menggunakan signature V4; # jika tidak, akan terjadi error. bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region) # Gunakan objek bucket untuk operasi selanjutnya...
Penyedia kredensial kustom
Jika metode konfigurasi kredensial di atas tidak memenuhi kebutuhan Anda, Anda dapat mendefinisikan penyedia kredensial kustom dengan mengimplementasikan antarmuka CredentialProvider. Jika implementasi Anda menggunakan token STS, Anda juga harus menangani refresh kredensial.
Sebelum menjalankan kode contoh, ganti placeholder seperti<region-id>dengan wilayah dan titik akhir aktual. Misalnya, ganti<region-id>denganap-southeast-1.
# -*- coding: utf-8 -*-
import oss2
from oss2 import CredentialsProvider
from oss2.credentials import Credentials
class CredentialProviderWrapper(CredentialsProvider):
def get_credentials(self):
# TODO
# Implementasikan metode kustom Anda untuk mendapatkan kredensial akses.
# Kembalikan kredensial jangka panjang: access_key_id, access_key_secret
return Credentials('<access_key_id>', '<access_key_secrect>')
# Kembalikan kredensial sementara: access_key_id, access_key_secret, token
# Untuk kredensial sementara, Anda perlu merefresh berdasarkan waktu kedaluwarsanya.
# return Credentials('<access_key_id>', '<access_key_secrect>', '<token>');
credentials_provider = CredentialProviderWrapper()
# Perhatikan bahwa ProviderAuthV4 menunjukkan penggunaan signature V4.
auth = oss2.ProviderAuthV4(credentials_provider)
# yourEndpoint menentukan titik akhir untuk wilayah tempat bucket berada.
endpoint = '<endpoint>'
# yourBucketName menentukan nama bucket.
bucket_name = 'yourBucketName'
# Tentukan wilayah tempat bucket berada.
region = '<region-id>'
# Inisialisasi bucket dengan menggunakan instance Auth. Perhatikan bahwa parameter region wajib saat menggunakan signature V4;
# jika tidak, akan terjadi error.
bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
# Gunakan objek bucket untuk operasi selanjutnya...
FAQ
Error: No module named _crcfunext?
Proses upload dan download menggunakan OSS Python SDK V1 lebih lambat dibanding alat lain, seperti ossutil atau SDK lainnya.
-
Penyebab:
Pustaka
_crcfunext.sogagal dihasilkan selama kompilasicrcmodkarena sistem tidak memiliki filePython.hyang diperlukan. Pelajari lebih lanjut tentangcrcmoddi pengantar crcmod. -
Solusi:
Verifikasi bahwa mode ekstensi C untuk
crcmodtelah diinstal dengan benar.-
Jalankan perintah berikut untuk masuk ke lingkungan Python.
python -
Jalankan perintah berikut untuk mengimpor modul ekstensi C
_crcfunextdari modulcrcmod.import crcmod._crcfunextError berikut menunjukkan bahwa mode ekstensi C untuk pustaka
crcmodgagal diinstal.Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named _crcfunext -
Pilih solusi berdasarkan sistem operasi Anda.
Windows
-
Unduh crcmod-1.7.win32-py2.7.msi atau versi .msi lainnya.
CatatanVersi 32-bit
crcmodkompatibel dengan sistem Windows 32-bit dan 64-bit. -
Instal file .msi dan selama proses instalasi, tentukan jalur instalasi crcmod ke folder
Lib\site-packagesdi direktori instalasi Python lokal Anda. Misalnya,D:\python\Lib\site-packages\. -
Setelah instalasi selesai, jalankan langkah verifikasi
crcmodlagi.
Linux
Jika masalah ini terjadi di sistem Linux, lakukan langkah-langkah berikut:
-
Jalankan perintah berikut untuk menguninstal
crcmod.pip uninstall crcmod -
Instal
python-devel. Lihat Persiapkan lingkungan. -
Jalankan perintah berikut untuk menginstal ulang
crcmod.pip install crcmodJika instalasi gagal lagi, uninstal
crcmoddan jalankan perintah berikut untuk melihat informasi error detail.pip install crcmod -v
-
-
Error: No module named 'Crypto'?
-
Penyebab:
Modul
Cryptotidak ada di sistem, atau modulcrypto(dengan huruf awal kecil) ada. -
Solusi:
Periksa modul Crypto di jalur instalasi Python lokal Anda, misalnya,
D:\python3.9\Lib\site-packages.-
Jika modul Crypto tidak ada, jalankan perintah berikut.
python -m pip install --upgrade setuptools -
Jika modul bernama
crypto(dengan c kecil) ada, ubah namanya menjadiCryptolalu mulai ulang program Anda.
-
Error: "not an internal or external command"?
Di Windows, jika Anda menerima pesan 'is not recognized as an internal or external command', tambahkan jalur instalasi Python dan pip (biasanya folder Scripts di direktori Python) ke variabel lingkungan Path. Mulai ulang komputer Anda agar perubahan diterapkan.
Instalasi OSS Python SDK V1 gagal
Jika instalasi gagal, uninstal dan coba lagi.
pip uninstall oss2
Upgrade OSS Python SDK V1
Jalankan perintah berikut untuk mengupgrade SDK.
pip install --upgrade oss2
Atasi error AccessDenied
Error AccessDenied menunjukkan izin tidak mencukupi. Atasi sebagai berikut:
-
Pastikan Anda menggunakan ID AccessKey dan Secret AccessKey yang benar.
-
Verifikasi bahwa pengguna RAM memiliki izin yang diperlukan untuk operasi bucket atau objek.
-
Periksa kebijakan bucket: Pesan error yang berisi "Access denied by bucket policy" menunjukkan permintaan diblokir oleh kebijakan bucket.
Tingkatkan kecepatan transfer untuk akses intra-wilayah
Untuk transfer lebih cepat, akses OSS dari produk Alibaba Cloud (seperti ECS) di wilayah yang sama dengan bucket Anda, menggunakan titik akhir internal.
Lihat AccessKey dan kelola Secret AccessKey
-
Untuk melihat AccessKey pengguna RAM: Masuk ke Konsol RAM dan pilih pengguna tertentu untuk melihat informasi AccessKey-nya.
-
Secret AccessKey pengguna RAM hanya ditampilkan saat pembuatan. Jika Anda kehilangannya, buat AccessKey baru di Konsol RAM. Buat AccessKey.