LoginSignup
7

More than 1 year has passed since last update.

Node.jsでAWS Lambdaを始める前に知っておきたい事

Last updated at Posted at 2018-06-10

実行ロール

Lambda関数で使用するawsサービスの設定です。
ロール自体の設定は、「IAM」で行います。
DynamoDBやS3を使用するLambda関数では、実行ロールに当該サービスを含めましょう。

スクリーンショット 2018-06-10 15.05.29.png

ログ

Lambdaの実行ログは、CloudWatchで閲覧できます。

タイムアウト時間

Lambda関数はデフォルトで3秒のタイムアウト時間が設定されています。
時間がかかる処理を実行する場合にはタイムアウト時間も気にしましょう。
スクリーンショット 2018-06-10 14.58.03.png

node modulesを使用する場合

デフォルトで使用できるモジュールはhttpクライアントの"http"など少ないです。
モジュールを使用するためには、ローカルでデプロイパッケージを作成し、zip化してアップロードする手順が必要です。

スクリーンショット 2018-06-10 15.22.57.png

参考
https://qiita.com/makopo/items/b738e32081f8cae75fe7

バージョンと非同期処理

特別な事情がなければasync awaitが使用できる8.10を推奨します。

スクリーンショット 2018-06-10 15.24.26.png

使用するモジュールも、async awaitに対応したものを使用するようにしましょう。
例えば、Lambdaでデフォルトで使用可能な「http」モジュールはasync await非対応です。httpクライアントとしては、「node-fetch」がasync awaitに対応していることを確認しています。
https://www.npmjs.com/package/node-fetch

非同期処理/async awaitってなに?って方向けにざっくり説明します。
javascriptでは、実行速度を向上するために、db参照やhttpリクエスト等の時間がかかる処理の終了を待たずに次の処理を行います。
これは時に上から順番にコードが実行されないという実装者としては悩ましい事態も引き起こします。
関数をasync functionにして、呼び出し時にはawaitを付与することにより、関数の実行終了を待つことができます。
以下に簡単なサンプルコードを示します。


async function jikanKakaruShori(){
  console.log("時間かかる処理")
}

async function suguOwaruShori(){
  console.log("すぐ終わる処理")
}

async function exec(){
  await jikanKakaruShori()
  await suguOwaruShori()
}

exec()


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
7