![](/img/trans.png)
[英]“Lambda can't find the file lambda_function.py” : Error while invoking lambda function from ZIP file
[英]AWS Lambda "Lambda can't find the file lambda_function.py. Make sure that your handler upholds the format: file-name.method." error
我收到“Lambda 找不到文件 lambda_function.py。確保您的處理程序支持以下格式:file-name.method。” AWS Lambda 函數代碼塊正上方的錯誤。 你可以在這里看到警告
但是正如您在此代碼塊中看到的,我的文件名為 lambda_function,函數名為 lambda_handler。
import boto3
import os
import logging
import uuid
from webdriver_screenshot import WebDriverScreenshot
logger = logging.getLogger()
logger.setLevel(logging.INFO)
s3 = boto3.client('s3')
def lambda_handler(event, context):
logger.info('## ENVIRONMENT VARIABLES')
logger.info(os.environ)
screenshot_file = "{}-{}".format(''.join(filter(str.isalpha, os.environ['URL'])), str(uuid.uuid4()))
driver = WebDriverScreenshot()
logger.info('Generate fixed height screenshot')
driver.save_screenshot(os.environ['URL'], '/tmp/{}-fixed.png'.format(screenshot_file), height=1024)
logger.info('Generate full height screenshot')
driver.save_screenshot(os.environ['URL'], '/tmp/{}-full.png'.format(screenshot_file))
driver.close()
if all (k in os.environ for k in ('BUCKET','DESTPATH')):
## Upload generated screenshot files to S3 bucket.
s3.upload_file('/tmp/{}-fixed.png'.format(screenshot_file),
os.environ['BUCKET'],
'{}/{}-fixed.png'.format(os.environ['DESTPATH'], screenshot_file))
s3.upload_file('/tmp/{}-full.png'.format(screenshot_file),
os.environ['BUCKET'],
'{}/{}-full.png'.format(os.environ['DESTPATH'], screenshot_file))
我的代碼文件夾是這樣的,主要的python代碼在src文件夾中。 在 AWS Lambda 中,我的文件夾如下所示。 我不明白是什么問題。
更糟糕的是,當我嘗試在 AWS Lambda 環境中測試代碼時,出現此錯誤。 它說:
無法導入模塊“lambda_function”:沒有名為“boto3”的模塊
但是我在層中有 boto3 模塊,它是從我的 S3 Bucket 上傳的。 已成功添加到函數中
我唯一懷疑的是,我可能寫錯了環境變量,如下所示:環境變量由於我是編碼和 AWS Lambda 的初學者,我只是從某個地方復制了 PATH 和 PYTHONPATH。
我不知道接下來要做什么,需要一些支持。
謝謝。
當我嘗試在 lambda_function 中使用外部模塊時,我遇到了同樣的問題,在我的例子中是 OpenCV 作為 lambda 層。 為了使 Opencv 工作,我必須更改環境變量,使密鑰PYTHONPATH
具有本教程中描述的值/opt/
。 然后我遇到了你描述的同樣的問題Unable to import module 'lambda_function': No module named 'boto3'
,boto3 假設集成在 lambda 的路徑中有什么奇怪的。 在我的理解中,只是與目錄沖突。
它為我解決的方法是將環境變量的值從/opt/
更改為/opt:/var/runtime
。 希望對你有幫助。
不用擔心,我可以幫你解決這個問題。 對於第一個Lambda can't find the file lambda_function.py
問題,請嘗試在函數配置中將src/
添加到處理程序值,因為您的 Python 腳本不在頂級目錄中。 對於與 lambda 層相關的第二個問題,您確實搞砸了PYTHONPATH
環境變量。 如果您正在使用圖層,則無需覆蓋此變量。 保持不變。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.