Python Lambda找不到此类文件或目录的运行时问题

问题描述

我有一个lambda函数,该函数返回一个错误提示找不到该文件或目录。

为清楚起见,下图显示了我的lambda中存在的文件结构,而且很显然,我要查找的目录确实存在。

My current file structure in the lambda function

我收到的错误消息:

[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的原因是为了可以访问我的secrets.json文件

请让我知道这是否足够重现。

解决方法

以Lambda身份运行与在开发计算机上运行不同。 如果您想阅读配置-您可以选择以下几种方式:

  1. 环境变量
  2. 将您的配置文件复制到s3并从那里读取
  3. 使用AWS参数存储并从那里读取配置,
,

如果需要在本地运行它,可以检查aws sam cli

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

它要求您通过设置lambda函数来定义默认的cloudformation template.yml

最后只需执行

sam local invoke -e lambda-event.json

,

我无视此处发布的详细信息-我确信它们是有价值的-并且继续进行切线讨论,并提及由于您正在处理机密,因此值得投资于未来的证据机密管理政策。

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

Using AWS Secrets Manager with Python (Lambda Console)