Mengambil data konfigurasi menggunakan ekstensi AWS AppConfig Agen Lambda - AWS AppConfig

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 didasarkan pada berapa kali konfigurasi dipanggil dan diterima. Biaya Anda meningkat jika Lambda Anda melakukan beberapa cold start dan sering mengambil data konfigurasi baru.

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
  1. Anda mengonfigurasi ekstensi AWS AppConfig Agen Lambda sebagai lapisan fungsi Lambda Anda.

  2. Untuk mengakses data konfigurasinya, fungsi Anda memanggil AWS AppConfig ekstensi pada titik akhir HTTP yang sedang localhost:2772 berjalan.

  3. Ekstensi mempertahankan cache lokal dari data konfigurasi. Jika data tidak ada dalam cache, ekstensi memanggil AWS AppConfig untuk mendapatkan data konfigurasi.

  4. Setelah menerima konfigurasi dari layanan, ekstensi menyimpannya di cache lokal dan meneruskannya ke fungsi Lambda.

  5. 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:

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:

  1. 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

  2. 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.

  3. (Opsional) Jika diperlukan, ID eksternal dapat ditentukan menggunakan variabel AWS_APPCONFIG_EXTENSION_ROLE_EXTERNAL_ID lingkungan. Demikian pula, nama sesi dapat dikonfigurasi menggunakan variabel AWS_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

AWS_APPCONFIG_EXTENSION_HTTP_PORT

Variabel lingkungan ini menentukan port di mana server HTTP lokal yang menghosting ekstensi berjalan.

2772

AWS_APPCONFIG_EXTENSION_LOG_LEVEL

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:debug,,, infowarn, error dan. none Debug mencakup informasi terperinci, termasuk informasi waktu, tentang ekstensi.

info

AWS_APPCONFIG_EXTENSION_MAX_CONNECTIONS

Variabel lingkungan ini mengonfigurasi jumlah maksimum koneksi yang digunakan ekstensi untuk mengambil konfigurasi dari. AWS AppConfig

3

AWS_APPCONFIG_EXTENSION_POLL_INTERVAL_SECONDS

Variabel lingkungan ini mengontrol seberapa sering ekstensi melakukan polling AWS AppConfig untuk konfigurasi yang diperbarui dalam hitungan detik.

45

AWS_APPCONFIG_EXTENSION_POLL_TIMEOUT_MILLIS

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

AWS_APPCONFIG_EXTENSION_PREFETCH_LIST

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:
"header: value"
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. HTTPSdan 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

AWS_APPCONFIG_EXTENSION_MANIFEST

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:

  • "app:env:manifest-config"

  • "file:/fully/qualified/path/to/manifest.json"

Untuk informasi lebih lanjut tentang fitur ini, lihat Fitur pengambilan tambahan.

true

AWS_APPCONFIG_EXTENSION_WAIT_ON_MANIFEST

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=flag_name kueri untuk profil AWS AppConfig konfigurasi.

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)