Python Lambda nenhum arquivo ou diretório encontrado problema de tempo de execução
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
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:
- Variáveis Env
- Faça upload do seu arquivo de configuração para s3 e leia-o de lá
- Use o armazenamento de parâmetros AWS e leia a configuração de lá,
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.yml
com a configuração de sua função lambda.
No final, basta executar
sam local invoke -e lambda-event.json
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)