Object Storage Service (OSS) adalah layanan penyimpanan cloud yang aman, berbiaya rendah, dan sangat andal. Anda dapat memasang bucket OSS ke fungsi Function Compute, sehingga fungsi tersebut dapat mengakses OSS seolah-olah merupakan sistem file lokal. Hal ini menyederhanakan akses sumber daya dan pemrosesan data.
Batasan
Fungsi di Function Compute mendukung maksimal lima titik pemasangan NAS dan lima titik pemasangan OSS di wilayah yang sama.
Direktori lokal yang ditentukan untuk titik pemasangan NAS dan OSS dalam lingkungan runtime fungsi tidak boleh saling bertentangan.
Untuk informasi lebih lanjut tentang cara mengonfigurasi titik pemasangan NAS, lihat Konfigurasi sistem file NAS.
Prasyarat
Object Storage Service (OSS)
Function Compute
Konfigurasikan izin untuk peran fungsi. Untuk mengaktifkan fitur pemasangan OSS, Anda harus mengonfigurasi peran bagi fungsi agar dapat mengakses OSS. Untuk informasi selengkapnya, lihat Berikan izin Function Compute untuk mengakses layanan Alibaba Cloud lainnya menggunakan peran fungsi.
Prosedur
Langkah 1: Konfigurasi titik pemasangan OSS
Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, pilih .
Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi yang dituju.
Di halaman detail fungsi, klik tab Configuration. Klik Edit di samping Advanced Configuration. Di panel Advanced Configuration, temukan bagian Storage dan aktifkan Mount OSS Bucket. Konfigurasikan parameter berikut sesuai kebutuhan, lalu klik Deploy.
Parameter
Deskripsi
Contoh
OSS Mount Target: Masukkan informasi titik pemasangan OSS.
Bucket
Pilih bucket yang sudah ada. Untuk membuat bucket OSS baru, klik Create New OSS Bucket di bawah ini untuk membuka Konsol OSS dan membuatnya. Untuk informasi mengenai biaya penggunaan OSS, lihat Ikhtisar penagihan OSS.
example-bucket
Bucket Subdirectory
Tentukan subdirektori dalam bucket. Ini harus berupa jalur mutlak. Jika Anda biarkan kosong atau atur menjadi /, direktori root bucket akan dipasang.
/files
OSS Endpoint
Setelah Anda memilih bucket, titik akhir yang sesuai akan dipilih secara default. Anda dapat memilih Custom Endpoint dan mengubah nilai titik akhir sesuai kebutuhan. Untuk informasi mengenai titik akhir OSS di berbagai wilayah, lihat Wilayah dan titik akhir.
CatatanJika Anda memilih bucket di wilayah yang sama dengan fungsi Function Compute, gunakan titik akhir internal OSS.
Jika Anda memilih bucket di wilayah berbeda, Anda harus menggunakan titik akhir publik OSS. Hal ini akan dikenai biaya lalu lintas keluar melalui Internet.
Alamat default
Local Directory
Tentukan direktori lokal dalam lingkungan runtime fungsi. Direktori tersebut harus merupakan subdirektori dari /home, /mnt, atau /data.
/mnt/oss
Local Directory Permissions
Pilih izin akses untuk direktori lokal setelah bucket dipasang. Anda dapat mengatur izin menjadi Read-only atau Read/Write.
Read/Write
CatatanFitur pemasangan OSS bergantung pada konfigurasi jaringan fungsi. Jika fungsi dikonfigurasi hanya untuk mengakses VPC dan Allow Function To Access Internet On Default NIC diatur ke No, fungsi harus dapat mengakses Internet melalui VPC tersebut untuk menggunakan titik akhir OSS publik. Untuk informasi selengkapnya, lihat Konfigurasi alamat IP publik statis.
Langkah 2: Akses file di direktori OSS yang dipasang
Setelah Anda mengonfigurasi titik pemasangan OSS, Anda dapat mengakses file di direktori OSS yang dipasang dengan cara yang sama seperti mengakses file lokal.
Di halaman detail fungsi, klik tab Code. Tulis kode Anda di editor, lalu klik Deploy Code.
Topik ini menggunakan fungsi Python sebagai contoh. Kode contohnya adalah sebagai berikut.
import os def handler(event, context): # Mount directory mount_path = '/mnt/oss' # List files in the mount directory files = os.listdir(mount_path) print("Files in OSS mount:", files) # Read a file from the mount directory file_path = os.path.join(mount_path, 'example.txt') if os.path.exists(file_path): with open(file_path, 'r') as file: content = file.read() print("Content of example.txt:", content) else: print("example.txt does not exist.") # Write a file to the mount directory write_path = os.path.join(mount_path, 'output.txt') with open(write_path, 'w') as file: file.write("Hello, OSS mount!") print("Wrote to output.txt in OSS mount.") return "Function execution completed."CatatanDalam kode, ganti
example.txtdengan nama file aktual di direktori OSS yang dipasang Anda.Setelah kode dideploy, di tab Code, klik Test Function.
Setelah eksekusi selesai, Anda dapat melihat hasilnya di bawah tab Code. Tab Log Output menampilkan konten file
example.txtyang dibaca dari direktori OSS. Di Konsol OSS, Anda dapat melihat bahwa fileoutput.txttelah ditulis ke direktori yang dipasang terkait.
FAQ
Pemasangan OSS gagal dengan pesan kesalahan bucket not found.
Konfirmasi bahwa titik akhir OSS dan nama bucket benar.
Pemasangan OSS gagal dengan pesan kesalahan host resolv error atau deadline exceeded.
Konfirmasi bahwa titik akhir benar.
Kegagalan resolusi nama domain untuk titik akhir menyebabkan
host resolv error.Titik akhir internal tidak dapat digunakan lintas wilayah. Menggunakan titik akhir internal dari wilayah berbeda menyebabkan timeout koneksi, yang menghasilkan kesalahan
deadline exceeded.
Pemasangan gagal dengan pesan kesalahan invalid credentials.
Konfirmasi bahwa peran RAM yang dikonfigurasi untuk fungsi memiliki izin yang diperlukan untuk mengakses OSS. Izin yang diperlukan adalah sebagai berikut. Untuk informasi selengkapnya, lihat Berikan izin Function Compute untuk mengakses layanan Alibaba Cloud lainnya menggunakan peran fungsi.
Read-only: Termasuk kebijakan
oss:ListObjectsdanoss:GetObject.Read/Write: Termasuk
oss:ListObjects,oss:GetObject,oss:PutObject,oss:DeleteObject,oss:ListParts, danoss:AbortMultipartUpload.
oss:ListObjects adalah operasi tingkat bucket. Oleh karena itu, saat Anda mengaktifkan akses ke bucket tertentu, kebijakan akses harus mencakup pengidentifikasi sumber daya tingkat bucket, seperti acs:oss:*:*:bucketName. Untuk informasi selengkapnya, lihat Deskripsi Sumber Daya OSS.
Terjadi kesalahan Input/output error saat membaca file yang dipasang.
Periksa kelas penyimpanan bucket OSS Anda. Jika kelas penyimpanannya adalah Archive Storage atau Cold Archive, file dalam bucket berada dalam status beku. File-file tersebut harus dipulihkan terlebih dahulu sebelum dapat diakses. Atur kelas penyimpanan bucket OSS Anda ke Standard.
Bagaimana cara melihat file di direktori lokal fungsi yang telah dikonfigurasi?
Di halaman detail fungsi, klik tab Instances untuk melihat daftar instans dengan status Running. Pilih sebuah instans dan klik Log On To Instance di kolom Actions.
Setelah masuk ke instans, Anda dapat menjalankan perintah untuk melihat informasi file di direktori lokal yang dikonfigurasi. Misalnya:

