Python Lambda ไม่พบไฟล์หรือไดเรกทอรีดังกล่าวปัญหาเวลาทำงาน

Aug 19 2020

ฉันมีฟังก์ชันแลมบ์ดาที่ส่งคืนข้อผิดพลาดที่ไม่พบไฟล์หรือไดเร็กทอรีดังกล่าว

เพื่อความชัดเจนภาพด้านล่างแสดงโครงสร้างไฟล์ที่มีอยู่ในแลมบ์ดาของฉันและเป็นที่ชัดเจนว่ามีไดเร็กทอรีที่ฉันกำลังมองหาอยู่

โครงสร้างไฟล์ปัจจุบันของฉันในฟังก์ชันแลมบ์ดา

ข้อความแสดงข้อผิดพลาดที่ฉันได้รับ:

[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")

ด้านล่างนี้คือ lambda_handler:

import os
import json

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

สาเหตุที่ฉันเปลี่ยนไดเร็กทอรีเป็น config เพื่อให้ฉันสามารถเข้าถึงไฟล์ secret.json ของฉันได้

โปรดแจ้งให้เราทราบหากมีรายละเอียดเพียงพอที่จะทำซ้ำ

คำตอบ

3 balderman Aug 19 2020 at 13:56

การทำงานเป็น Lambda ไม่เหมือนกับการทำงานบนเครื่อง dev ของคุณ หากคุณต้องการอ่าน config - คุณมีหลายตัวเลือก:

  1. ตัวแปร Env
  2. อัปโหลดไฟล์ config ของคุณเป็น s3 และอ่านจากที่นั่น
  3. ใช้ที่เก็บพารามิเตอร์ AWS และอ่านการกำหนดค่าจากที่นั่น
TraychoIvanov Aug 20 2020 at 21:00

หากคุณต้องการเรียกใช้ภายในเครื่องคุณสามารถตรวจสอบaws sam cliได้

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

คุณต้องกำหนดค่าเริ่มต้นของ cloudformation template.ymlด้วยการตั้งค่าฟังก์ชัน lambda ของคุณ

ในท้ายที่สุดเพียงแค่ดำเนินการ

sam local invoke -e lambda-event.json

Markonick Aug 21 2020 at 23:49

ฉันไม่สนใจรายละเอียดที่โพสต์ไว้ที่นี่ - ฉันแน่ใจว่ามันมีค่า - และจะพูดแทนเจนต์และพูดถึงว่าเนื่องจากคุณกำลังจัดการกับความลับมันจึงคุ้มค่าที่จะลงทุนในนโยบายการจัดการความลับที่พิสูจน์ได้ในอนาคต

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

การใช้ AWS Secrets Manager กับ Python (Lambda Console)