Anda dapat menggunakan variabel lingkungan untuk menyesuaikan perilaku fungsi secara fleksibel di Function Compute tanpa perlu memodifikasi kode. Variabel lingkungan disimpan sebagai pasangan kunci-nilai dalam konfigurasi fungsi. Fungsi yang berbeda memiliki variabel lingkungan yang berbeda. Topik ini menjelaskan informasi dasar tentang variabel lingkungan, cara mengonfigurasinya, serta cara menggunakannya dalam kode.
Keamanan
Saat Anda membuat atau memperbarui variabel lingkungan, Function Compute mengenkripsi variabel tersebut menggunakan Standar Enkripsi Lanjutan 256 (AES 256) sebelum disimpan. Saat instance fungsi diinisialisasi, variabel lingkungan didekripsi dan disuntikkan ke dalam lingkungan instance fungsi.
Batasan
Aturan untuk set karakter:
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, saat mengonfigurasi variabel lingkungan, Anda tidak dapat menggunakan variabel lingkungan sistem yang dicadangkan oleh Function Compute, termasuk FC_*, accessKeyID, accessKeySecret, securityToken, dan topic.
Anda dapat menggunakan variabel lingkungan sistem berikut:
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 fungsi.
FC_FUNCTION_MEMORY_SIZE: Ukuran memori fungsi. Satuan: MB.
FC_FUNCTION_NAME: Nama fungsi.
FC_REGION: Wilayah tempat fungsi berada.
FC_SERVICE_NAME: Nama layanan tempat fungsi tersebut milik.
FC_CUSTOM_LISTEN_PORT: Port mendengarkan kustom fungsi.
FC_INSTANCE_ID: ID instance fungsi.
FC_QUALIFIER: Alias layanan tempat fungsi tersebut milik. Nilai default: LATEST.
PentingVariabel lingkungan sistem, termasuk accessKeyID, accessKeySecret, securityToken, ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET, dan ALIBABA_CLOUD_SECURITY_TOKEN, adalah informasi sensitif sementara. Jangan mengungkapkan variabel-variabel ini kepada pihak ketiga.
Skenario
Berbagi kode lintas platform atau layanan:
Konfigurasi kode yang sama mungkin bervariasi antara lingkungan pengujian dan lingkungan produksi. Anda dapat menggunakan variabel lingkungan untuk memilih bucket Object Storage Service (OSS), database, atau tabel yang berbeda. Dengan cara ini, Anda dapat menyebarkan kode fungsi ke platform yang berbeda tanpa modifikasi apa pun.
Mengonfigurasi pasangan AccessKey:
Anda dapat menggunakan variabel lingkungan untuk mengonfigurasi informasi otentikasi sensitif keamanan, seperti pasangan Alibaba Cloud AccessKey Anda, serta nama pengguna dan kata sandi yang digunakan untuk terhubung ke database.
Mengonfigurasi variabel sistem:
Anda dapat mengonfigurasi variabel PATH dan HOME di direktori sistem.
Mengonfigurasi variabel lingkungan menggunakan konsol Function Compute
Prerequisites
Fungsi telah dibuat. Untuk informasi lebih lanjut, lihat bagian "Buat fungsi" pada topik Kelola fungsi.
Procedure
Masuk ke Konsol Function Compute. Di panel navigasi kiri, klik Services & Functions.
Di bilah navigasi atas, pilih wilayah. Pada halaman Services, klik layanan yang diinginkan.
Pada halaman Functions, temukan fungsi yang ingin Anda ubah dan klik Configure di kolom Actions.
Di bagian Environment Variables halaman detail fungsi, pilih metode untuk mengonfigurasi variabel lingkungan, lalu klik Save.
Editor Formulir (default):
Klik + Add Variable.
Konfigurasikan pasangan kunci-nilai variabel lingkungan.
Variable: Masukkan variabel kustom.
Value: Masukkan nilai variabel.
Contoh kode:

Editor JSON:
Klik JSON Editor.
Di editor kode, masukkan pasangan kunci-nilai dalam format JSON berikut:
{ "key": "value" }Contoh kode:
{ "BUCKET_NAME": "MY_BUCKET", "TABLE_NAME": "MY_TABLE" }
Verifikasi apakah variabel lingkungan telah dibuat.
Pada halaman detail fungsi, klik tab Code.
Di editor kode, tulis kode fungsi dan klik Save and Deploy. Setelah fungsi diterapkan, klik Test Function.
Contoh kode berikut memberikan contoh cara mengotentikasi variabel lingkungan menggunakan fungsi acara 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"Pada tab Code, Anda dapat melihat log.
Sebagaimana dapat dilihat dari log yang dicetak, variabel lingkungan telah dibuat.
Mengonfigurasi variabel lingkungan menggunakan Serverless Devs
Prerequisites
Procedure
Buat direktori kode untuk pengujian. Sebagai contoh, direktori tersebut bernama
test.Masuk ke direktori
testdan buat file bernamaindex.pyberdasarkan kode di bagian "Mengonfigurasi variabel lingkungan menggunakan Konsol Function Compute".Buat file
s.yaml.Isi file:
edition: 1.0.0 name: transform_fun access: default vars: region: cn-shenzhen services: fc-Demo-envdemo: component: devsapp/fc props: region: ${vars.region} service: name: Demo # Deklarasikan layanan bernama Demo. internetAccess: true function: name: envdemo # Deklarasikan fungsi bernama envdemo di layanan Demo. handler: index.handler # Konfigurasikan penanganan untuk fungsi. runtime: python3 # Tentukan waktu proses untuk fungsi. 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, Serverless Devs mengemas dan mengunggah direktori saat ini.Jalankan perintah
s deployuntuk menerapkan proyek.Setelah Anda menjalankan perintah s deploy, Anda dapat masuk ke Function Compute console untuk melihat layanan dan fungsi yang Anda buat, serta variabel lingkungan yang Anda konfigurasikan untuk fungsi tersebut.
Mengonfigurasi variabel lingkungan menggunakan SDK
Dalam contoh ini, SDK untuk Python digunakan. Parameter environmentVariables menentukan variabel lingkungan. Nilai parameter ini disimpan dalam bentuk kamus. Contoh 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. # Pasangan AccessKey dari akun Alibaba Cloud memiliki izin untuk semua operasi API. Kami merekomendasikan Anda menggunakan Pengguna Resource Access Management (RAM) untuk memanggil operasi API atau melakukan O&M rutin. # Kami merekomendasikan Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey di kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya di akun Anda mungkin terganggu. Dalam contoh ini, pasangan AccessKey disimpan dalam variabel lingkungan untuk mengimplementasikan otentikasi identitas. # Konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET di lingkungan lokal Anda sebelum menjalankan kode contoh. # Di waktu proses Function Compute, variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasikan secara otomatis setelah Anda mengonfigurasi izin eksekusi. accessKeyID=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), # ID AccessKey, yang dibuat di konsol RAM dan digunakan untuk otentikasi identitas. accessKeySecret=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET') # Rahasia AccessKey, yang 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: waktu proses. #main.handler: penanganan. #codeDir: direktori kode. #environmentVariables: variabel lingkungan yang ingin Anda konfigurasikan. 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
Asumsikan bahwa Anda mengonfigurasi {"key":"val"} sebagai variabel lingkungan. Kode berikut menunjukkan bagaimana setiap waktu proses membaca dan mencetak nilai variabel tersebut.
var value = process.env.key
console.log(value)import os
value = os.environ.get('key')
print(value)System.out.println("value: "+ System.getenv("key"));$value = getenv('key');Console.WriteLine(Environment.GetEnvironmentVariable("key"));