Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengambil data konfigurasi menggunakan ekstensi AWS AppConfig Agen Lambda
AWS Lambda Ekstensi adalah proses pendamping yang menambah kemampuan fungsi Lambda. Ekstensi dapat dimulai sebelum fungsi dipanggil, dijalankan secara paralel dengan fungsi, dan terus berjalan setelah pemanggilan fungsi diproses. Intinya, ekstensi Lambda seperti klien yang berjalan secara paralel dengan pemanggilan Lambda. Klien paralel ini dapat berinteraksi dengan fungsi Anda kapan saja selama siklus hidupnya.
Jika Anda menggunakan flag AWS AppConfig fitur atau data konfigurasi dinamis lainnya dalam fungsi Lambda, maka sebaiknya Anda menambahkan ekstensi AWS AppConfig Agen Lambda sebagai lapisan ke fungsi Lambda Anda. Ini membuat flag fitur panggilan lebih sederhana, dan ekstensi itu sendiri mencakup praktik terbaik yang menyederhanakan penggunaan AWS AppConfig sekaligus mengurangi biaya. Pengurangan biaya dihasilkan dari lebih sedikit panggilan API ke AWS AppConfig layanan dan waktu pemrosesan fungsi Lambda yang lebih pendek. Untuk informasi selengkapnya tentang ekstensi Lambda, lihat Ekstensi Lambda di Panduan Pengembang.AWS Lambda
catatan
AWS AppConfig Penetapan harga
Topik ini mencakup informasi tentang ekstensi AWS AppConfig Agen Lambda dan prosedur cara mengonfigurasi ekstensi agar berfungsi dengan fungsi Lambda Anda.
Cara kerjanya
Jika Anda menggunakan AWS AppConfig untuk mengelola konfigurasi untuk fungsi Lambda tanpa ekstensi Lambda, maka Anda harus mengonfigurasi fungsi Lambda Anda untuk menerima pembaruan konfigurasi dengan mengintegrasikan dengan tindakan API dan. StartConfigurationSessionGetLatestConfiguration
Mengintegrasikan ekstensi AWS AppConfig Agen Lambda dengan fungsi Lambda Anda menyederhanakan proses ini. Ekstensi menangani panggilan AWS AppConfig layanan, mengelola cache lokal dari data yang diambil, melacak token konfigurasi yang diperlukan untuk panggilan layanan berikutnya, dan secara berkala memeriksa pembaruan konfigurasi di latar belakang. Diagram berikut menunjukkan cara kerjanya.
![Diagram tentang cara kerja ekstensi AWS AppConfig Agen Lambda](images/AppConfigLambdaExtension.png)
-
Anda mengonfigurasi ekstensi AWS AppConfig Agen Lambda sebagai lapisan fungsi Lambda Anda.
-
Untuk mengakses data konfigurasinya, fungsi Anda memanggil AWS AppConfig ekstensi pada titik akhir HTTP yang sedang
localhost:2772
berjalan. -
Ekstensi mempertahankan cache lokal dari data konfigurasi. Jika data tidak ada dalam cache, ekstensi memanggil AWS AppConfig untuk mendapatkan data konfigurasi.
-
Setelah menerima konfigurasi dari layanan, ekstensi menyimpannya di cache lokal dan meneruskannya ke fungsi Lambda.
-
AWS AppConfig Ekstensi Agen Lambda secara berkala memeriksa pembaruan data konfigurasi Anda di latar belakang. Setiap kali fungsi Lambda Anda dipanggil, ekstensi memeriksa waktu yang telah berlalu sejak mengambil konfigurasi. Jika waktu yang berlalu lebih besar dari interval polling yang dikonfigurasi, ekstensi akan memanggil AWS AppConfig untuk memeriksa data yang baru digunakan, memperbarui cache lokal jika ada perubahan, dan mengatur ulang waktu yang telah berlalu.
catatan
-
Lambda membuat instance terpisah yang sesuai dengan tingkat konkurensi yang dibutuhkan fungsi Anda. Setiap instance diisolasi dan memelihara cache lokal sendiri dari data konfigurasi Anda. Untuk informasi selengkapnya tentang instans dan konkurensi Lambda, lihat Mengelola konkurensi untuk fungsi Lambda.
-
Jumlah waktu yang diperlukan agar perubahan konfigurasi muncul dalam fungsi Lambda, setelah Anda menerapkan konfigurasi yang diperbarui AWS AppConfig, bergantung pada strategi penerapan yang Anda gunakan untuk penerapan dan interval polling yang Anda konfigurasikan untuk ekstensi.
Sebelum Anda mulai
Sebelum Anda mengaktifkan ekstensi AWS AppConfig Agen Lambda, lakukan hal berikut:
-
Atur konfigurasi dalam fungsi Lambda Anda sehingga Anda dapat mengeksternalisasikannya. AWS AppConfig
-
Buat AWS AppConfig artefak dan data konfigurasi, termasuk flag fitur atau data konfigurasi bentuk bebas. Untuk informasi selengkapnya, lihat Membuat flag fitur dan data konfigurasi formulir gratis di AWS AppConfig.
-
Tambahkan
appconfig:StartConfigurationSession
danappconfig:GetLatestConfiguration
ke kebijakan AWS Identity and Access Management (IAM) yang digunakan oleh peran eksekusi fungsi Lambda. Untuk informasi selengkapnya, lihat peran AWS Lambda eksekusi di Panduan AWS Lambda Pengembang. Untuk informasi selengkapnya tentang AWS AppConfig izin, lihat Tindakan, sumber daya, dan kunci kondisi AWS AppConfig di Referensi Otorisasi Layanan.
Menambahkan ekstensi AWS AppConfig Agen Lambda
Untuk menggunakan ekstensi AWS AppConfig Agen Lambda, Anda perlu menambahkan ekstensi ke Lambda Anda. Ini dapat dilakukan dengan menambahkan ekstensi AWS AppConfig Agen Lambda ke fungsi Lambda Anda sebagai lapisan atau dengan mengaktifkan ekstensi pada fungsi Lambda sebagai gambar wadah.
catatan
AWS AppConfig Ekstensi ini agnostik runtime dan mendukung semua runtime.
Menambahkan ekstensi AWS AppConfig Agen Lambda dengan menggunakan layer dan ARN
Untuk menggunakan ekstensi AWS AppConfig Agen Lambda, Anda menambahkan ekstensi ke fungsi Lambda Anda sebagai lapisan. Untuk informasi tentang cara menambahkan lapisan ke fungsi Anda, lihat Mengonfigurasi ekstensi di Panduan AWS Lambda Pengembang. Nama ekstensi di AWS Lambda konsol adalah AWS- AppConfig -Extension. Perhatikan juga bahwa ketika Anda menambahkan ekstensi sebagai lapisan ke Lambda Anda, Anda harus menentukan Nama Sumber Daya Amazon (ARN). Pilih ARN dari salah satu daftar berikut yang sesuai dengan platform dan Wilayah AWS tempat Anda membuat Lambda.
Jika Anda ingin menguji ekstensi sebelum menambahkannya ke fungsi Anda, Anda dapat memverifikasi bahwa itu berfungsi dengan menggunakan contoh kode berikut.
import urllib.request def lambda_handler(event, context): url = f'http://localhost:2772/applications/
application_name
/environments/environment_name
/configurations/configuration_name
' config = urllib.request.urlopen(url).read() return config
Untuk mengujinya, buat fungsi Lambda baru untuk Python, tambahkan ekstensi, lalu jalankan fungsi Lambda. Setelah Anda menjalankan fungsi Lambda, fungsi AWS AppConfig Lambda mengembalikan konfigurasi yang Anda tentukan untuk jalur http://localhost:2772. Untuk informasi tentang membuat fungsi Lambda, lihat Membuat fungsi Lambda dengan konsol di Panduan Pengembang.AWS Lambda
Untuk menambahkan ekstensi AWS AppConfig Agen Lambda sebagai gambar kontainer, lihat. Menggunakan gambar kontainer untuk menambahkan ekstensi AWS AppConfig Agen Lambda
Mengkonfigurasi ekstensi AWS AppConfig Agen Lambda
Anda dapat mengonfigurasi ekstensi dengan mengubah variabel AWS Lambda lingkungan berikut. Untuk informasi selengkapnya, lihat Menggunakan variabel AWS Lambda lingkungan di Panduan AWS Lambda Pengembang.
Prefetching data konfigurasi
Variabel lingkungan AWS_APPCONFIG_EXTENSION_PREFETCH_LIST
dapat meningkatkan waktu start-up fungsi Anda. Ketika ekstensi AWS AppConfig Agen Lambda diinisialisasi, ia mengambil konfigurasi yang ditentukan sebelum AWS AppConfig Lambda mulai menginisialisasi fungsi Anda dan memanggil handler Anda. Dalam beberapa kasus, data konfigurasi sudah tersedia di cache lokal sebelum fungsi Anda memintanya.
Untuk menggunakan kemampuan prefetch, atur nilai variabel lingkungan ke jalur yang sesuai dengan data konfigurasi Anda. Misalnya, jika konfigurasi Anda sesuai dengan aplikasi, lingkungan, dan profil konfigurasi masing-masing bernama “my_application”, “my_environment”, dan “my_configuration_data”, jalurnya adalah. /applications/my_application/environments/my_environment/configurations/my_configuration_data
Anda dapat menentukan beberapa item konfigurasi dengan mencantumkannya sebagai daftar yang dipisahkan koma (Jika Anda memiliki nama sumber daya yang menyertakan koma, gunakan nilai ID sumber daya alih-alih namanya).
Mengakses data konfigurasi dari akun lain
Ekstensi AWS AppConfig Agen Lambda dapat mengambil data konfigurasi dari akun lain dengan menentukan peran IAM yang memberikan izin ke data. Untuk mengaturnya, ikuti langkah-langkah berikut:
-
Di akun tempat AWS AppConfig digunakan untuk mengelola data konfigurasi, buat peran dengan kebijakan kepercayaan yang memberi akun yang menjalankan fungsi Lambda akses ke
appconfig:StartConfigurationSession
appconfig:GetLatestConfiguration
dan tindakan, bersama dengan ARN paral atau lengkap yang sesuai dengan sumber daya konfigurasi. AWS AppConfig -
Di akun yang menjalankan fungsi Lambda, tambahkan variabel
AWS_APPCONFIG_EXTENSION_ROLE_ARN
lingkungan ke fungsi Lambda dengan ARN peran yang dibuat pada langkah 1. -
(Opsional) Jika diperlukan, ID eksternal dapat ditentukan menggunakan variabel
AWS_APPCONFIG_EXTENSION_ROLE_EXTERNAL_ID
lingkungan. Demikian pula, nama sesi dapat dikonfigurasi menggunakan variabelAWS_APPCONFIG_EXTENSION_ROLE_SESSION_NAME
lingkungan.
catatan
Perhatikan informasi berikut.
-
Ekstensi AWS AppConfig Agen Lambda hanya dapat mengambil data dari satu akun. Jika Anda menentukan peran IAM, ekstensi tidak akan dapat mengambil data konfigurasi dari akun tempat fungsi Lambda berjalan.
-
AWS Lambda mencatat informasi tentang ekstensi AWS AppConfig Agen Lambda dan fungsi Lambda dengan menggunakan Amazon Logs. CloudWatch
Variabel lingkungan | Detail | Nilai default |
---|---|---|
|
Variabel lingkungan ini menentukan port di mana server HTTP lokal yang menghosting ekstensi berjalan. |
2772 |
|
Variabel lingkungan ini menentukan log AWS AppConfig khusus ekstensi mana yang dikirim ke Amazon CloudWatch Logs untuk suatu fungsi. Nilai yang valid dan tidak peka huruf besar/kecil adalah: |
|
|
Variabel lingkungan ini mengonfigurasi jumlah maksimum koneksi yang digunakan ekstensi untuk mengambil konfigurasi dari. AWS AppConfig |
3 |
|
Variabel lingkungan ini mengontrol seberapa sering ekstensi melakukan polling AWS AppConfig untuk konfigurasi yang diperbarui dalam hitungan detik. |
45 |
|
Variabel lingkungan ini mengontrol jumlah waktu maksimum, dalam milidetik, ekstensi menunggu respons dari AWS AppConfig saat menyegarkan data dalam cache. Jika AWS AppConfig tidak merespons dalam jumlah waktu yang ditentukan, ekstensi melewatkan interval polling ini dan mengembalikan data cache yang diperbarui sebelumnya. |
3000 |
|
Variabel lingkungan ini menentukan data konfigurasi yang ekstensi mulai mengambil sebelum fungsi diinisialisasi dan handler berjalan. Ini dapat mengurangi waktu mulai dingin fungsi secara signifikan. |
Tidak ada |
AWS_APPCONFIG_EXTENSION_PROXY_HEADERS |
Variabel lingkungan ini menentukan header yang diperlukan oleh proxy yang direferensikan dalam variabel lingkungan. AWS_APPCONFIG_EXTENSION_PROXY_URL Nilainya adalah daftar header yang dipisahkan koma. Setiap header menggunakan formulir berikut:
|
Tidak ada |
AWS_APPCONFIG_EXTENSION_PROXY_URL |
Variabel lingkungan ini menentukan URL proxy yang akan digunakan untuk koneksi dari AWS AppConfig ekstensi ke Layanan AWS. HTTPS dan HTTP URL didukung. |
Tidak ada |
AWS_APPCONFIG_EXTENSION_ROLE_ARN |
Variabel lingkungan ini menentukan peran IAM ARN sesuai dengan peran yang harus diasumsikan oleh AWS AppConfig ekstensi untuk mengambil konfigurasi. | Tidak ada |
AWS_APPCONFIG_EXTENSION_ROLE_EXTERNAL_ID |
Variabel lingkungan ini menentukan id eksternal untuk digunakan dalam hubungannya dengan peran ARN yang diasumsikan. | Tidak ada |
AWS_APPCONFIG_EXTENSION_ROLE_SESSION_NAME |
Variabel lingkungan ini menentukan nama sesi yang akan dikaitkan dengan kredensyal untuk peran IAM yang diasumsikan. | Tidak ada |
AWS_APPCONFIG_EXTENSION_SERVICE_REGION |
Variabel lingkungan ini menentukan Wilayah alternatif yang harus digunakan ekstensi untuk memanggil AWS AppConfig layanan. Saat tidak ditentukan, ekstensi menggunakan titik akhir di Wilayah saat ini. | Tidak ada |
|
Variabel lingkungan ini mengonfigurasi AWS AppConfig Agen untuk memanfaatkan fitur per-konfigurasi tambahan seperti pengambilan multi-akun dan menyimpan konfigurasi ke disk. Anda dapat memasukkan salah satu nilai berikut:
Untuk informasi lebih lanjut tentang fitur ini, lihat Fitur pengambilan tambahan. |
true |
|
Variabel lingkungan ini mengonfigurasi AWS AppConfig Agen untuk menunggu hingga manifes diproses sebelum menyelesaikan startup. |
true |
Mengambil satu atau beberapa flag dari konfigurasi flag fitur
Untuk konfigurasi flag fitur (konfigurasi tipeAWS.AppConfig.FeatureFlags
), ekstensi Lambda memungkinkan Anda untuk mengambil satu flag atau subset flag dalam konfigurasi. Mengambil satu atau dua flag berguna jika Lambda Anda hanya perlu menggunakan beberapa flag dari profil konfigurasi. Contoh berikut menggunakan Python.
catatan
Kemampuan untuk memanggil flag fitur tunggal atau subset flag dalam konfigurasi hanya tersedia di ekstensi Agen AWS AppConfig Lambda versi 2.0.45 dan yang lebih tinggi.
Anda dapat mengambil data AWS AppConfig konfigurasi dari titik akhir HTTP lokal. Untuk mengakses bendera tertentu atau daftar bendera, gunakan parameter ?flag=
kueri untuk profil AWS AppConfig
konfigurasi.flag_name
Untuk mengakses bendera tunggal dan atributnya
import urllib.request def lambda_handler(event, context): url = f'http://localhost:2772/applications/
application_name
/environments/environment_name
/configurations/configuration_name
?flag=flag_name
' config = urllib.request.urlopen(url).read() return config
Untuk mengakses beberapa bendera dan atributnya
import urllib.request def lambda_handler(event, context): url = f'http://localhost:2772/applications/
application_name
/environments/environment_name
/configurations/configuration_name
?flag=flag_name_one
&flag=flag_name_two
' config = urllib.request.urlopen(url).read() return config
Melihat log AWS AppConfig ekstensi Agen Lambda
Anda dapat melihat data log untuk ekstensi AWS AppConfig Agen Lambda di log. AWS Lambda Entri log diawali dengan. appconfig agent
Inilah contohnya.
[appconfig agent] 2024/05/07 04:19:01 ERROR retrieve failure for 'SourceEventConfig:SourceEventConfigEnvironment:SourceEventConfigProfile': StartConfigurationSession: api error AccessDenied: User: arn:aws:sts::0123456789:assumed-role/us-east-1-LambdaRole/extension1 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::0123456789:role/test1 (retry in 60s)