全部产品
Search
文档中心

Function Compute:Konfigurasikan variabel lingkungan

更新时间:Jul 06, 2025

Anda dapat menggunakan variabel lingkungan untuk menyesuaikan perilaku fungsi secara fleksibel di FC tanpa memodifikasi kode. Variabel lingkungan disimpan sebagai pasangan kunci-nilai dalam konfigurasi fungsi. Setiap fungsi memiliki set variabel lingkungannya sendiri. Topik ini memberikan gambaran umum tentang variabel lingkungan dan menjelaskan cara mengonfigurasikannya.

Keamanan

Saat membuat atau memperbarui variabel lingkungan, Function Compute menggunakan Standar Enkripsi Lanjutan 256 (AES 256) untuk mengenkripsi variabel tersebut sebelum penyimpanan. Saat instance fungsi diinisialisasi, variabel lingkungan didekripsi lalu disuntikkan ke lingkungan instance.

Batasan

  • Karakter Set

    • Sebuah kunci harus dimulai dengan huruf dan hanya boleh berisi huruf dan angka.

  • Ukuran

    Total ukuran semua variabel lingkungan tidak boleh melebihi 4 KB.

  • Variabel Lingkungan Sistem

    Untuk mencegah kebingungan sistem, hindari menggunakan variabel lingkungan sistem yang dicadangkan FC_* saat mengonfigurasi variabel lingkungan.

    Berikut adalah beberapa variabel lingkungan sistem yang dapat digunakan:

    • FC_FUNC_CODE_PATH: Direktori penyebaran kode.

    • ALIBABA_CLOUD_ACCESS_KEY_ID: ID AccessKey dari peran.

    • ALIBABA_CLOUD_ACCESS_KEY_SECRET: Rahasia AccessKey dari peran.

    • ALIBABA_CLOUD_SECURITY_TOKEN: Token sementara untuk peran.

    • FC_ACCOUNT_ID: ID pengguna.

    • FC_FUNCTION_HANDLER: Penanganan.

    • FC_FUNCTION_MEMORY_SIZE: Ukuran memori fungsi. Unit: MB.

    • FC_FUNCTION_NAME: Nama fungsi.

    • FC_REGION: Wilayah tempat fungsi berada.

    • FC_CUSTOM_LISTEN_PORT: Port mendengarkan kustom fungsi.

    • FC_INSTANCE_ID: ID instance fungsi.

    • FC_VER_ID: ID versi fungsi untuk runtime bawaan di Debian 10 atau lebih lama.

    • FC_FUNCTION_VERSION: ID versi fungsi untuk runtime bawaan di Debian 11 atau lebih baru.

    Penting

    ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET, dan ALIBABA_CLOUD_SECURITY_TOKEN berisi informasi sensitif terkait kredensial yang tidak boleh diungkapkan kepada pihak ketiga.

Skenario

  • Berbagi Kode Lintas Platform atau Layanan

    Konfigurasi basis kode yang sama mungkin berbeda antara Lingkungan pengujian dan lingkungan produksi. Anda dapat menggunakan variabel lingkungan untuk memilih bucket Object Storage Service (OSS), database, atau tabel yang berbeda untuk menyimpan kode Anda. Ini memungkinkan Anda menerapkan kode ke berbagai platform tanpa modifikasi sebelumnya.

  • Konfigurasikan Pasangan AccessKey

    Anda dapat menggunakan variabel lingkungan untuk mengonfigurasi informasi otentikasi sensitif, seperti pasangan Alibaba Cloud AccessKey Anda atau pasangan nama pengguna-kata sandi untuk koneksi database.

  • Konfigurasikan Variabel Sistem

    Anda dapat mengonfigurasi variabel PATH dan HOME di direktori sistem.

Konfigurasikan variabel lingkungan di Konsol Function Compute

Prerequisites

Pembuatan fungsi telah selesai. Untuk informasi lebih lanjut, lihat Buat Fungsi.

