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.
PentingALIBABA_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
Masuk ke Konsol Function Compute. Di panel navigasi di sebelah kiri, klik Functions.
Di bilah navigasi atas, pilih wilayah. Di halaman Functions, klik fungsi yang ingin Anda kelola.
Di halaman Detail Fungsi, klik tab Configurations.
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)
Klik + Add Variable.
Konfigurasikan pasangan kunci-nilai variabel lingkungan.
Variable: Masukkan variabel kustom.
Value: Masukkan nilai variabel.
Editor JSON
Klik JSON Editor.
Di editor kode, masukkan pasangan kunci-nilai dalam format JSON berikut:
{ "key": "value" }Contoh:
{ "BUCKET_NAME": "MY_BUCKET", "TABLE_NAME": "MY_TABLE" }
Verifikasi apakah variabel lingkungan telah dibuat.
Di halaman Detail Fungsi, klik tab Code.
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"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
Serverless Devs telah diinstal. Untuk informasi lebih lanjut, lihat Memulai Cepat.
Serverless Devs telah dikonfigurasi. Untuk informasi lebih lanjut, lihat Konfigurasikan Serverless Devs.
Procedure
Buat direktori kode untuk pengujian. Dalam contoh ini, direktori
testdibuat.Masuk ke direktori
testdan buat fileindex.pydans.yaml.Contoh kode berikut menunjukkan direktori kode.
. ├── code │ └── index.py └── s.yamlFile
index.pyadalah file kode. Untuk contoh kode, lihat Konfigurasikan Variabel Lingkungan di Konsol Function Compute.File
s.yamladalah 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.Jalankan perintah
s deployuntuk 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.