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-v2Gunakan 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.
Di Konsol RAM, buat pengguna RAM dan pilih Uses A Permanent AccessKey Pair For Access. Simpan pasangan AccessKey tersebut, lalu berikan izin
AliyunOSSFullAccesskepada pengguna.Gunakan pasangan AccessKey pengguna RAM untuk mengonfigurasi variabel lingkungan.
Linux
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'" >> ~/.bashrcJalankan perintah berikut untuk menerapkan perubahan.
source ~/.bashrcJalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
macOS
Di terminal, jalankan perintah berikut untuk memeriksa jenis shell default.
echo $SHELLLakukan 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'" >> ~/.zshrcJalankan perintah berikut untuk menerapkan perubahan.
source ~/.zshrcJalankan perintah berikut untuk memeriksa apakah 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_profileJalankan perintah berikut untuk menerapkan perubahan.
source ~/.bash_profileJalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Windows
CMD
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"Anda dapat menjalankan perintah berikut untuk memeriksa apakah 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 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
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.
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.
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
Gunakan pasangan AccessKey pengguna RAM untuk mengonfigurasi variabel lingkungan.
Linux
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'" >> ~/.bashrcJalankan perintah berikut untuk menerapkan perubahan:
source ~/.bashrcJalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah berlaku:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
macOS
Jalankan perintah berikut di terminal untuk melihat jenis shell default:
echo $SHELLKonfigurasi variabel lingkungan berdasarkan jenis shell default.
Zsh
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'" >> ~/.zshrcJalankan perintah berikut untuk menerapkan perubahan:
source ~/.zshrcJalankan perintah berikut untuk memeriksa apakah variabel lingkungan berlaku:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
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_profileJalankan perintah berikut untuk menerapkan perubahan:
source ~/.bash_profileJalankan perintah berikut untuk memeriksa apakah variabel lingkungan berlaku:
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 memeriksa apakah variabel lingkungan berlaku:
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 memeriksa apakah variabel lingkungan berlaku:
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
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.
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.
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.
Untuk mendapatkan token STS dengan cepat dan mudah dengan memanggil operasi OpenAPI, lihat AssumeRole - Dapatkan kredensial identitas sementara untuk peran RAM.
Untuk mendapatkan token STS menggunakan SDK, lihat Gunakan token STS untuk mengakses OSS.
Perhatikan bahwa saat token STS dihasilkan, Anda harus menentukan waktu kedaluwarsa. Token menjadi tidak valid setelah kedaluwarsa dan tidak dapat digunakan lagi.
Untuk daftar endpoint STS, lihat Endpoints.
Variabel lingkungan
Anda dapat menggunakan kredensial identitas sementara untuk menyetel variabel lingkungan.
Mac OS X/Linux/Unix
PeringatanPerhatikan 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
PeringatanPerhatikan 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>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.
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.
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.
Tambahkan dependensi alibabacloud_credentials.
pip install alibabacloud_credentialsKonfigurasikan 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.
Tambahkan dependensi alibabacloud_credentials.
pip install alibabacloud_credentialsKonfigurasikan 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.
Tambahkan dependensi alibabacloud_credentials.
pip install alibabacloud_credentials
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.
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.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.
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.Contoh berikut menunjukkan hasil yang dikembalikan. Hasil tersebut berisi 'EC': '0026-00000001', yang merupakan pengidentifikasi unik untuk penyebab kesalahan ini.
Ikuti langkah-langkah berikut untuk menemukan penyebab masalah dan solusi yang sesuai menggunakan EC yang dikembalikan dalam contoh permintaan kesalahan di atas.
Di kotak pencarian, masukkan EC, seperti 0026-00000001.
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 |
Blokir Akses Publik tingkat Bucket untuk OSS (Python SDK V2) | |
Blokir Akses Publik tingkat Titik Akses untuk OSS (Python SDK V2) | |
- |