Anda dapat menggunakan variabel lingkungan untuk menyesuaikan perilaku fungsi FC tanpa mengubah kodenya. Variabel lingkungan adalah pasangan kunci-nilai berupa string yang disimpan dalam konfigurasi fungsi. Setiap fungsi memiliki kumpulan variabel lingkungan sendiri. Topik ini menjelaskan dasar-dasar variabel lingkungan dan cara mengonfigurasikannya.
Keamanan
Saat Anda membuat atau memperbarui variabel lingkungan, Function Compute mengenkripsi data tersebut saat disimpan menggunakan Advanced Encryption Standard 256 (AES-256). Saat instans fungsi diinisialisasi, variabel tersebut didekripsi dan dimasukkan ke dalam lingkungan instans.
Batasan
-
Aturan set karakter
-
Kunci harus diawali dengan huruf dan hanya boleh berisi huruf, angka, serta garis bawah (_).
-
-
Batas ukuran
Total ukuran semua variabel lingkungan tidak boleh melebihi 4 KB.
-
Variabel lingkungan sistem yang dicadangkan
Untuk mencegah konflik sistem, Anda tidak dapat menggunakan variabel lingkungan dengan awalan yang dicadangkan FC_*.
Function Compute mendukung variabel lingkungan sistem berikut:
-
FC_FUNC_CODE_PATH: Direktori penerapan kode.
-
ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET, dan ALIBABA_CLOUD_SECURITY_TOKEN: Kredensial temporary yang diperoleh dari role eksekusi fungsi, termasuk ID AccessKey, Rahasia AccessKey, dan token temporary.
-
FC_ACCOUNT_ID: ID pengguna.
-
FC_FUNCTION_HANDLER: Penanganan fungsi.
-
FC_FUNCTION_MEMORY_SIZE: Ukuran memori yang dikonfigurasi untuk fungsi, dalam MB.
-
FC_FUNCTION_NAME: Nama fungsi.
-
FC_REGION: Wilayah tempat fungsi berada.
-
FC_CUSTOM_LISTEN_PORT: Port listening kustom fungsi.
-
FC_INSTANCE_ID: ID instans fungsi.
-
FC_VER_ID: ID versi fungsi. Variabel ini tersedia untuk runtime bawaan pada Debian 10 dan sebelumnya.
-
FC_FUNCTION_VERSION: ID versi fungsi. Variabel ini tersedia untuk runtime bawaan pada Debian 11 dan seterusnya.
-
Kasus penggunaan
-
Berbagi kode lintas platform atau layanan
Anda dapat menggunakan variabel lingkungan untuk mengelola konfigurasi berbeda antara lingkungan pengujian dan produksi, seperti menentukan bucket Object Storage Service (OSS), database, atau tabel yang berbeda. Hal ini memungkinkan Anda menerapkan basis kode yang sama di berbagai platform tanpa modifikasi.
-
Mengonfigurasi kredensial
Anda dapat mengatur kredensial koneksi database, AccessKey Alibaba Cloud Anda, atau informasi otentikasi sensitif lainnya menggunakan variabel lingkungan.
-
Mengonfigurasi variabel sistem
Anda dapat menggunakan pustaka sistem secara lebih fleksibel dengan mengonfigurasi direktori seperti PATH dan HOME.
Konfigurasikan variabel lingkungan
Konsol
Prasyarat
Fungsi telah dibuat. Untuk informasi selengkapnya, lihat Buat fungsi.
Prosedur
-
Masuk ke Konsol Function Compute. Di panel navigasi kiri, pilih .
-
Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi yang dituju.
-
Pada halaman detail fungsi, klik tab Configuration, lalu di bagian Advanced Settings, klik Modify.
-
Pada panel Advanced Settings, di bawah Environment Variables, konfigurasikan variabel menggunakan salah satu metode berikut, lalu klik Deploy.
-
Gunakan editor formulir
-
Klik + Add Variable.
-
Konfigurasikan pasangan kunci-nilai untuk variabel lingkungan:
-
Variable: Masukkan kunci kustom.
-
Value: Masukkan nilai kustom.
-
-
-
Gunakan editor JSON
-
Klik Use JSON format to edit.
-
Pada kotak teks, masukkan pasangan kunci-nilai dalam format JSON, seperti pada contoh berikut:
{ "key": "value" }Contoh:
{ "BUCKET_NAME": "MY_BUCKET", "TABLE_NAME": "MY_TABLE" }
-
-
-
Verifikasi bahwa variabel lingkungan telah berlaku.
-
Pada halaman detail fungsi, klik tab Code.
-
Di editor kode, tulis kode Anda, klik Deploy. Setelah penerapan berhasil, klik Test Function.
Kode contoh berikut untuk fungsi event Python menunjukkan cara memverifikasi variabel lingkungan:
# -*- 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, lihat Log Output. Setelah fungsi dieksekusi dengan sukses, variabel lingkungan yang dikonfigurasi akan muncul di log.
-
Serverless Devs
Prasyarat
Serverless Devs telah diinstal dan dikonfigurasi. Untuk informasi selengkapnya, lihat Quick start.
Prosedur
-
Buat direktori kode untuk pengujian, misalnya
test. -
Masuk ke direktori
testdan buat fileindex.pyserta files.yaml.Struktur direktori kode sebagai berikut:
. ├── code │ └── index.py └── s.yamlFile
index.pyberisi kode fungsi Anda. Untuk contoh kodenya, lihat contoh pada bagian Konsol.File
s.yamladalah file konfigurasi fungsi. Berikut contohnya:edition: 3.0.0 name: hello-world-app # access: menentukan informasi kredensial yang diperlukan untuk aplikasi. # Untuk informasi lebih lanjut tentang cara mengonfigurasi kredensial, lihat https://www.serverless-devs.com/serverless-devs/command/config # Untuk informasi lebih lanjut tentang prioritas kredensial, lihat https://www.serverless-devs.com/serverless-devs/tool#credential-priority-and-specifications access: "default" vars: # Variabel global region: "cn-hangzhou" resources: hello_world: # Untuk melakukan operasi hanya pada layanan tertentu seperti hello_world, tentukan namanya dalam perintah. Contoh: # Build hanya untuk layanan hello_world: s hello_world build # Jika Anda menjalankan perintah s build tanpa menentukan layanan, Serverless Devs akan melakukan operasi build pada semua layanan yang berada pada level yang sama dengan hello_world dalam file YAML. component: fc3 # Nama komponen. Serverless Devs menggunakan komponen untuk memperluas kemampuannya. Komponen ini mengaktifkan fitur Function Compute. # actions: # Logika eksekusi kustom. Untuk informasi lebih lanjut, lihat https://docs.serverless-devs.com/serverless-devs/yaml#actions. props: region: ${vars.region} # Untuk informasi lebih lanjut tentang cara menggunakan variabel, lihat https://docs.serverless-devs.com/serverless-devs/yaml#variable-assignment. functionName: envdemo # Mendeklarasikan fungsi bernama envdemo. description: 'hello world by serverless devs' runtime: python3 # Menentukan runtime fungsi. code: ./code handler: index.handler # Menentukan penanganan fungsi. memorySize: 128 timeout: 30 environmentVariables: # Mengonfigurasi dua variabel lingkungan untuk fungsi. BUCKET_NAME: MY_BUCKET TABLE_NAME: MY_TABLE codeUri: ./ # Menerapkan fungsi dari direktori saat ini "./". Selama penerapan, Serverless Devs akan memaketkan dan mengunggah direktori saat ini. -
Jalankan perintah
s deployuntuk menerapkan proyek.Setelah penerapan berhasil, Anda dapat masuk ke Konsol Function Compute untuk melihat fungsi yang telah dibuat beserta variabel lingkungannya.
SDK
Contoh berikut menggunakan Python SDK. Parameter environmentVariables, yang menerima dictionary, menentukan variabel lingkungan. Kode contoh menunjukkan cara membuat, memperbarui, dan mengambilnya.
-
Buat variabel lingkungan
# coding: utf-8 import fc2 import os client = fc2.Client( endpoint='your endpoint', # Titik akhir. # Kami menyarankan agar Anda tidak menyimpan ID AccessKey dan Rahasia AccessKey di dalam kode Anda. # Kebocoran informasi sensitif ini dapat membahayakan keamanan sumber daya Anda. # Contoh ini menggunakan variabel lingkungan untuk otentikasi. # Sebelum menjalankan kode ini, atur variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET secara lokal. accessKeyID=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), # ID AccessKey Anda, digunakan untuk otentikasi. Anda dapat membuat dan mengelolanya di Konsol RAM. accessKeySecret=os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET') # Rahasia AccessKey Anda, digunakan untuk otentikasi. Anda dapat membuat dan mengelolanya di Konsol RAM. ) client.create_service('test') client.create_function( 'test', # Nama layanan. 'test_env', # Nama fungsi. 'python3', # Runtime. 'main.handler', # Penanganan. codeDir='/path/to/code/', # Direktori kode. environmentVariables={'testKey': 'testValue'} # Variabel lingkungan yang akan dikonfigurasi. ) 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) -
Ambil variabel lingkungan
resp = client.get_function('test', 'test_env') env = func['environmentVariables']
Gunakan variabel lingkungan dalam kode Anda
Dengan asumsi Anda telah mengonfigurasi variabel lingkungan {"key":"val"}, contoh berikut menunjukkan cara membaca nilainya di berbagai runtime.
var value = process.env.key
console.log(value)import os
value = os.environ.get('key')
print(value)$value = getenv('key');System.out.println("value: "+ System.getenv("key"));string value = Environment.GetEnvironmentVariable("key");
Console.WriteLine("value: {0}", value);var value = os.Getenv("key")
fmt.Printf("value: %s\n", value)