Gunakan AWS Secrets Manager rahasia dalam AWS Lambda fungsi - AWS Secrets Manager

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Gunakan AWS Secrets Manager rahasia dalam AWS Lambda fungsi

Anda dapat menggunakan AWS Parameter dan Rahasia Lambda Ekstensi untuk mengambil dan menyimpan rahasia AWS Secrets Manager dalam fungsi Lambda tanpa menggunakan file. SDK Mengambil rahasia yang di-cache lebih cepat daripada mengambilnya dari Secrets Manager. Karena ada biaya untuk memanggil Secrets ManagerAPIs, menggunakan cache dapat mengurangi biaya Anda. Ekstensi dapat mengambil rahasia Secrets Manager dan parameter Parameter Store. Untuk informasi tentang Parameter Store, lihat Integrasi Parameter Store dengan ekstensi Lambda di AWS Systems Manager Panduan Pengguna.

Ekstensi Lambda adalah proses pendamping yang menambah kemampuan fungsi Lambda. Untuk informasi selengkapnya, lihat Ekstensi Lambda di Panduan Pengembang Lambda. Untuk informasi tentang penggunaan ekstensi dalam gambar kontainer, lihat Bekerja dengan lapisan Lambda dan ekstensi dalam gambar kontainer. 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.

Untuk menyediakan cache dalam memori untuk parameter dan rahasia, ekstensi mengekspos HTTP titik akhir lokal, port localhost 2773, ke lingkungan Lambda. Anda dapat mengkonfigurasi port dengan mengatur variabel lingkunganPARAMETERS_SECRETS_EXTENSION_HTTP_PORT.

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 di Panduan Pengembang Lambda.

Untuk menambahkan ekstensiARM, Anda harus menggunakan arm64 arsitektur untuk fungsi Lambda Anda. Untuk informasi selengkapnya, lihat Arsitektur set instruksi Lambda di Panduan Pengembang Lambda. Ekstensi mendukung ARM di Wilayah berikut: Asia Pasifik (Mumbai), AS Timur (Ohio), Eropa (Irlandia), Eropa (Frankfurt), Eropa (Zurich), AS Timur (Virginia N.), Eropa (London), Eropa (Spanyol), Asia Pasifik (Tokyo), AS Barat (Oregon), Asia Pasifik (Singapura), Asia Pasifik (Hyderabad), dan Asia Pasifik (Sydney).

Ekstensi menggunakan AWS klien. Untuk informasi tentang mengonfigurasi AWS klien, lihat Referensi pengaturan di Panduan Referensi Alat AWS SDK dan Alat. Jika fungsi Lambda Anda berjalan di aVPC, Anda perlu membuat VPC endpoint sehingga ekstensi dapat melakukan panggilan ke Secrets Manager. Untuk informasi selengkapnya, lihat Menggunakan titik AWS Secrets Manager VPC akhir.

Izin yang diperlukan:

  • Peran eksekusi Lambda harus memiliki secretsmanager:GetSecretValue izin untuk rahasia.

  • Jika rahasia dienkripsi dengan kunci yang dikelola pelanggan alih-alih Kunci yang dikelola AWS aws/secretsmanager, peran eksekusi juga memerlukan kms:Decrypt izin untuk kunci tersebutKMS.

