Amplify CLIからLambda Layerも触れるようになってた

最近、Aurora Serverlessの使用料を概算してちょっとしょげていた。

代わりにLambdaからPosgreSQLにSQLを発行するようにする。

アンチパターンとされているが、開発中なのでセッション数は気にせず、アクセス数に応じてRDS Proxyへ移行する。

Lambdaは呼び出し時に必要とするアセットを詰め込むこともできるが、共通のレイヤーを用意することもできる。(この辺りの挙動はほんとコンテナ感が強くなってきてる。

このLayerを生成するの7月7日付けのリリースで利用可能になったみたい。

zip化もモリっとしてくれるので、あんまり考えずにレイヤーを作ってプッシュすることができた。

 

amplify add function
? Select which capability you want to add: Lambda layer (shared code & resource used across functions)
? Provide a name for your Lambda layer: レイヤ―名
? Select up to 2 compatible runtimes: NodeJS
? The current AWS account will always have access to this layer.
Optionally, configure who else can access this layer. (Hit <Enter> to skip) 
✅ Lambda layer folders & files created:
amplify\backend\function\レイヤー名

Next steps:
Move your libraries to the following folder:
[NodeJS]: amplify\backend\function\レイヤー名\lib\nodejs\node_modules

Include any files you want to share across runtimes in this folder:
amplify\backend\function\レイヤー名\opt

"amplify function update <function-name>" - configure a function with this Lambda layer
"amplify push" - builds all of your local backend resources and provisions them in the cloud

ここまでするとモリっとamplify\backend\function\下にレイヤー名とファイルが生成される。

cd  amplify\backend\function\レイヤー名\lib\nodejs\

まで移動する。

npm initする。

 

npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (layer1)
version: (1.0.0)
description:
test command:
git repository:
keywords:
author:
license: (ISC)

{
  "version": "1.0.0",
  "main": "index.js",
  "dependencies": {},
  "devDependencies": {},
  "name": "nodejs",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "description": ""
}

npm i 好きなパッケージ

ここまで出来たら。

一旦ルートディレクトリに戻る。

amplify update function

amplify update function
? Select which capability you want to update: Lambda layer (shared code & resource used across functions)
? Select the Lambda layer to update: レイヤー名
? Do you want to update the compatible runtimes? No      
? Do you want to adjust layer version permissions? Yes
? Select the layer version to update: 2
? The current AWS account will always have access to this layer.
Optionally, configure who else can access this layer. (Hit <Enter> to skip) 
✅ Lambda layer folders & files updated:
amplify\backend\function\レイヤー名

Next steps:
Include any files you want to share across runtimes in this folder:
amplify\backend\function\レイヤー名\opt

"amplify function update <function-name>" - configure a function with this Lambda layer
"amplify push" - builds all of your local backend resources and provisions them in the cloud

うまくいったら、プッシュして反映する。

今GraphQLも編集中でエラーが起こったりするので、functionのみで。

amplify push function -y

しばらく待つと処理が終わる。

AWSのマネジメントコンソールからLambdaを開きAdditional resourcesにあるレイヤ―見る。

 

レイヤーはAdditional resourcesから
登録されてた。

感想

サクッとできるは正義でした。

以降はLambdaを触って開発進めていきます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする