1. ホーム
  2. amazon-web-services

[解決済み] AWS Lambdaでnpmモジュールを読み込むには?

2022-04-18 11:03:37

質問

ウェブベースのエディタを使って、いくつかのLambda関数を作成しました。ここまでは順調です。私は今、それらをモジュール(約束のためのQのような)で拡張し始めたいと思います。モジュールをLambdaに送り出し、私の関数で消費できるようにする方法がわかりません。

を読みました。 これ が、EC2を立ち上げ、そこからLambda関数を実行することになるようです。関数作成時にzipをアップロードする仕組みもあるようですが、それはローカルで開発した関数をアップロードすることになるようです。私はウェブベースのエディタで作業しているので、不思議なワークフローに思えます。

Lambda 関数で使用するモジュールを簡単にデプロイするにはどうすればよいですか?

どのように解決するのですか?

をアップロードしないと、NPM モジュールをロードできません。 .zip というファイルがありますが、実はこの処理を2つのコマンドラインで簡単に済ませることができるんです。

その方法を説明します。

  1. Lambda関数のファイルは、別のディレクトリに置いてください。 これは npm のパッケージをローカルで使用し、Lambdaにアップロードするものを分離してテストできるようにしたい。

  2. NPM パッケージをローカルにインストールするには npm install packageName で作成したLambdaの別ディレクトリにいる間に、Lambdaを起動します。

  3. ローカルで実行したときに関数が動作することを確認します。 node lambdaFunc.js (をコメントアウトすることができます。 export.handler の行を追加することで、Node をローカルに動作させることができます)。

  4. Lambdaのディレクトリに移動して、圧縮して コンテンツ を確認します。 ない のように、ディレクトリそのものを含めるようにします。

    zip -r lambdaFunc.zip .
    
    
  5. もし、あなたが aws-cli をインストールすると、このコマンドを入力できるようになります。

    aws lambda update-function-code --function-name lambdaFunc \
    --zip-file fileb://~/path/to/your/lambdaFunc.zip
    
    

    (上記のlambdaFuncの部分は引用符で囲んでいません。)私のように疑問に思うかもしれませんが

  6. をクリックすることができます。 テスト をLambdaコンソールで表示します。

  7. 上記の2つのコマンドには、短いエイリアスを追加することをお勧めします。 私の場合は、ずっと長いLambda updateコマンドのために、以下のようなものを入れています。

    alias up="aws lambda update-function-code --function-name lambdaFunc \
    --zip-file fileb://~/path/to/your/lambdaFunc.zip"