Python Lambda nenhum arquivo ou diretório encontrado problema de tempo de execução

Aug 19 2020

Eu tenho uma função lambda que está retornando um erro de que nenhum arquivo ou diretório foi encontrado.

Para ficar claro, a imagem abaixo mostra que a estrutura do arquivo existe no meu lambda e é claro que o diretório que estou procurando existe.

Minha estrutura de arquivo atual na função lambda

Mensagem de erro que estou recebendo:

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

Abaixo está o lambda_handler:

import os
import json

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

A razão pela qual estou alterando o diretório para config é para que eu possa acessar meu arquivo secrets.json.

Por favor, deixe-me saber se este é um detalhe suficiente para reproduzir.

Respostas

3 balderman Aug 19 2020 at 13:56

Executar como Lambda não é o mesmo que executar em sua máquina de desenvolvimento. Se você deseja ler a configuração - você tem várias opções:

  1. Variáveis ​​Env
  2. Faça upload do seu arquivo de configuração para s3 e leia-o de lá
  3. Use o armazenamento de parâmetros AWS e leia a configuração de lá,
TraychoIvanov Aug 20 2020 at 21:00

Se você precisar executá-lo localmente, poderá verificar aws sam cli.

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

Requer que você defina um cloudformation padrão template.ymlcom a configuração de sua função lambda.

No final, basta executar

sam local invoke -e lambda-event.json

Markonick Aug 21 2020 at 23:49

Estou ignorando os detalhes postados aqui - tenho certeza de que são valiosos - e irei pelo tangente e mencionarei que, como você está lidando com segredos, vale a pena investir em uma política de gerenciamento de segredos à prova de futuro.

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

Usando o AWS Secrets Manager com Python (Lambda Console)