全部产品
Search
文档中心

Function Compute:Konfigurasi bucket OSS

更新时间:Nov 19, 2025

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

Prosedur

Langkah 1: Konfigurasi titik pemasangan OSS

  1. Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, pilih Functions > Functions.

  2. Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi yang dituju.

  3. 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.

    Catatan
    • Jika 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

    Catatan

    Fitur 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.

  1. 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."
      
    Catatan

    Dalam kode, ganti example.txt dengan nama file aktual di direktori OSS yang dipasang Anda.

  2. 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.txt yang dibaca dari direktori OSS. Di Konsol OSS, Anda dapat melihat bahwa file output.txt telah 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:ListObjects dan oss:GetObject.

  • Read/Write: Termasuk oss:ListObjects, oss:GetObject, oss:PutObject, oss:DeleteObject, oss:ListParts, dan oss:AbortMultipartUpload.

Catatan

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?

  1. 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.

  2. Setelah masuk ke instans, Anda dapat menjalankan perintah untuk melihat informasi file di direktori lokal yang dikonfigurasi. Misalnya:

    image

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?

Buka untuk melihat contoh kebijakan akses. Ganti bucketName dalam contoh dengan nama bucket Anda. Untuk informasi selengkapnya, lihat Kebijakan RAM.

{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "oss:ListObjects",
        "oss:GetObject"
      ],
      "Resource": [
        "acs:oss:*:*:bucketName",
        "acs:oss:*:*:bucketName/*"
      ],
      "Effect": "Allow"
    }
  ]
}

Bagaimana cara menggunakan kebijakan akses untuk memberikan akses read/write ke bucket tertentu?

Buka untuk melihat contoh kebijakan akses. Ganti bucketName dalam contoh dengan nama bucket Anda. Untuk informasi selengkapnya, lihat Kebijakan RAM.

{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "oss:ListObjects",
        "oss:GetObject",
        "oss:PutObject",
        "oss:DeleteObject",
        "oss:AbortMultipartUpload",
        "oss:ListParts"
      ],
      "Resource": [
        "acs:oss:*:*:bucketName",
        "acs:oss:*:*:bucketName/*"
      ],
      "Effect": "Allow"
    }
  ]
}

Bagaimana cara menggunakan kebijakan akses untuk memberikan akses read-only ke subdirektori bucket tertentu?

Buka untuk melihat contoh kebijakan akses. Ganti bucketName dalam contoh dengan nama bucket Anda dan bucketPath dengan subdirektori bucket yang ditentukan. Untuk informasi selengkapnya, lihat Kebijakan RAM.

{
  "Version": "1",
  "Statement": [
    {
      "Action": "oss:ListObjects",
      "Effect": "Allow",
      "Resource": [
        "acs:oss:*:*:bucketName"
      ],
      "Condition": {
        "StringLike": {
          "oss:Prefix": [
            "bucketPath/*"
          ]
        }
      }
    },
    {
      "Action": [
        "oss:GetObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:oss:*:*:bucketName/bucketPath/*"
      ]
    }
  ]
}

Bagaimana cara menggunakan kebijakan akses untuk memberikan akses read/write ke subdirektori bucket tertentu?

Buka untuk melihat contoh kebijakan akses. Ganti bucketName dalam contoh dengan nama bucket Anda dan bucketPath dengan subdirektori bucket yang ditentukan. Untuk informasi selengkapnya, lihat Kebijakan RAM.

{
  "Version": "1",
  "Statement": [
    {
      "Action": "oss:ListObjects",
      "Effect": "Allow",
      "Resource": [
        "acs:oss:*:*:bucketName"
      ],
      "Condition": {
        "StringLike": {
          "oss:Prefix": [
            "bucketPath/*"
          ]
        }
      }
    },
    {
      "Action": [
        "oss:GetObject",
        "oss:PutObject",
        "oss:DeleteObject",
        "oss:AbortMultipartUpload",
        "oss:ListParts"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:oss:*:*:bucketName/bucketPath/*"
      ]
    }
  ]
}

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.