Python Lambda không tìm thấy tệp hoặc thư mục như vậy vấn đề thời gian chạy

Aug 19 2020

Tôi có một hàm lambda đang trả về lỗi không tìm thấy tệp hoặc thư mục nào như vậy.

Để rõ ràng hơn, hình ảnh dưới đây cho thấy cấu trúc tệp tồn tại trong lambda của tôi và rõ ràng là thư mục mà tôi đang tìm kiếm có tồn tại.

Cấu trúc tệp hiện tại của tôi trong hàm lambda

Thông báo lỗi mà tôi đang nhận được:

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

Dưới đây là lambda_handler:

import os
import json

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

Lý do tại sao tôi thay đổi thư mục thành cấu hình là để tôi có thể truy cập vào tệp secret.json của mình.

Vui lòng cho tôi biết nếu đây là đủ chi tiết để tái tạo.

Trả lời

3 balderman Aug 19 2020 at 13:56

Chạy dưới dạng Lambda không giống như chạy trên máy phát triển của bạn. Nếu bạn muốn đọc cấu hình - bạn có một số tùy chọn:

  1. Biến env
  2. Nâng cấp tệp cấu hình của bạn lên s3 và đọc nó từ đó
  3. Sử dụng kho thông số AWS và đọc cấu hình từ đó,
TraychoIvanov Aug 20 2020 at 21:00

Nếu bạn cần chạy nó cục bộ, bạn có thể kiểm tra aws sam cli.

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

Nó yêu cầu bạn xác định một thông tin đám mây mặc định template.ymlkhi thiết lập hàm lambda của bạn.

Cuối cùng chỉ cần thực hiện

sam local invoke -e lambda-event.json

Markonick Aug 21 2020 at 23:49

Tôi đang bỏ qua các chi tiết được đăng ở đây - tôi chắc chắn rằng chúng có giá trị - và sẽ tiếp tục và đề cập rằng vì bạn đang xử lý các bí mật, nên việc đầu tư vào một chính sách quản lý bí mật bằng chứng trong tương lai là đáng giá.

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

Sử dụng AWS Secrets Manager với Python (Lambda Console)