1

我有一个简单的 Python 代码,它使用 Elasticsearch 模块“curator”来制作快照。我已经在本地测试了我的代码并且它可以工作。

现在我想在 AWS Lambda 中运行它,但我遇到了这个错误:

无法导入模块“lambda_function”:没有名为“error”的模块

这是我如何进行的:

我手动创建了一个 Lambda 并给它一个“AISA-BasicLambdaExecutionRole”角色。然后我用我的函数和我用命令安装的依赖项创建了我的包:

pip install elasticsearch-curator -t /<path>/myRepository 

我压缩了内容(不是文件夹)并将其上传到我的 Lambda 中。我将处理程序名称更改为“lambda_function.lambda_handler”(我的函数名称是“lambda_function.py”)。

我错过了什么 ?这是我第一次使用 Lambda 和 Python

我已经看到有关此错误的其他问题:

"errorMessage": "无法导入模块 'lambda_function'"

但没有什么对我有用。

编辑 :

这是我的 lambda_function :

from __future__ import print_function
import curator
import time
from curator.exceptions import NoIndices
from elasticsearch import Elasticsearch

def lambda_handler(event, context):



  es = Elasticsearch()

  index_list = curator.IndexList(es)

  index_list.filter_by_regex(kind='prefix', value="logstash-")

  Number = 1

  try:
    while Number <= 3:

        Name="snapshotLmbd_n_"+ str(Number) +""

        curator.Snapshot(index_list, repository="s3-backup", name= Name , wait_for_completion=True).do_action()     
        Number += 1

        print('Just taking a nap ! will be back soon')
        time.sleep(30)

  except KeyboardInterrupt:
        print('My bad ! I interrupted this')
        return

感谢您的时间。

4

1 回答 1

1

好的,既然你其他一切都正确,请检查 python 脚本的权限。

它必须具有可执行权限 (755)

于 2018-03-19T19:08:17.053 回答