Procedure

  1. Masuk ke Konsol Function Compute. Di panel navigasi di sebelah kiri, klik Functions.

  2. Di bilah navigasi atas, pilih wilayah. Di halaman Functions, klik fungsi yang ingin Anda kelola.

  3. Di halaman Detail Fungsi, klik tab Configurations.

  4. Di panel navigasi di sebelah kiri, klik tab Environment Variables. Pada tab Variabel Lingkungan, klik Modify. Di panel Variabel Lingkungan yang ditampilkan, pilih metode untuk mengonfigurasi variabel, ikuti langkah-langkah berikut, lalu klik Deploy.

    • Editor Formulir (default)

      1. Klik + Add Variable.

      2. Konfigurasikan pasangan kunci-nilai variabel lingkungan.

        • Variable: Masukkan variabel kustom.

        • Value: Masukkan nilai variabel.

    • Editor JSON

      1. Klik JSON Editor.

      2. Di editor kode, masukkan pasangan kunci-nilai dalam format JSON berikut:

        {
            "key": "value"
        }

        Contoh:

        {
            "BUCKET_NAME": "MY_BUCKET",
            "TABLE_NAME": "MY_TABLE"
        }
  5. Verifikasi apakah variabel lingkungan telah dibuat.

    1. Di halaman Detail Fungsi, klik tab Code.

    2. Di editor kode, tulis kode dan kemudian klik Deploy. Setelah kode diterapkan, klik Test Function.

      Kode sampel berikut menunjukkan cara memverifikasi pembuatan variabel lingkungan dengan menggunakan fungsi event Python:

      # -*- coding: utf-8 -*-
      import logging
      import os
      
      def handler(event, context):
          logger = logging.getLogger()
          value = os.environ.get('BUCKET_NAME')
          logger.info('BUCKET_NAME: {}'.format(value))
          value = os.environ.get('TABLE_NAME')
          logger.info('TABLE_NAME: {}'.format(value))
          return "done"
    3. Pada tab Code, klik Log Output untuk melihat log.

      Seperti yang dapat Anda lihat dari log yang dicetak, variabel lingkungan telah dibuat.

Konfigurasikan variabel lingkungan menggunakan Serverless Devs

Prerequisites

Procedure

  1. Buat direktori kode untuk pengujian. Dalam contoh ini, direktori test dibuat.

  2. Masuk ke direktori test dan buat file index.py dan s.yaml.

    Contoh kode berikut menunjukkan direktori kode.

    .
    ├── code
    │   └── index.py
    └── s.yaml

    File index.py adalah file kode. Untuk contoh kode, lihat Konfigurasikan Variabel Lingkungan di Konsol Function Compute.

    File s.yaml adalah file konfigurasi fungsi. Contoh:

    edition: 3.0.0
    name: hello-world-app
    # access menentukan informasi kunci yang diperlukan oleh aplikasi saat ini.
    # Untuk informasi lebih lanjut tentang cara mengonfigurasi kunci, kunjungi https://www.serverless-devs.com/serverless-devs/command/config.
    # Untuk informasi lebih lanjut tentang urutan penggunaan kunci, kunjungi https://www.serverless-devs.com/serverless-devs/tool#.
    access: "default"
    
    vars: # Variabel global.
      region: "cn-hangzhou"
    
    resources:
      hello_world:
        # Jika Anda ingin melakukan operasi hanya pada hello_world, Anda dapat menambahkan hello_world ke baris perintah. Contoh:
        # Bangun hanya untuk hello_world: s hello_world build
        # Jika Anda menjalankan perintah s build tanpa menambahkan hello_world, Serverless Devs akan melakukan operasi pembuatan pada semua modul bisnis di level yang sama dengan hello_world di file YAML saat ini, seperti modul next_function di komentar berikut.
        component: fc3 # Nama komponen. Serverless Devs dapat dianggap sebagai konsol game dan tidak memiliki kemampuan bisnis spesifik tanpa komponen. Namun, seperti konsol game yang dapat ditingkatkan dengan kartu game yang berbeda, Serverless Devs dapat diperluas dengan berbagai komponen. Setiap komponen seperti kartu game, memungkinkan implementasi kemampuan bisnis yang berbeda. Dengan menggabungkan komponen yang berbeda, Anda dapat membuka berbagai kemampuan bisnis, mirip dengan bagaimana konsol game dapat memainkan game yang berbeda dengan kartu yang berbeda.
        # actions:       # Logika eksekusi khusus. Untuk informasi lebih lanjut tentang actions, kunjungi https://docs.serverless-devs.com/serverless-devs/yaml#%E8%A1%8C%E4%B8%BA%E6%8F%8F%E8%BF%B0actions.
        props:
          region: ${vars.region}              # Untuk informasi lebih lanjut tentang cara menggunakan variabel, kunjungi https://docs.serverless-devs.com/serverless-devs/yaml#%E5%8F%98%E9%87%8F%E8%B5%8B%E5%80%BC.
          functionName: envdemo            # Deklarasikan fungsi bernama envdemo.
          description: 'hello world by serverless devs'
          runtime: python3                # Konfigurasikan runtime untuk fungsi.
          code: ./code
          handler: index.handler              # Konfigurasikan penanganan untuk fungsi.
          memorySize: 128
          timeout: 30
          environmentVariables:     # Konfigurasikan variabel lingkungan berikut untuk fungsi:
              BUCKET_NAME: MY_BUCKET
              TABLE_NAME: MY_TABLE
          codeUri: ./               # Terapkan fungsi di direktori saat ini. Saat Serverless Devs menerapkan fungsi, ia mengemas dan mengunggah direktori saat ini.
  3. Jalankan perintah s deploy untuk menerapkan proyek.

    Setelah perintah dijalankan, Anda dapat masuk ke Konsol Function Compute untuk melihat fungsi yang dibuat dan variabel lingkungan yang dikonfigurasikan untuk fungsi tersebut.

