Topik ini menjelaskan cara menginisialisasi Object Storage Service (OSS) SDK untuk Python.
Catatan Penggunaan
Sebelum menginisialisasi OSS SDK untuk Python, konfigurasikan kredensial akses. Dalam topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi lebih lanjut, lihat Konfigurasikan kredensial akses (Python SDK V1).
Untuk memperoleh informasi tentang Wilayah dan Titik akhir OSS, lihat Wilayah dan Titik akhir.
Untuk membuat Pasangan Kunci Akses untuk Pengguna RAM, lihat Buat Pasangan Kunci Akses.
Sebagian besar operasi OSS SDK untuk Python dilakukan menggunakan kelas oss2.Service dan oss2.Bucket.
Kelas oss2.Service digunakan untuk mencantumkan bucket.
Kelas oss2.Bucket digunakan untuk mengunggah, mengunduh, dan menghapus objek, serta mengonfigurasi bucket.
Saat menginisialisasi kelas oss2.Service dan oss2.Bucket, tentukan titik akhir wilayah tempat bucket berada. Kelas oss2.Service tidak mendukung akses ke bucket menggunakan nama domain kustom yang dipetakan ke bucket.
Prasyarat
Sebelum mengonfigurasi klien, pastikan Anda telah mengonfigurasi variabel lingkungan menggunakan Pasangan Kunci Akses Pengguna RAM.
Contoh Default
Bagian ini memberikan contoh penggunaan algoritma tanda tangan V4 dan algoritma tanda tangan V1 untuk menginisialisasi OSS SDK untuk Python.
Perhatikan bahwa kode sampel berikut menggunakan titik akhir publik bucket dan Pasangan Kunci Akses Pengguna RAM.
(Tidak Direkomendasikan) Gunakan algoritma tanda tangan V1
Contoh Konfigurasi dalam Skenario Umum
Bagian ini memberikan contoh konfigurasi dalam skenario umum. Kode sampel menggunakan algoritma tanda tangan V4 dan Pasangan Kunci Akses Pengguna RAM untuk menginisialisasi OSS SDK untuk Python secara default.
Gunakan titik akhir internal untuk menginisialisasi OSS SDK untuk Python
Jika aplikasi Anda diterapkan pada instance ECS dan sering mengakses data OSS di bucket di wilayah yang sama dengan instance ECS, gunakan titik akhir internal untuk mengurangi latensi jaringan dan biaya bandwidth secara signifikan.
Kode sampel berikut menunjukkan cara menggunakan titik akhir internal untuk mengonfigurasi instance OSSClient:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Cina (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou-internal.aliyuncs.com.
endpoint = 'yourEndpoint'
# Tentukan wilayah titik akhir. Contoh: cn-hangzhou.
region = 'cn-hangzhou'
# Tentukan nama bucket.
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region) Gunakan nama domain kustom untuk menginisialisasi OSS SDK untuk Python
Jika memiliki beberapa bucket untuk penggunaan yang berbeda, tentukan subdomain yang berbeda untuk setiap bucket untuk mengelola dan mengatur sumber daya dengan lebih baik.
Kode sampel berikut menunjukkan cara menggunakan nama domain kustom untuk mengonfigurasi instance OSSClient.
Anda harus terlebih dahulu memetakan nama domain kustom ke nama domain default bucket. Jika tidak, kesalahan akan dilaporkan. Untuk informasi lebih lanjut tentang cara memetakan nama domain kustom ke nama domain default bucket, lihat Petakan nama domain kustom ke nama domain default bucket.
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
// Tentukan nama domain kustom. Contoh: https://static.example.com.
endpoint = 'yourEndpoint'
# Tentukan wilayah titik akhir. Contoh: cn-hangzhou.
region = 'cn-hangzhou'
# Tentukan nama bucket. Set is_cname ke true untuk mengaktifkan CNAME.
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', is_cname=True, region=region)
Konfigurasikan periode timeout koneksi
Kode sampel berikut menunjukkan cara mengonfigurasi periode timeout koneksi:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Kami merekomendasikan agar Anda tidak menyimpan kredensial akses di kode proyek. Jika tidak, kredensial akses mungkin bocor. Akibatnya, keamanan semua sumber daya di akun Anda terganggu. Dalam contoh ini, kredensial akses diperoleh dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Cina (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan wilayah titik akhir. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"
# Tentukan nama bucket dan atur periode timeout koneksi menjadi 30 detik.
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', connect_timeout=30,region=region) Nonaktifkan CRC-64
Secara default, CRC-64 diaktifkan untuk memastikan integritas data saat mengunggah atau mengunduh objek.
Kami merekomendasikan agar Anda tidak menonaktifkan CRC-64. Jika menonaktifkan CRC-64, integritas data mungkin terpengaruh saat mengunggah atau mengunduh objek.
Kode sampel berikut menunjukkan cara menonaktifkan CRC-64:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Kami merekomendasikan agar Anda tidak menyimpan kredensial akses di kode proyek. Jika tidak, kredensial akses mungkin bocor. Akibatnya, keamanan semua sumber daya di akun Anda terganggu. Dalam contoh ini, kredensial akses diperoleh dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Cina (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan wilayah titik akhir. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"
# Tentukan nama bucket dan atur enable_crc ke False untuk menonaktifkan CRC-64.
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', enable_crc=False,region=region) Tentukan ukuran kolam koneksi
Kode sampel berikut menunjukkan cara menentukan ukuran kolam koneksi:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Kami merekomendasikan agar Anda tidak menyimpan kredensial akses di kode proyek. Jika tidak, kredensial akses mungkin bocor. Akibatnya, keamanan semua sumber daya di akun Anda terganggu. Dalam contoh ini, kredensial akses diperoleh dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Cina (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan wilayah titik akhir. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"
# Tentukan ukuran kolam koneksi. Nilai default: 10.
session = oss2.Session(pool_size=20)
# Tentukan nama bucket.
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', session=session,region=region)Tentukan versi TLS
Versi Transport Layer Security (TLS) yang berbeda memiliki fitur keamanan dan performa yang berbeda. Pilih versi TLS berdasarkan skenario Anda.
Anda dapat menentukan versi TLS di OSS SDK untuk Python 2.18.1 atau yang lebih baru.
Kode sampel berikut menunjukkan cara menyetel versi TLS menjadi 1.2:
# -*- coding: utf-8 -*-
import ssl
import oss2
from requests.adapters import HTTPAdapter
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Konfigurasikan adaptor SSL.
class SSLAdapter(HTTPAdapter):
def init_poolmanager(self, *args, **kwargs):
# Setel versi TLS menjadi 1.2.
kwargs["ssl_version"] = ssl.PROTOCOL_TLSv1_2
return super().init_poolmanager(*args, **kwargs)
# Buat objek sesi dan konfigurasikan adaptor menggunakan objek sesi.
session = oss2.Session(adapter=SSLAdapter())
# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Cina (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan wilayah titik akhir. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"
# Tentukan nama bucket. Contoh: examplebucket.
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', session=session, region=region)
# Unggah objek.
bucket.put_object("example.txt", "hello")Parameter yang didukung oleh kelas oss2.Bucket
Tabel berikut menjelaskan parameter yang dapat dikonfigurasi saat menginisialisasi kelas oss2.Bucket.
Parameter | Contoh | Deskripsi | Metode |
is_cname | True | Menentukan apakah titik akhir adalah nama domain kustom. Nilai valid:
| oss2.Bucket(auth, cname, 'examplebucket', is_cname=True, region=region) |
session | mytestsession | Nama sesi, yang menentukan bahwa sesi baru dimulai. Nilai default: None. Jika Anda menyetel parameter ini ke nama sesi yang ada, sesi tersebut digunakan kembali. | oss2.Bucket(auth, endpoint, 'examplebucket', session=oss2.Session(), region=region) |
connect_timeout | 30 | Periode timeout koneksi. Nilai default: 60. Satuan: detik. | oss2.Bucket(auth, endpoint, 'examplebucket', connect_timeout=30, region=region) |
app_name | mytool | Nama aplikasi yang menggunakan OSS SDK untuk Python. Secara default, parameter ini dibiarkan kosong. Jika parameter ini tidak kosong, tentukan nilai yang sesuai di bidang User-Agent. Penting String dilewatkan sebagai nilai header HTTP dan harus mematuhi standar HTTP. | oss2.Bucket(auth, endpoint, 'examplebucket', app_name='mytool', region=region) |
enable_crc | False | Menentukan apakah akan mengaktifkan CRC-64.
| oss2.Bucket(auth, endpoint, 'examplebucket', enable_crc=False, region=region) |