Python Lambda tidak ada file atau direktori seperti itu yang ditemukan masalah waktu berjalan

Aug 19 2020

Saya memiliki fungsi lambda yang mengembalikan kesalahan sehingga tidak ada file atau direktori yang ditemukan.

Untuk lebih jelasnya gambar di bawah ini menunjukkan struktur file yang ada di lambda saya dan jelas bahwa direktori yang saya cari memang ada.

Struktur file saya saat ini dalam fungsi lambda

Pesan Kesalahan yang saya terima:

[ERROR] FileNotFoundError: [Errno 2] No such file or directory: 'config'
Traceback (most recent call last):
  File "/var/task/lambda_function.py", line 23, in lambda_handler
    os.chdir("config")

Di bawah ini adalah lambda_handler:

import os
import json

def lambda_handler(event, context):
    
    
    print(event)
    os.chdir("config")
    loginInfo = json.load(open('secrets.json'))
    return loginInfo

Alasan mengapa saya mengubah direktori menjadi config adalah agar saya dapat mengakses file secret.json saya.

Tolong beritahu saya jika ini cukup detail untuk direproduksi.

Jawaban

3 balderman Aug 19 2020 at 13:56

Menjalankan sebagai Lambda tidak sama dengan menjalankan mesin dev Anda. Jika Anda ingin membaca config - Anda memiliki beberapa opsi:

  1. Variabel env
  2. Unggah file konfigurasi Anda ke s3 dan baca dari sana
  3. Gunakan penyimpanan parameter AWS dan baca konfigurasi dari sana,
TraychoIvanov Aug 20 2020 at 21:00

Jika Anda perlu menjalankannya secara lokal, Anda dapat memeriksanya aws sam cli.

https://github.com/awslabs/aws-sam-cli

Ini mengharuskan Anda untuk menentukan cloudformation default template.ymldengan pengaturan fungsi lambda Anda.

Pada akhirnya jalankan saja

sam local invoke -e lambda-event.json

Markonick Aug 21 2020 at 23:49

Saya mengabaikan detail yang diposting di sini - saya yakin itu berharga - dan akan bersinggungan dan menyebutkan bahwa karena Anda menangani rahasia, ada baiknya berinvestasi dalam kebijakan pengelolaan rahasia bukti di masa depan.

https://dev.to/dvddpl/where-do-you-keep-credentials-for-your-lambda-functions-5dno

Menggunakan AWS Secrets Manager dengan Python (Lambda Console)