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 SDK. Mengambil rahasia yang di-cache lebih cepat daripada mengambilnya dari Secrets Manager. Karena ada biaya untuk memanggil Secrets Manager API, 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 titik akhir HTTP 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 ekstensi untuk ARM, Anda harus menggunakan arm64 arsitektur untuk fungsi Lambda Anda. Untuk informasi selengkapnya, lihat Arsitektur set instruksi Lambda di Panduan Pengembang Lambda. Ekstensi ini 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 AWS SDK dan Panduan Referensi Alat. Jika fungsi Lambda Anda berjalan di VPC, Anda perlu membuat titik akhir VPC sehingga ekstensi dapat melakukan panggilan ke Secrets Manager. Untuk informasi selengkapnya, lihat Menggunakan titik akhir AWS Secrets Manager VPC.

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

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 layer, Anda memerlukan ARN ekstensi. Untuk daftar ARN, lihat AWS Parameter dan Rahasia Lambda Extension ARN 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 HTTP GET berikut:

    • Untuk mengambil rahasia, untuksecretId, gunakan 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 versionId untuk, 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 tanpa 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 server HTTP 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 klien HTTP 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

TTL rahasia dalam cache dalam hitungan detik. Nilai 0 berarti tidak ada caching. Maksimumnya adalah 300 detik. Variabel ini diabaikan PARAMETERS_SECRETS_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

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