Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Penggunaan Parameter Store parameter dalam AWS Lambda fungsi
Parameter Store, alat di AWS Systems Manager, menyediakan penyimpanan hierarkis yang aman untuk manajemen data konfigurasi dan manajemen rahasia. Anda dapat menyimpan data seperti kata sandi, string database, Amazon Machine Image (AMI) IDs, dan kode lisensi sebagai nilai parameter.
Untuk menggunakan parameter dari Parameter Store dalam AWS Lambda fungsi tanpa menggunakan SDK, Anda dapat menggunakan AWS Parameter dan Rahasia Ekstensi Lambda. Ekstensi ini mengambil nilai parameter dan menyimpannya di cache untuk penggunaan di masa mendatang. Menggunakan ekstensi Lambda dapat mengurangi biaya Anda dengan mengurangi jumlah panggilan API Parameter Store. Menggunakan ekstensi juga dapat meningkatkan latensi karena mengambil parameter yang di-cache lebih cepat daripada mengambilnya dari Parameter Store.
Ekstensi Lambda adalah proses pendamping yang menambah kemampuan fungsi Lambda. Ekstensi seperti klien yang berjalan secara paralel dengan pemanggilan Lambda. Klien paralel ini dapat berinteraksi dengan fungsi Anda kapan saja selama siklus hidupnya. Untuk informasi selengkapnya tentang ekstensi Lambda, lihat API Ekstensi Lambda di Panduan Pengembang.AWS Lambda
AWS Parameter dan Rahasia Lambda Extension berfungsi untuk keduanya Parameter Store dan AWS Secrets Manager. Untuk mempelajari cara menggunakan ekstensi Lambda dengan rahasia dari Secrets Manager, lihat Menggunakan AWS Secrets Manager rahasia dalam AWS Lambda fungsi di AWS Secrets Manager Panduan Pengguna.
Info terkait
Menggunakan ekstensi AWS Parameter dan Rahasia Lambda untuk parameter cache dan rahasia
Cara kerja ekstensi
Untuk menggunakan parameter dalam fungsi Lambda tanpa ekstensi Lambda, Anda harus mengonfigurasi fungsi Lambda Anda untuk menerima pembaruan konfigurasi dengan mengintegrasikan dengan tindakan API untuk GetParameter
Parameter Store.
Saat Anda menggunakan Ekstensi Lambda AWS Parameter dan Rahasia, ekstensi mengambil nilai parameter dari Parameter Store dan menyimpannya di cache lokal. Kemudian, nilai cache digunakan untuk pemanggilan lebih lanjut sampai kedaluwarsa. Nilai cache kedaluwarsa setelah melewati time-to-live (TTL) mereka. Anda dapat mengonfigurasi nilai TTL menggunakan variabel SSM_PARAMETER_STORE_TTL lingkungan, seperti yang dijelaskan nanti dalam topik ini.
Jika cache TTL yang dikonfigurasi belum kedaluwarsa, nilai parameter cache digunakan. Jika waktu telah kedaluwarsa, nilai cache tidak valid dan nilai parameter diambil dari Parameter Store.
Selain itu, sistem mendeteksi nilai parameter yang sering digunakan dan mempertahankannya di cache sambil membersihkan nilai yang kedaluwarsa atau tidak digunakan.
penting
Ekstensi hanya dapat dipanggil pada INVOKE
fase operasi Lambda dan tidak selama INIT
fase.
Detail implementasi
Gunakan detail berikut untuk membantu Anda mengonfigurasi Ekstensi Lambda AWS Parameter dan Rahasia.
- Autentikasi
-
Untuk mengotorisasi dan mengautentikasi Parameter Store permintaan, ekstensi menggunakan kredensil yang sama seperti yang digunakan untuk menjalankan fungsi Lambda itu sendiri. Oleh karena itu, peran AWS Identity and Access Management (IAM) yang digunakan untuk menjalankan fungsi harus memiliki izin berikut untuk berinteraksi dengan Parameter Store:
-
ssm:GetParameter
— Diperlukan untuk mengambil parameter dari Parameter Store -
kms:Decrypt
— Diperlukan jika Anda mengambilSecureString
parameter dari Parameter Store
Untuk informasi selengkapnya, lihat peran AWS Lambda eksekusi di Panduan AWS Lambda Pengembang.
-
- Instantiasi
-
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 Mengonfigurasi konkurensi cadangan di Panduan Pengembang.AWS Lambda
- Tidak ada ketergantungan SDK
-
Ekstensi Lambda AWS Parameter dan Rahasia bekerja secara independen dari pustaka bahasa AWS SDK apa pun. AWS SDK tidak diperlukan untuk membuat permintaan GET Parameter Store.
- Localhost port
-
Gunakan
localhost
dalam permintaan GET Anda. Ekstensi membuat permintaan untuk localhost pelabuhan 2773. Anda tidak perlu menentukan endpoint eksternal atau internal untuk menggunakan ekstensi. Anda dapat mengkonfigurasi port dengan mengatur variabel lingkunganPARAMETERS_SECRETS_EXTENSION_HTTP_PORT
.Misalnya, dengan Python, URL GET Anda mungkin terlihat seperti contoh berikut.
parameter_url = ('http://localhost:' + port + '/systemsmanager/parameters/get/?name=' + ssm_parameter_path)
- Perubahan nilai parameter sebelum TTL kedaluwarsa
-
Ekstensi tidak mendeteksi perubahan pada nilai parameter dan tidak melakukan penyegaran otomatis sebelum TTL kedaluwarsa. Jika Anda mengubah nilai parameter, operasi yang menggunakan nilai parameter cache mungkin gagal hingga cache disegarkan berikutnya. Jika Anda mengharapkan perubahan yang sering terjadi pada nilai parameter, sebaiknya setel nilai TTL yang lebih pendek.
- Persyaratan header
-
Untuk mengambil parameter dari cache ekstensi, header permintaan GET Anda harus menyertakan
X-Aws-Parameters-Secrets-Token
referensi. Setel token keAWS_SESSION_TOKEN
, yang disediakan oleh Lambda untuk semua fungsi yang berjalan. Menggunakan header ini menunjukkan bahwa penelepon berada dalam lingkungan Lambda. - Contoh
-
Contoh berikut di Python menunjukkan permintaan dasar untuk mengambil nilai parameter cache.
import urllib.request import os import json aws_session_token = os.environ.get('AWS_SESSION_TOKEN') def lambda_handler(event, context): # Retrieve /my/parameter from Parameter Store using extension cache req = urllib.request.Request('http://localhost:2773/systemsmanager/parameters/get?name=%2Fmy%2Fparameter') req.add_header('X-Aws-Parameters-Secrets-Token', aws_session_token) config = urllib.request.urlopen(req).read() return json.loads(config)
- Dukungan ARM
-
Ekstensi mendukung arsitektur ARM di sebagian besar Wilayah AWS tempat x86_64 and x86 arsitektur didukung. Jika Anda menggunakan arsitektur ARM, kami sarankan Anda memverifikasi arsitektur Anda didukung. Untuk daftar lengkap ekstensi ARNs, lihatAWS Parameter dan Rahasia Ekstensi Lambda ARNs.
- Pencatatan log
-
Lambda mencatat informasi eksekusi tentang ekstensi beserta fungsinya dengan menggunakan Amazon CloudWatch Logs. Secara default, ekstensi mencatat jumlah minimal informasi ke CloudWatch. Untuk mencatat detail lebih lanjut, atur variabel lingkungan
PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL
keDEBUG
.
Menambahkan ekstensi ke fungsi Lambda
Untuk menggunakan AWS Parameter dan Rahasia Lambda Extension, Anda menambahkan ekstensi ke fungsi Lambda Anda sebagai lapisan.
Gunakan salah satu metode berikut untuk menambahkan ekstensi ke fungsi Anda.
- AWS Management Console (Tambahkan opsi lapisan)
-
Buka AWS Lambda konsol di https://console.aws.amazon.com/lambda/
. -
Pilih fungsi Anda. Di area Layers, pilih Add a layer.
-
Di area Choose a layer, pilih opsi AWS layer.
-
Untuk AWS layer, pilih AWS-Parameters-and-Secrets-Lambda-extension, pilih versi, lalu pilih Tambah.
- AWS Management Console (Tentukan opsi ARN)
-
Buka AWS Lambda konsol di https://console.aws.amazon.com/lambda/
. -
Pilih fungsi Anda. Di area Layers, pilih Add a layer.
-
Di area Pilih lapisan, pilih opsi Tentukan ARN.
-
Untuk Tentukan ARN, masukkan ARN ekstensi untuk arsitektur Wilayah AWS dan Anda, lalu pilih Tambah.
- AWS Command Line Interface
-
Jalankan perintah berikut di AWS CLI. Ganti masing-masing
example resource placeholder
dengan informasi Anda sendiri.aws lambda update-function-configuration \ --function-name
function-name
\ --layerslayer-ARN
Informasi terkait
Menggunakan layer dengan fungsi Lambda Anda
Mengkonfigurasi ekstensi (arsip file.zip)
AWS Parameter dan Rahasia variabel lingkungan Ekstensi Lambda
Anda dapat mengonfigurasi ekstensi dengan mengubah variabel lingkungan berikut. Untuk melihat pengaturan saat ini, atur PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL
keDEBUG
. Untuk informasi selengkapnya, lihat Menggunakan variabel AWS Lambda lingkungan di Panduan AWS Lambda Pengembang.
catatan
AWS Lambda mencatat detail operasi tentang ekstensi Lambda dan fungsi Lambda di Amazon Logs. CloudWatch
Variabel lingkungan | Detail | Dibutuhkan | Nilai valid | Nilai default |
---|---|---|---|---|
|
Batas waktu, dalam milidetik, untuk permintaan Parameter Store.
Nilai 0 (nol) menunjukkan tidak ada batas waktu. |
Tidak | Semua bilangan bulat | 0 (nol) |
|
Batas waktu, dalam milidetik, untuk permintaan ke Secrets Manager.
Nilai 0 (nol) menunjukkan tidak ada batas waktu. |
Tidak | Semua bilangan bulat |
0 (nol) |
|
Masa pakai valid maksimum, dalam hitungan detik, dari parameter dalam cache sebelum tidak valid. Nilai 0 (nol) menunjukkan bahwa cache harus dilewati. Variabel ini diabaikan jika nilai untuk |
Tidak | 0 (nol) ke 300 s (Lima menit) | 300 s (Lima menit) |
|
Masa pakai valid maksimum, dalam hitungan detik, dari rahasia dalam cache sebelum tidak valid. Nilai 0 (nol) menunjukkan bahwa cache dilewati. Variabel ini diabaikan jika nilai untuk |
Tidak | 0 (nol) ke 300 s (Lima menit) | 300 s (5 menit) |
PARAMETERS_SECRETS_EXTENSION_CACHE_ENABLED |
Menentukan apakah cache untuk ekstensi diaktifkan. Nilai nilai: |
Tidak | TRUE | FALSE | BETUL |
PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE |
Ukuran maksimum cache dalam hal jumlah item. Nilai 0 (nol) menunjukkan bahwa cache dilewati. Variabel ini diabaikan jika kedua nilai cache TTL adalah 0 (nol). |
Tidak | 0 (nol) sampai 1000 |
1000 |
PARAMETERS_SECRETS_EXTENSION_HTTP_PORT |
Port untuk server HTTP lokal. | Tidak | 1 - 65535 |
2773 |
PARAMETERS_SECRETS_EXTENSION_MAX_CONNECTIONS |
Jumlah maksimum koneksi untuk klien HTTP yang digunakan ekstensi untuk membuat permintaan Parameter Store atau Secrets Manager. Ini adalah konfigurasi per klien untuk jumlah koneksi yang baik klien Secrets Manager dan Parameter Store klien membuat ke layanan backend. |
Tidak | Minimal 1; Tidak ada batas maksimum. |
3 |
PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL |
Tingkat detail yang dilaporkan dalam log untuk ekstensi. Sebaiknya gunakan Log untuk operasi Lambda secara otomatis didorong ke grup CloudWatch log Log terkait. |
Tidak |
|
INFO |
Contoh perintah untuk menggunakan AWS Systems Manager Parameter Store dan AWS Secrets Manager Ekstensi
Contoh di bagian ini menunjukkan tindakan API untuk digunakan dengan AWS Systems Manager Parameter Store dan AWS Secrets Manager ekstensi.
Contoh perintah untuk Parameter Store
Ekstensi Lambda menggunakan akses hanya-baca ke tindakan API. GetParameter
Untuk memanggil tindakan ini, buat panggilan HTTP GET mirip dengan yang berikut ini. Format perintah ini menyediakan akses ke parameter di tingkat parameter standar.
GET http://localhost:
port
/systemsmanager/parameters/get?name=parameter-name
&version=version
&label=label
&withDecryption={true|false}
Dalam contoh ini, parameter-name
mewakili nama parameter lengkap, sepertiMyParameter
, untuk parameter yang tidak dalam hierarki, atau %2FDev%2FProduction%2FEast%2FProject-ABC%2FMyParameter
untuk parameter bernama /Dev/Production/East/Project-ABC/MyParameter
yang merupakan bagian dari hierarki.
catatan
Saat menggunakan panggilan GET, nilai parameter harus dikodekan untuk HTTP untuk mempertahankan karakter khusus. Misalnya, alih-alih memformat jalur hierarkis seperti/a/b/c
, encode karakter yang dapat ditafsirkan sebagai bagian dari URL, seperti. %2Fa%2Fb%2Fc
version
dan label
apakah penyeleksi tersedia untuk digunakan dengan GetParameter
tindakan.
GET http://localhost:
port
/systemsmanager/parameters/get/?name=MyParameter&version=5
Untuk memanggil parameter dalam hierarki, buat panggilan HTTP GET mirip dengan yang berikut ini.
GET http://localhost:
port
/systemsmanager/parameters/get?name=%2Fa%2Fb%2F&label=release
Untuk memanggil parameter publik (global), buat panggilan HTTP GET mirip dengan yang berikut ini.
GET http://localhost:
port
/systemsmanager/parameters/get/?name=%2Faws%2Fservice%20list%2F…
Untuk membuat panggilan HTTP GET ke rahasia Secrets Manager dengan menggunakan Parameter Store referensi, buat panggilan HTTP GET mirip dengan yang berikut ini.
GET http://localhost:
port
/systemsmanager/parameters/get?name=%2Faws%2Freference%2Fsecretsmanager%2F…
Untuk melakukan panggilan menggunakan Amazon Resource Name (ARN) untuk parameter, buat panggilan HTTP GET mirip dengan yang berikut ini.
GET http://localhost:
port
/systemsmanager/parameters/get?name=arn:aws:ssm:us-east-1:123456789012:parameter/MyParameter
Untuk membuat panggilan yang mengakses SecureString
parameter dengan dekripsi, buat panggilan HTTP GET mirip dengan yang berikut ini.
GET http://localhost:
port
/systemsmanager/parameters/get?name=MyParameter&withDecryption=true
Anda dapat menentukan bahwa parameter tidak didekripsi dengan menghilangkan withDecryption
atau secara eksplisit menyetelnya. false
Anda juga dapat menentukan versi atau label, tetapi tidak keduanya. Jika Anda melakukannya, hanya yang pertama yang ditempatkan setelah tanda tanya (?
) di URL yang digunakan.
AWS Parameter dan Rahasia Ekstensi Lambda ARNs
Tabel berikut menyediakan ekstensi ARNs untuk arsitektur dan Wilayah yang didukung.
Topik
Ekstensi ARNs untuk x86_64 and x86 arsitektur
Terakhir dimutakhirkan: September 19, 2024
Wilayah | ARN |
---|---|
AS Timur (Ohio) |
|
AS Timur (Virginia Utara) |
|
AS Barat (California Utara) |
|
AS Barat (Oregon) |
|
Afrika (Cape Town) |
|
Asia Pasifik (Hong Kong) |
|
Wilayah Asia Pasifik (Hyderabad) |
|
Asia Pasifik (Jakarta) |
|
Asia Pasifik (Melbourne) |
|
Asia Pasifik (Malaysia) |
arn:aws:lambda:ap-southeast-5:090732460067:layer:AWS-Parameters-and-Secrets-Lambda-Extension:1 |
Asia Pasifik (Mumbai) |
|
Asia Pasifik (Osaka) |
|
Asia Pasifik (Seoul) |
|
Asia Pasifik (Singapura) |
|
Asia Pasifik (Sydney) |
|
Asia Pasifik (Tokyo) |
|
(Canada (Central) |
|
Kanada Barat (Calgary) | arn:aws:lambda:ca-west-1:243964427225:layer:AWS-Parameters-and-Secrets-Lambda-Extension:2 |
China (Beijing) |
|
Tiongkok (Ningxia) |
|
Eropa (Frankfurt) |
|
Eropa (Irlandia) |
|
Eropa (London) |
|
Eropa (Milan) |
|
Eropa (Paris) |
|
Wilayah Eropa (Spanyol) |
|
Eropa (Stockholm) |
|
Israel (Tel Aviv) |
|
Wilayah Eropa (Zürich) |
|
Timur Tengah (Bahrain) |
|
Timur Tengah (UEA) | arn:aws:lambda:me-central-1:858974508948:layer:AWS-Parameters-and-Secrets-Lambda-Extension:12 |
Amerika Selatan (Sao Paulo) |
|
AWS GovCloud (AS-Timur) |
|
AWS GovCloud (AS-Barat) |
|
Ekstensi ARNs untuk ARM64 and Mac with Apple silicon arsitektur
Terakhir dimutakhirkan: September 19, 2024
Wilayah | ARN |
---|---|
AS Timur (Ohio) |
|
AS Timur (Virginia Utara) |
|
Wilayah AS Barat (California Utara) |
|
AS Barat (Oregon) |
|
Wilayah Afrika (Cape Town) |
|
Wilayah Asia Pasifik (Hong Kong) |
|
Wilayah Asia Pasifik (Hyderabad) |
|
Wilayah Asia Pasifik (Jakarta) |
|
Asia Pasifik (Melbourne) |
|
Asia Pasifik (Malaysia) |
arn:aws:lambda:ap-southeast-5:090732460067:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:1 |
Asia Pasifik (Mumbai) |
|
Asia Pasifik (Osaka) |
|
Wilayah Asia Pasifik (Seoul) |
|
Asia Pasifik (Singapura) |
|
Asia Pasifik (Sydney) |
|
Asia Pasifik (Tokyo) |
|
Wilayah Kanada (Pusat) |
|
Kanada Barat (Calgary) | arn:aws:lambda:ca-west-1:243964427225:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:1 |
China (Beijing) |
|
Tiongkok (Ningxia) |
|
Eropa (Frankfurt) |
|
Eropa (Irlandia) |
|
Eropa (London) |
|
Wilayah Eropa (Milan) |
|
Wilayah Eropa (Paris) |
|
Wilayah Eropa (Spanyol) |
|
Wilayah Eropa (Stockholm) |
|
Israel (Tel Aviv) |
|
Wilayah Eropa (Zürich) |
|
Wilayah Timur Tengah (Bahrain) |
|
Timur Tengah (UEA) | arn:aws:lambda:me-central-1:858974508948:layer:AWS-Parameters-and-Secrets-Lambda-Extension-Arm64:1 |
Wilayah Amerika Selatan (Sao Paulo) |
|
AWS GovCloud (AS-Timur) |
|
AWS GovCloud (AS-Barat) |
|