.zip
ファイルを含めるために必要とされるNPMラムダのモジュールを。そして、実際にLambda Webエディターをほとんどの目的で使用するべきではありません。本番用コードと同様に、ローカルで開発し、gitにコミットする必要があります。
私の流れ:
1)私のLambda関数は通常、より大きなプロジェクトのヘルパーユーティリティであるため、その中に/ aws / lambdasディレクトリを作成してそれらを格納します。
2)個々のラムダディレクトリには、関数コードを含むindex.jsファイル、依存関係を定義するpackage.jsonファイル、および/ node_modulesサブディレクトリが含まれます。(package.jsonファイルはLambdaでは使用されませんnpm install
。ローカルでコマンドを実行できるようにするためです。)
package.json:
{
"name": "my_lambda",
"dependencies": {
"svg2png": "^4.1.1"
}
}
3)すべてのnode_modulesディレクトリと.zipファイルを.gitignoreして、npmのインストールと圧縮から生成されたファイルがリポジトリを乱雑にしないようにします。
.gitignore:
# Ignore node_modules
**/node_modules
# Ignore any zip files
*.zip
4)npm install
ディレクトリ内から実行してモジュールをインストールし、ローカルで関数を開発/テストします。
5)ラムダディレクトリを.zipして、コンソールからアップロードします。
(重要: FinderからMacの「圧縮」ユーティリティを使用してファイルを圧縮しないでください。ディレクトリのルート内からCLIからzipを実行する必要があります。こちらを参照してください)
zip -r ../yourfilename.zip *
注意:
LambdaのLinuxベースの環境にデプロイしたときに一部のプラットフォーム固有のモジュールが失敗する可能性があるため、ノードモジュールをMacにローカルにインストールすると、問題が発生する可能性があります。(https://stackoverflow.com/a/29994851/165673を参照)
解決策は、使用しているLambda Node.jsランタイムに対応するAMIから起動されたEC2インスタンスでモジュールをコンパイルすることです(このLambdaランタイムとそれぞれのAMIのリストを参照)。
Node.jsのAWS Lambdaデプロイメントパッケージもご覧ください-AWS Lambda