PythonLambdaそのようなファイルまたはディレクトリが見つかりません実行時の問題

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に変更する理由は、secrets.jsonファイルにアクセスできるようにするためです。

これが再現するのに十分な詳細であるかどうか私に知らせてください。

回答

3 balderman Aug 19 2020 at 13:56

Lambdaとして実行することは、開発マシンで実行することと同じではありません。configを読みたい場合は、いくつかのオプションがあります。

  1. 環境変数
  2. 設定ファイルをs3にアップグレードし、そこから読み取ります
  3. AWSパラメータストアを使用して、そこから設定を読み取ります。
TraychoIvanov Aug 20 2020 at 21:00

ローカルで実行する必要がある場合は、を確認できますaws sam cli

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

template.ymlラムダ関数のセットアップでデフォルトのクラウドフォーメーションを定義する必要があります。

最後に実行するだけです

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

PythonでのAWSSecrets Managerの使用(Lambdaコンソール)