Mengakses titik pemasangan dari dalam instans fungsi mengembalikan kesalahan Transport endpoint is not connected.
Jika spesifikasi memori instans fungsi rendah atau penggunaan memorinya tinggi, fitur pemasangan OSS mungkin menjadi tidak tersedia karena kesalahan kehabisan memori, yang menyebabkan kesalahan ini. Tingkatkan spesifikasi memori fungsi sesuai kebutuhan bisnis Anda. Saat menggunakan titik pemasangan OSS, memori fungsi minimal harus 512 MB.
Apakah data yang ditulis ke direktori fungsi bersifat persisten?
Saat instans fungsi dihapus, data yang ditulis ke direktori fungsi juga akan dihapus. Untuk membuat data bersifat persisten, Anda dapat mengonfigurasi titik pemasangan, seperti pemasangan sistem file NAS atau pemasangan OSS. Untuk informasi selengkapnya, lihat Konfigurasi sistem file NAS dan Konfigurasi bucket OSS.
Bagaimana cara menggunakan kebijakan akses untuk memberikan akses read-only ke bucket tertentu?
Bagaimana cara menggunakan kebijakan akses untuk memberikan akses read/write ke bucket tertentu?
Bagaimana cara menggunakan kebijakan akses untuk memberikan akses read-only ke subdirektori bucket tertentu?
Bagaimana cara menggunakan kebijakan akses untuk memberikan akses read/write ke subdirektori bucket tertentu?
Saat menulis file melalui titik pemasangan OSS, file tampak kosong dari sisi OSS.
Saat Anda menulis file menggunakan titik pemasangan OSS, sistem hanya mengunggah konten ke OSS ketika Anda secara eksplisit memanggil Flush atau menutup file.
Operasi seperti kompresi, dekompresi, atau transfer file berjalan lambat saat dilakukan pada titik pemasangan OSS.
OSS tidak mendukung API sistem file secara native. Saat Anda memasang bucket OSS sebagai direktori, Function Compute menggabungkan dan mengenkapsulasi API OSS untuk mensimulasikan perilaku API sistem file. Misalnya, OSS tidak mendukung penulisan acak. Untuk menggunakan API sistem file guna memodifikasi file yang sudah ada pada titik pemasangan OSS, Function Compute mengunduh seluruh file sumber dari OSS, memodifikasinya, lalu mengunggahnya kembali ke OSS.
Ketika API sistem file berkorespondensi langsung dengan fitur API OSS, seperti pembacaan dan penulisan file berurutan, performanya umumnya baik. Namun, operasi yang memerlukan penggabungan beberapa API OSS, seperti operasi baca/tulis acak yang digunakan untuk kompresi atau dekompresi, mungkin memerlukan beberapa interaksi dengan OSS. Hal ini mengakibatkan performa yang lebih rendah dibandingkan sistem file lokal.
Apakah instans fungsi yang berbeda mengkoordinasikan dan menyinkronkan akses ke titik pemasangan OSS?
Instans fungsi yang berbeda bersifat independen satu sama lain. Konten titik pemasangan OSS yang diambil dari instans berbeda mungkin tidak sama. Misalnya, jika Anda membuat file F pada titik pemasangan OSS menggunakan instans fungsi A, Anda mungkin tidak dapat melihat file tersebut secara real-time dari instans fungsi B.