0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS SAMでJavaScript v3のLambdaをデプロイする(Node16以下)

Last updated at Posted at 2023-01-06

この記事は Lambda の Runtime が Node16 以下でSDK for JavaScript v3を AWS SAM でデプロイする方法について記述しています。

Node18以降はv3に対応しているので、v3で書かれたソースだけをデプロイしても動きます。代わりに、Node18以降でv2で書いている場合はv2のSDKをソースに含めてデプロイする必要があります。

プロジェクトをsam initで作成した場合、ルートパスでデプロイするとtemplate.yaml__tests__などのファイルもアップロードされてしまい見た目が悪いです。そのためtemplate.yamlCodeUriを指定すると思います。

template.yaml
  SampleFanction:
    Type: AWS::Serverless::Function
    CodeUri: src/

このようにすると、v3のSDKがsam buildの対象に含まれなってしまいます。この場合はpackage.jsonCodeUriで指定したパスのルートに置くことでビルドに含まれるようになります。

SAMルート
  |- __tests__
  |- events
  |- src
  |   |- handlers
  |   |   |- program.js
  |   |- package.json
  |- template.yaml
  ...

↓ ビルド後

SAMルート
  |- .aws-sam
  |   |- build
  |   |   |- SampleFanction
  |   |   |   |- handlers
  |   |   |   |   |- program.js
  |   |   |   |- package.json
  |   |   |   |- node_modules
  |   |   |- template.yaml
  |   |- build.toml

node_modulesがビルドに含まれるようになりました。

Node.jsは実行中のファイルと同じ階層にnode_modulesディレクトリがあるか検索し、無ければ親ディレクトリとルートのパスまで遡りnode_modulesディレクトリを探してインポートします。
Loading from node_modules folders

Lambda Layerがベストプラクティスかもしれませんが。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?