簡體   English   中英

無法在 AWS Lambda function 中導入外部 Python 庫(tweepy)

[英]Can't import external Python library (tweepy) in AWS Lambda function

我對這種事情完全是個業余愛好者。 我正在嘗試將我的小 Twitter 機器人從 Heroku 移動到 AWS Lambda,但 Tweepy 似乎正在引起麻煩。 我認為問題完全在於導入模塊,但這是我的lambda_function.py文件中的所有內容,以防萬一。

import tweepy
import random
import os
import json

ckey = os.getenv('ckey')
csec = os.getenv('csec')
atok = os.getenv('atok')
atos = os.getenv('atos')

def lambda_handler(event, context):
    # TODO implement
    tweet()
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }
    
def tweet():
    client = tweepy.Client(consumer_key=ckey, consumer_secret=csec, access_token=atok, access_token_secret=atos)
    quote = random.choice(list(open('quotes.txt')))
    client.create_tweet(text = quote)

我知道我需要上傳任何外部包作為 Lambda 層,我確實這樣做了(並嘗試了多種不同的方式)。 我目前上傳的 zip 文件作為 function 的層看起來像這樣,除了每個庫的文件夾的 dist-info 文件夾,我沒有在這里包括。

tweepylayer.zip
└───python
    └───python310 
        └───lib
             └───site-packages
                  └───bin
                    │ certifi
                    │ charset_normalizer
                    │ idna
                    │ oauthlib
                    │ requests
                    │ requests_oauthlib
                    │ tweepy
                    │ urllib3

每次我嘗試測試 function 時,都會出現此錯誤。

{
  "errorMessage": "Unable to import module 'lambda_function': No module named 'tweepy'",
  "errorType": "Runtime.ImportModuleError",
  "requestId": "1a06e902-f8b9-4c3b-b671-8934d4183dc3",
  "stackTrace": []
}

非常感謝您,非常感謝任何能夠提供幫助的人,我仍在努力解決這些問題。 我很抱歉這篇文章太長了,我不確定什么需要或不需要包括在內。

Lambda Python 運行時不支持此文件夾層次結構。 模塊需要安裝在python目錄或python/lib/python3.10/site-packages目錄下並壓縮。

AWS 文檔中的更多內容

tweepylayer.zip
└───python
    └───certifi
    └───charset_normalizer
    └───idna
    └───oauthlib
    └───requests
    └───requests_oauthlib
    └───tweepy
    └───urllib3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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