【问题标题】:Python Lambda no such file or directory found run time issuePython Lambda没有找到这样的文件或目录运行时问题
【发布时间】:2020-12-08 19:28:22
【问题描述】:

我有一个 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 文件。

请让我知道这是否足以重现细节。

【问题讨论】:

    标签: python json amazon-web-services aws-lambda boto3


    【解决方案1】:

    作为 Lambda 运行与在您的开发机器上运行不同。 如果你想阅读配置 - 你有几个选择:

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

    【讨论】:

    • 4.指向数据库表中的配置值(如果可能)
    【解决方案2】:

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

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

    它需要您定义一个默认的 cloudformation template.yml 并设置您的 lambda 函数。

    最后只执行

    sam local invoke -e lambda-event.json

    【讨论】:

      【解决方案3】:

      我忽略了此处发布的详细信息 - 我相信它们很有价值 - 并且会切线并提到,由于您正在处理机密,因此值得投资于未来的机密管理政策。

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

      Using AWS Secrets Manager with Python (Lambda Console)

      【讨论】:

        猜你喜欢
        • 2016-08-15
        • 2016-02-11
        • 1970-01-01
        • 1970-01-01
        • 2020-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-30
        相关资源
        最近更新 更多