Untuk menggunakan AWS Parameter dan Rahasia Ekstensi Lambda
  1. Tambahkan AWS layer bernama AWS Parameter dan Rahasia Lambda Extension ke fungsi Anda. Untuk petunjuk, lihat Menambahkan lapisan ke fungsi di Panduan Pengembang Lambda. Jika Anda menggunakan AWS CLI untuk menambahkan lapisan, Anda memerlukan ekstensi. ARN Untuk daftarARNs, lihat AWS Parameter dan Rahasia Ekstensi Lambda ARNs di AWS Systems Manager Panduan Pengguna.

  2. Berikan izin ke peran eksekusi Lambda untuk dapat mengakses rahasia:

  3. Konfigurasikan cache dengan variabel lingkungan Lambda.

  4. Untuk mengambil rahasia dari cache ekstensi, Anda harus terlebih dahulu menambahkan X-AWS-Parameters-Secrets-Token ke header permintaan. 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 Python berikut menunjukkan bagaimana menambahkan header.

    import os headers = {"X-Aws-Parameters-Secrets-Token": os.environ.get('AWS_SESSION_TOKEN')}
  5. Untuk mengambil rahasia dalam fungsi Lambda, gunakan salah satu permintaan berikut HTTPGET:

    • Untuk mengambil rahasia, untuksecretId, menggunakan ARN atau nama rahasia.

      GET: /secretsmanager/get?secretId=secretId
    • Untuk mengambil nilai rahasia sebelumnya atau versi tertentu dengan label pementasan, untuksecretId, gunakan ARN atau nama rahasia, dan untukversionStage, gunakan label pementasan.

      GET: /secretsmanager/get?secretId=secretId&versionStage=AWSPREVIOUS
    • Untuk mengambil versi rahasia tertentu berdasarkan ID, untuksecretId, gunakan ARN atau nama rahasia, dan untukversionId, gunakan ID versi.

      GET: /secretsmanager/get?secretId=secretId&versionId=versionId
    contoh Mengambil rahasia (Python)

    Contoh Python berikut menunjukkan bagaimana untuk mengambil rahasia dan mengurai hasil menggunakan. json.loads

    secrets_extension_endpoint = "http://localhost:" + \ secrets_extension_http_port + \ "/secretsmanager/get?secretId=" + \ <secret_name> r = requests.get(secrets_extension_endpoint, headers=headers) secret = json.loads(r.text)["SecretString"] # load the Secrets Manager response into a Python dictionary, access the secret

AWS Parameter dan Rahasia variabel lingkungan Ekstensi Lambda

Anda dapat mengkonfigurasi ekstensi dengan variabel lingkungan berikut.

Untuk informasi tentang cara menggunakan variabel lingkungan, lihat Menggunakan variabel lingkungan Lambda di Panduan Pengembang Lambda.

PARAMETERS_SECRETS_EXTENSION_CACHE_ENABLED

Setel ke true ke parameter cache dan rahasia. Setel ke false untuk tidak ada caching. Default adalah benar.

PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE

Jumlah maksimum rahasia dan parameter untuk cache. Harus berupa nilai dari 0 hingga 1000. Nilai 0 berarti tidak ada caching. Variabel ini diabaikan jika SECRETS_MANAGER_TTL keduanya SSM_PARAMETER_STORE_TTL dan 0. Defaultnya adalah 1000.

PARAMETERS_SECRETS_EXTENSION_HTTP_PORT

Port untuk HTTP server lokal. Defaultnya adalah 2773.

PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL

Tingkat pencatatan ekstensi menyediakan:debug,, infowarn,error, ataunone. Setel debug untuk melihat konfigurasi cache. Default-nya adalah info.

PARAMETERS_SECRETS_EXTENSION_MAX_CONNECTIONS

Jumlah maksimum koneksi untuk HTTP klien yang digunakan ekstensi untuk membuat permintaan ke Parameter Store atau Secrets Manager. Ini adalah konfigurasi per klien. Defaultnya adalah 3.

SECRETS_MANAGER_TIMEOUT_MILLIS

Batas waktu untuk permintaan ke Secrets Manager dalam milidetik. Nilai 0 berarti tidak ada batas waktu. Default-nya adalah 0.

SECRETS_MANAGER_TTL

TTLrahasia dalam cache dalam hitungan detik. Nilai 0 berarti tidak ada caching. Maksimumnya adalah 300 detik. Variabel ini diabaikan PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE jika 0. Defaultnya adalah 300 detik.

SSM_PARAMETER_STORE_TIMEOUT_MILLIS

Batas waktu untuk permintaan ke Parameter Store dalam milidetik. Nilai 0 berarti tidak ada batas waktu. Default-nya adalah 0.

SSM_PARAMETER_STORE_TTL

TTLdari parameter dalam cache dalam hitungan detik. Nilai 0 berarti tidak ada caching. Maksimumnya adalah 300 detik. Variabel ini diabaikan PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE jika 0. Defaultnya adalah 300 detik.