💭

AWS LambdaでLambda関数のセットアップする

2021/02/07に公開

はじめに

node.jsを使ってAWS LambdaでAPIを作りたいのでnode.jsとLambda関数のセットアップの勉強をする。

概要

■Lambda関数で使用できる言語
■node.jsとは
■Lambda関数しくみ
■Lambda関数のセットアップをする

をまとめた!(>_<)

■Lambda関数で使用できる言語

AWS LambdaでLambda関数を作成するのには、Java、Go、PowerShell、Node.js、C#、Python、Ruby の言語を使用することができる。
今回はnode.jsを使ったLambda関数を作れるように勉強しようと思う。

■node.jsとは

Node.jsはサーバサイドで動くJavaScriptである。
JavaScriptはもともとブラウザ上で動くために開発されたプログラミング言語だ。ブラウザ上で、ページに動きを追加するのがメインのお仕事である。
JavaScriptはブラウザ上だけではなく、サーバサイドでも構築することができる。
node.jsとはサーバサイドJavaScriptと思っていい。
そしてNode.jsはサーバサイドでJavaScriptを実行できるようにしてくれるプラットフォームになる。JavaScript実行環境である。

なぜJavaScriptなのか
元々Webデザイナーの人たちが日常的に使用しているJavaScriptであるが、サーバサイドプログラムもJavaScriptで書けると効率的なので開発されたらしい('_')でもやっぱり知識がないと書きこなせないらしい。

■Lambda関数しくみ

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/nodejs-handler.html
Lambda 関数にはハンドラーというユーザーの要求に対応するためのプログラムモジュールがあり、ハンドラー(プログラムモジュール)によってイベントが処理される。
関数を呼び出すと、プログラムによってハンドラー(プログラムモジュール)が実行される。ハンドラーによってレスポンスが終了するか、レスポンスが返ったら、別のイベントを処理できるようにも設定することができる。

■Lambda関数のセットアップをする

Lambda関数を作成するのにまずは関数自体のセットアップを行う。

AWSトップページでAWS Lambdaを検索。この画面から

関数の作成をクリック。

一から作成。

ここでLambda関数に関する基本的な情報を設定していく。ここではnode.jsの JavaScripで関数は作成しない。
関数名
関数の目的を名前として名前入力する。
ランタイム
関数を記述する言語を選択する。
アクセス権限
関数のアクセス権限管理をする。
ロールでLambda関数にログのアップロードや他のAWSサービスへのアクセス権限を与える。
実行ロールにポリシーを追加することにより、DynamoDBテーブルなどの他のサービスへのアクセスを許可する。
Lambda関数に対する実行ロールに加えて、関数には他のAWSサービスからの呼び出し権限を与える関数ポリシーもある。関数にトリガーを設定する場合、トリガーの種類に応じて、トリガーリソースロール、関数実行ロール、または関数ポリシーに権限を追加することがある。

AWS Lambdaでは色んなLambda関数の実行形式があり、
https://zenn.dev/suiudou/articles/f13565873fa269
Lambda自身がイベントを読み取れる場合
Lambdaが他のサービスのデータを読み込み、イベントを作成して、関数を実行する。
Lambda 関数を同期的に実行できる場合
「関数を同期的に実行する場合」では、Lambda関数を「関数を同期的に実行するサービス」が直接実行する。
Lambda関数のポリシーで他のサービスのアクセス許可を設定してから、イベントを生成し、関数を呼び出すように「関数を同期的に実行するサービス」でLambda関数を実行できるよう設定する。
Lambda 関数を非同期的に実行する場合
「非同期対応で実行するサービス」の場合、「非同期対応で実行するサービス」側にデータを受け入れる準備ができているか分からないのでイベント発生時、レスポンスを「非同期対応で実行するサービス」側に送信するが、エラーが発生した場合再送信される方式で関数が実行される。

など色んな実行形式で関数を実行する場合があるので色んな権限管理をする必要があるのだ。

デフォルトのロールは、後でトリガーを追加するときにもカスタマイズできる。
詳細設定
コード署名オプション

コード署名の設定
コード署名の設定を使用して、関数のコード署名を有効にします。コード署名を使用すると、コードが承認されたソースによって署名されており、署名後に変更されていないこと、コード署名の有効期限が切れていないこと、または取り消されていないことを確認することができます。コード署名設定は、関数で許可される署名プロファイルと署名検証ポリシーを定義します。

https://aws.amazon.com/jp/blogs/news/new-code-signing-a-trust-and-integrity-control-for-aws-lambda/
コード署名とは、コードが変更されていないこと、信頼できる発行元からのものであることを証明することらしい。
ネットワーク
VPCオプション

Lambda 関数にネットワークアクセスを提供するには、Virtual Private Cloud (VPC)、VPC サブネット、および VPC セキュリティグループを指定します。ユーザーアクセス許可で VPC を設定する必要がある場合を除き、VPC 設定はオプションです。

すべてのLambda関数は、デフォルトのシステム管理された仮想プライベートクラウド(VPC)内で安全に動作します。しかし、カスタム VPC 内のリソースにアクセスするように Lambda 関数を設定することもできます。カスタムVPCは、データベースやキャッシュインスタンス、内部サービスなどのリソースのプライベートネットワークを定義します。
IAMのパーミッションで、VPCに接続する関数の作成のみが許可されている場合は、関数を作成する際にVPCの詳細を設定する必要があります。IAM権限でVPCに接続していない機能の作成が許可されている場合は、機能を作成した後にVPCの構成を追加することができます。

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-vpc.html

カスタムしたVPCの特定のリソース、データベース、キャッシュインスタンス、または内部サービスなどをLambda関数に接続する設定をすることができるそうだ。

ここまでで関数のセットアップが設定が完了する。

まとめ

次はnode.jsで関数の作成!(>_<)

Discussion