Konfigurasikan variabel lingkungan menggunakan SDK

Dalam contoh ini, SDK untuk Python digunakan. Parameter environmentVariables menentukan variabel lingkungan. Nilai parameter ini disimpan dalam bentuk kamus. Potongan kode berikut menunjukkan cara membuat, memperbarui, dan mendapatkan variabel lingkungan:

  • Buat Variabel Lingkungan

    # coding: utf-8
    import fc2
    import os
    
    client = fc2.Client(
        endpoint='your endpoint', # Titik akhir.
        # Kami sarankan Anda menghindari menyimpan ID AccessKey dan rahasia AccessKey di kode proyek Anda. Jika informasi sensitif ini bocor, keamanan semua sumber daya di akun Anda bisa terganggu.
        # Dalam contoh ini, pasangan AccessKey disimpan dalam variabel lingkungan untuk mengimplementasikan otentikasi identitas.
        # Sebelum Anda menjalankan kode sampel, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET di lingkungan lokal Anda.
        # Di runtime Function Compute, variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi secara otomatis setelah Anda mengonfigurasi izin eksekusi.
        accessKeyID=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), # ID AccessKey. Dibuat di Konsol Resource Access Management (RAM) dan digunakan untuk otentikasi identitas.
        accessKeySecret=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET') # Rahasia AccessKey. Dibuat di Konsol RAM dan digunakan untuk otentikasi identitas.
    
    client.create_service('test')
    
    client.create_function(
        'test', 'test_env', 'python3',  'main.handler',
        codeDir='/path/to/code/', environmentVariables={'testKey': 'testValue'})
    
    #test: nama layanan.
    #test_env: nama fungsi.
    #python3: runtime.
    #main.handler: penanganan.
    #codeDir: direktori kode.
    #environmentVariables: variabel lingkungan yang ingin Anda gunakan.
    
    res = client.get_function('test', 'test_env')
    
    print(res.data)
      
  • Perbarui Variabel Lingkungan

    client.update_function(
        'test', 'test_env', 'python3',  'main.handler',
        codeDir='/path/to/code/', environmentVariables={'newKey': 'newValue'})
    res = client.get_function('test', 'test_env')
    print(res.data)           
  • Dapatkan Variabel Lingkungan

    resp = client.get_function('test', 'test_env')
    env = func['environmentVariables']

Gunakan variabel lingkungan dalam kode

Untuk informasi lebih lanjut tentang cara menggunakan variabel lingkungan dalam kode, lihat Gunakan Variabel Lingkungan dalam Kode.

Tanya Jawab Umum

Bisakah saya mengonfigurasi variabel lingkungan yang berbeda untuk versi fungsi yang berbeda?

Ya. Misalnya, setelah Anda mengonfigurasi variabel lingkungan untuk versi LATEST suatu fungsi dan menerbitkan versi tersebut, Anda masih dapat memodifikasi variabel lingkungan di versi LATEST. Akibatnya, variabel lingkungan antara versi LATEST dan versi yang diterbitkan berbeda.

Apa yang harus saya lakukan jika saya lebih memilih untuk tidak menampilkan nilai variabel lingkungan dalam teks biasa? Bagaimana cara mengenkripsi data sensitif saat saya mengonfigurasi variabel lingkungan?

Anda dapat mengenkripsi variabel lingkungan Anda lalu menyimpannya di Key Management Service. Sebelum mengeksekusi fungsi, Anda dapat memanggil API KMS untuk mendekripsi variabel lingkungan ini dan mengonfigurasikannya di runtime fungsi. Untuk informasi lebih lanjut, lihat Apa itu Key Management Service?