マネージメントコンソール上のエディタでLambdaのコードを書く際にnpmライブラリを追加したい

公開日時

リポジトリ管理するほどでもないちょっとした検証用のコードを書く際にはマネージメントコンソール上のエディタで書いたほうが手軽に試せる。

aws-sdkを使った処理の場合は、デフォルトでaws-sdkが組み込まれているので index.js のみ実装すれば問題ないが、例えば外部APIリクエストのためにaxiosを追加したい場合はひと手間加える必要があった。

コードをexport

  • 「アクション」 => 「関数のエクスポート」 => 「デプロイパッケージのダウンロード」を実行
  • zipファイルがダウンロードできる
lambda1
関数のエクスポート

npmライブラリを追加&インストール

  • ダウンロードしたzipを解凍
  • 解凍後のディレクトリでnpmライブラリを追加
yarn add axios
  • 再度zip化
zip -r function.zip .

アップロード

  • コードエディタの「アップロード元」から「.zipファイル」を選択
  • function.zipをアップロード

※ 50MBを超える場合はzipファイルだとアップロードできないのでs3を使う必要がある

lambda2
zipファイルをアップロード
  • アップロードが完了するとpackage.json, yarn.lock, node_modules がエディタに反映される

これでマネージメントコンソール上でLambdaを書く際にもnpmライブラリの追加ができた。

ちょっとした検証用であればこのやり方がシンプルだが、複雑なことをやりたい場合は最初からSAMCDKを使って管理しておいたほうが楽そう。

参考


Related #lambda

RDSを定期的に停止するLambdaを作る

手動起動は大変なので

AWS SESの受信メールを暗号化してs3に保存しLambdaで読み込む

jsの場合、複合処理を独自実装する必要がある

Nodejs12のLambdaでawscliを使う

aws-lambda-layer-awscliを使う

s3の署名付きURLが有効期限より前に見れなくなってしまう

IAMロールではなくIAMユーザの権限でURLを生成する必要があった

AWS Lambdaでpuppeteerを動かしスクリーンショットをs3に保存する

前から気になっていたHeadless Chromeをjsから操作できるpuppeteerを使って、スクリーンショットをs3に保存するAPIを作ることにした。

CDK aws-lambda-nodejsのビルド時間を短縮する

Parcel v2.0.0-beta.1を使ってローカルでバンドルする