簡體   English   中英

AWS Lambda “Lambda 找不到文件 lambda_function.py。確保您的處理程序支持以下格式:file-name.method。” 錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM