Topik ini menjelaskan cara menggunakan metode unggah sederhana untuk mengunggah satu file ke OSS. Metode ini sederhana dan cocok untuk pengunggahan file cepat ke penyimpanan cloud.
Penting
Kode contoh dalam topik ini menggunakan ID Wilayah cn-hangzhou untuk China (Hangzhou) sebagai contoh. Secara default, titik akhir publik digunakan. Jika Anda ingin mengakses OSS dari produk Alibaba Cloud lainnya di wilayah yang sama, Anda harus menggunakan titik akhir internal. Untuk informasi lebih lanjut tentang pemetaan antara Wilayah OSS dan titik akhir, lihat Wilayah dan Titik Akhir OSS.
Izin
Secara default, Akun Alibaba Cloud memiliki izin penuh. Pengguna RAM atau Peran RAM di bawah Akun Alibaba Cloud tidak memiliki izin apa pun secara default. Akun Alibaba Cloud atau administrator akun harus memberikan izin operasi melalui Kebijakan RAM atau Kebijakan Bucket.
API | Aksi | Definisi |
PutObject |
| Mengunggah sebuah objek. |
| Saat mengunggah sebuah objek, jika Anda menentukan tag objek melalui | |
| Saat mengunggah sebuah objek, jika metadata objek berisi | |
|
Definisi metode
put_object(request: PutObjectRequest, **kwargs) → PutObjectResultParameter permintaan
Parameter | Tipe | Deskripsi |
request | PutObjectRequest | Menentukan parameter permintaan, seperti daftar kontrol akses (ACL) objek, apakah melarang penimpaan (ForbidOverwrite), dan metadata kustom (Metadata). Untuk informasi lebih lanjut, lihat PutObjectRequest |
Nilai kembali
Tipe | Deskripsi |
PutObjectResult | Nilai kembali. Untuk informasi lebih lanjut, lihat PutObjectResult |
Untuk definisi lengkap dari metode unggah sederhana, lihat put_object.
Unggah file lokal
Saat Anda mengunggah sebuah objek, jika objek dengan nama yang sama sudah ada di bucket dan Anda memiliki izin yang diperlukan, objek baru akan menimpa yang sudah ada.
Parameter umum untuk mengunggah file adalah sebagai berikut:
Parameter | Deskripsi |
bucket_name | Nama bucket. Konvensi penamaan untuk bucket adalah sebagai berikut:
|
object_name | Jalur lengkap objek. Jalur lengkap tidak dapat berisi nama bucket. Konvensi penamaan untuk objek adalah sebagai berikut:
|
Anda dapat menggunakan metode put_object_from_file untuk mengunggah file lokal ke bucket tujuan.
import argparse
import alibabacloud_oss_v2 as oss
# Buat parser argumen baris perintah.
parser = argparse.ArgumentParser(description="put object from file sample")
# Tambahkan argumen baris perintah --region, yang menentukan wilayah tempat bucket berada. Argumen ini wajib.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
# Tambahkan argumen baris perintah --bucket, yang menentukan nama bucket. Argumen ini wajib.
parser.add_argument('--bucket', help='Nama bucket.', required=True)
# Tambahkan argumen baris perintah --endpoint, yang menentukan nama domain yang layanan lain gunakan untuk mengakses OSS. Argumen ini opsional.
parser.add_argument('--endpoint', help='Nama domain yang layanan lain gunakan untuk mengakses OSS')
# Tambahkan argumen baris perintah --key, yang menentukan nama objek. Argumen ini wajib.
parser.add_argument('--key', help='Nama objek.', required=True)
# Tambahkan argumen baris perintah --file_path, yang menentukan jalur file lokal untuk diunggah. Argumen ini wajib.
parser.add_argument('--file_path', help='Jalur file untuk diunggah.', required=True)
def main():
# Parsing argumen baris perintah.
args = parser.parse_args()
# Muat kredensial dari variabel lingkungan untuk verifikasi identitas.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Muat konfigurasi default dari kit pengembangan perangkat lunak (SDK) dan atur penyedia kredensial.
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
# Atur wilayah dalam konfigurasi.
cfg.region = args.region
# Jika argumen endpoint disediakan, atur endpoint dalam konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Buat klien OSS menggunakan konfigurasi yang ditentukan.
client = oss.Client(cfg)
# Eksekusi permintaan untuk mengunggah objek langsung dari file.
# Tentukan nama bucket, nama objek, dan jalur file lokal.
result = client.put_object_from_file(
oss.PutObjectRequest(
bucket=args.bucket, # Nama bucket.
key=args.key # Nama objek.
),
args.file_path # Jalur file lokal.
)
# Cetak informasi hasil permintaan, termasuk kode status, ID permintaan, Content-MD5, ETag, hash CRC64 64-bit, ID versi, dan waktu respons server.
print(f'kode status: {result.status_code},'
f' ID permintaan: {result.request_id},'
f' content md5: {result.content_md5},'
f' etag: {result.etag},'
f' hash crc64: {result.hash_crc64},'
f' ID versi: {result.version_id},'
f' waktu server: {result.headers.get("x-oss-server-time")},'
)
# Titik masuk skrip. Fungsi utama dipanggil saat file dijalankan langsung.
if __name__ == "__main__":
main()
Saat Anda menggunakan metode put_object untuk mengunggah file lokal, Anda harus membuka file dalam mode 'rb'. Ini memastikan bahwa byte stream asli diunggah bukan konten teks, yang mencegah kegagalan Pemeriksaan Redundansi Siklik (CRC).
import argparse
import alibabacloud_oss_v2 as oss
# Buat parser argumen baris perintah.
parser = argparse.ArgumentParser(description="put object from file sample")
# Tambahkan argumen baris perintah --region, yang menentukan wilayah tempat bucket berada. Argumen ini wajib.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
# Tambahkan argumen baris perintah --bucket, yang menentukan nama bucket. Argumen ini wajib.
parser.add_argument('--bucket', help='Nama bucket.', required=True)
# Tambahkan argumen baris perintah --endpoint, yang menentukan nama domain yang layanan lain gunakan untuk mengakses OSS. Argumen ini opsional.
parser.add_argument('--endpoint', help='Nama domain yang layanan lain gunakan untuk mengakses OSS')
# Tambahkan argumen baris perintah --key, yang menentukan nama objek. Argumen ini wajib.
parser.add_argument('--key', help='Nama objek.', required=True)
def main():
# Parsing argumen baris perintah.
args = parser.parse_args()
# Muat kredensial dari variabel lingkungan untuk verifikasi identitas.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Muat konfigurasi default dari SDK dan atur penyedia kredensial.
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
# Atur wilayah dalam konfigurasi.
cfg.region = args.region
# Jika argumen endpoint disediakan, atur endpoint dalam konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Buat klien OSS menggunakan konfigurasi yang ditentukan.
client = oss.Client(cfg)
# Eksekusi permintaan untuk mengunggah objek langsung dari file lokal.
# Tentukan nama bucket, nama objek, dan jalur file lokal.
with open('your-test-file.md', 'rb') as f:
result = client.put_object(
oss.PutObjectRequest(
bucket=args.bucket, # Nama bucket.
key=args.key, # Nama objek.
body=f.read() # Baca isi file.
)
)
# Cetak informasi hasil permintaan, termasuk kode status, ID permintaan, Content-MD5, ETag, hash CRC64, ID versi, dan waktu respons server.
print(f'kode status: {result.status_code},'
f' ID permintaan: {result.request_id},'
f' content md5: {result.content_md5},'
f' etag: {result.etag},'
f' hash crc64: {result.hash_crc64},'
f' ID versi: {result.version_id},'
f' waktu server: {result.headers.get("x-oss-server-time")},'
)
# Titik masuk skrip. Fungsi utama dipanggil saat file dijalankan langsung.
if __name__ == "__main__":
main()Skenario umum
Referensi
Untuk kode sampel lengkap unggah sederhana, lihat put_object.py.