AWSサーバーレスラムダ関数:名前でモジュールがありませんelasticsearchエラー

アプリコット

AWSでLambdaを使用するのは初めてで、現在、さまざまなブログで提供されているサンプルスクリプトのいくつかを実行して、サーバーのない環境でこれらすべてがどのように機能するかをテストしようとしています。私が取り組んでいる例の1つは、オブジェクトがs3バケットに追加されるたびにトリガーされ、オブジェクトのメタデータをelasticsearchに格納するラムダ関数を作成することです。

この目的のために、elasticsearchドメインのs3バケットを作成し、ラムダ関数の作成を開始しました。

ラムダコンソールで提供されているインラインコードエディターを使用しており、ランタイムとしてpython3.6を選択しています。コードは次のとおりです。

from __future__ import print_function
from pprint import pprint
import boto3
import json
from elasticsearch import Elasticsearch, RequestsHttpConnection


def lambda_handler(event, context):
    imageid =  event['Records'][0]['s3']['object']['key']
    print(imageid)

このコードはまだデータをElasticSearchにプッシュしていません。これについては後で説明します。ただし、elasticsearchのインポートで「モジュールが見つかりません」というエラーが発生します。
上記のコードをテストしたときのエラーログは次のとおりです。

Response:
{
  "errorMessage": "Unable to import module 'lambda_function'"
}

Request ID:
"a26249c3-00e2-11e9-83b0-ffc7719455cf"

Function Logs:
START RequestId: a26249c3-00e2-11e9-83b0-ffc7719455cf Version: $LATEST
Unable to import module 'lambda_function': No module named elasticsearch

END RequestId: a26249c3-00e2-11e9-83b0-ffc7719455cf
REPORT RequestId: a26249c3-00e2-11e9-83b0-ffc7719455cf  Duration: 0.42 ms   Billed Duration: 100 ms     Memory Size: 128 MB Max Memory Used: 25 MB  

私は、サーバーレス環境がデフォルトで呼び出されたときにすべての必要なライブラリをロードするという印象を受けました。ただし、このエラーの詳細を調べたところ、ソースをzipファイルで指定するように指定されているものもあれば、zipファイルがであると指定されているものもありましたWhen you use the ZipFile property to specify your function's source code and that function interacts

これは紛らわしいと思います。Elasticsearchモジュールをサーバーレス環境にインストールする必要がありますか、それともzipファイルとしてロードする必要がありますか?ラムダ関数がElasticSearchと通信するようにするにはどうすればよいですか。

レッヒミグダル

はい、AWSLambda環境にはデフォルトでboto3pythonライブラリのみが含まれています。それ以外の場合は、すべての依存関係を含むzipファイルを作成し、Lambda関数にアップロードする必要があります。

これを行うには(少なくとも)3つの方法があります。

  1. AWSCloud9を使用する-クラウドでIDE
  2. マシンにコードを記述し、変更をコミットしたときにzipをビルドするCI / CDパイプライン構成します
  3. マシンにコードを記述し、zipを手動でビルド/アップロードします-SAMアプローチを使用することは、おそらくそれを達成するための最も防弾の方法です

それが役に立てば幸い!:)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Djangoサーバーエラー:ImportError:dalという名前のモジュールがありません

分類Dev

スクレイピーエラーImportError:itemsという名前のモジュールがありません

分類Dev

エラー:モジュールAlamofireには「request」という名前のメンバーがありません

分類Dev

Django AWS Elastic BeanstalkエラーImproperlyConfigured:MySQLdbモジュールの読み込みエラー:MySQLdbという名前のモジュールがありません

分類Dev

sudsインストールエラー:clientという名前のモジュールがありません

分類Dev

sudsインストールエラー:clientという名前のモジュールがありません

分類Dev

AWSラムダ:「cfnresponse」という名前のモジュールはありません

分類Dev

AWSラムダ関数エラー-モジュール「インデックス」をインポートできません:エラー

分類Dev

500内部サーバーエラーmod_wsgiapache "importerror: 'django'という名前のモジュールがありません

分類Dev

Django 1.10 / Apache 2.4.18、内部サーバーエラー「URLという名前のモジュールがありません」

分類Dev

エラー:Python2.7ではos.unameという名前のモジュールがありません

分類Dev

apportable:Macでargparseエラーという名前のモジュールがありません

分類Dev

apportable:Macでargparseエラーという名前のモジュールがありません

分類Dev

LinuxMintでPython3エラー「bluetoothという名前のモジュールがありません」

分類Dev

Python '名前の付いたモジュールがありません'エラー; 「パッケージ」はパッケージではありません

分類Dev

Djangoストレージ:インポートエラー-storagesという名前のモジュールがありません

分類Dev

gunicornがフラスコサーバーの起動に失敗しました:ModuleNotFoundError:「requests」という名前のモジュールがありません

分類Dev

インポートエラー:スパイダーという名前のモジュールがありません

分類Dev

ラムダにインポートしようとすると、「requests_aws4auth」という名前のモジュールがありません

分類Dev

サーバーレスAWSLambda: `secret_manager`という名前のモジュールはありません

分類Dev

AWSLambdaエラー「モジュールが見つかりません」を伴うサーバーレスフレームワーク

分類Dev

AWSラムダ:「ハンドラー 'ハンドル'がモジュール 'エクスポート'にありません」

分類Dev

インポートエラー:モジュール名がありません

分類Dev

OSXのPyCharmでGAEGCSを実行すると、ランタイムエラー「cloudstorageという名前のモジュールがありません」

分類Dev

Ubuntu - Python でのプログラムの実行中のエラー:「ImportError: mxnet という名前のモジュールがありません」

分類Dev

インポートエラー:transactionという名前のモジュールがありません

分類Dev

spacyのインポートエラー:「enという名前のモジュールがありません」

分類Dev

インポートエラー:「scipy._lib」という名前のモジュールがありません

分類Dev

インポートエラー:plotly.plotlyという名前のモジュールがありません

Related 関連記事

  1. 1

    Djangoサーバーエラー:ImportError:dalという名前のモジュールがありません

  2. 2

    スクレイピーエラーImportError:itemsという名前のモジュールがありません

  3. 3

    エラー:モジュールAlamofireには「request」という名前のメンバーがありません

  4. 4

    Django AWS Elastic BeanstalkエラーImproperlyConfigured:MySQLdbモジュールの読み込みエラー:MySQLdbという名前のモジュールがありません

  5. 5

    sudsインストールエラー:clientという名前のモジュールがありません

  6. 6

    sudsインストールエラー:clientという名前のモジュールがありません

  7. 7

    AWSラムダ:「cfnresponse」という名前のモジュールはありません

  8. 8

    AWSラムダ関数エラー-モジュール「インデックス」をインポートできません:エラー

  9. 9

    500内部サーバーエラーmod_wsgiapache "importerror: 'django'という名前のモジュールがありません

  10. 10

    Django 1.10 / Apache 2.4.18、内部サーバーエラー「URLという名前のモジュールがありません」

  11. 11

    エラー:Python2.7ではos.unameという名前のモジュールがありません

  12. 12

    apportable:Macでargparseエラーという名前のモジュールがありません

  13. 13

    apportable:Macでargparseエラーという名前のモジュールがありません

  14. 14

    LinuxMintでPython3エラー「bluetoothという名前のモジュールがありません」

  15. 15

    Python '名前の付いたモジュールがありません'エラー; 「パッケージ」はパッケージではありません

  16. 16

    Djangoストレージ:インポートエラー-storagesという名前のモジュールがありません

  17. 17

    gunicornがフラスコサーバーの起動に失敗しました:ModuleNotFoundError:「requests」という名前のモジュールがありません

  18. 18

    インポートエラー:スパイダーという名前のモジュールがありません

  19. 19

    ラムダにインポートしようとすると、「requests_aws4auth」という名前のモジュールがありません

  20. 20

    サーバーレスAWSLambda: `secret_manager`という名前のモジュールはありません

  21. 21

    AWSLambdaエラー「モジュールが見つかりません」を伴うサーバーレスフレームワーク

  22. 22

    AWSラムダ:「ハンドラー 'ハンドル'がモジュール 'エクスポート'にありません」

  23. 23

    インポートエラー:モジュール名がありません

  24. 24

    OSXのPyCharmでGAEGCSを実行すると、ランタイムエラー「cloudstorageという名前のモジュールがありません」

  25. 25

    Ubuntu - Python でのプログラムの実行中のエラー:「ImportError: mxnet という名前のモジュールがありません」

  26. 26

    インポートエラー:transactionという名前のモジュールがありません

  27. 27

    spacyのインポートエラー:「enという名前のモジュールがありません」

  28. 28

    インポートエラー:「scipy._lib」という名前のモジュールがありません

  29. 29

    インポートエラー:plotly.plotlyという名前のモジュールがありません

ホットタグ

アーカイブ