#はじめに
先日、業務でAWSのLambdaというサービスを使うことになり、
それについて色々調べてみました。
今回は、備忘としてLambda関数の設定項目に関する説明を記述していこうかなと思います。
##Lambdaとは
Lambdaとはどういったサービスなのか。
AWSの公式ページには以下のように記載されていました。
AWS Lambda はサーバーレスコンピューティングサービスで、サーバーのプロビジョニングや管理、ワークロード対応のクラスタースケーリングロジックの作成、イベント統合の維持、ランタイムの管理を行わずにコードを実行できます
わざわざサーバを構築せずとも。色々なことを実行できますよー的な感じですね。
Lambda上に実行したい処理(プログラム)を定義することにより、
指定したタイミングで実行することができます。
Lambdaを利用して様々なことができる訳ですが、
どんなことが出来るかは各自で調べていただけると幸いです。。
##Lambdaの設定
本題のLambdaで設定できる内容について記載していこうと思います。
なお、本記事では関数の設定項目について記載しています。
###関数名
その名の通り、関数の名前を指定します。
半角英数字、ハイフン、アンダースコアのみを使用でき、スペースは使用できません。
###ランタイム
関数の記述に使用する言語を選択します。
コンソールコードエディタは Node.js、Python、および Ruby のみをサポートします。
###実行ロール
関数のアクセス権限を定義するロールを選択します。以下の3つから選択可能です。
・基本的な Lambda アクセス権限で新しいロールを作成
・既存のロールを使用する
・AWS ポリシーテンプレートから新しいロールを作成
###説明
関数の説明を入力することができます。
###メモリ
作成する関数には、設定したメモリに比例する CPU が割り当てられます。
メモリを 128 MB~10240 MB の間で設定します。
指定したメモリにより料金が変動します。デフォルトは128MBです。
###タイムアウト
関数が停止するまでに許可される実行時間。
デフォルトは 3 秒です。 許容されている最大値は 900 秒 です。
###トリガー
トリガー設定を行うと別のサービス(API Gatewayなど)での、
イベントの発生をきっかけに処理を行うことができます。
###送信先
呼び出しレコードを別のサービスに送信するように Lambda を設定することもできます。Lambda は、非同期呼び出しに対して以下の送信先をサポートしています。
・Amazon SQS – 標準 SQS キュー。
・Amazon SNS – SNS トピック。
・AWS Lambda – Lambda 関数。
・Amazon EventBridge – EventBridge イベントバス。
呼び出しレコードには、JSON 形式のリクエストとレスポンスに関する詳細が含まれます。
処理に成功したイベント用と、
すべての処理試行に失敗したイベント用に別々の送信先を設定できます。
###環境変数
環境変数を使用すると、コードを更新せずに関数の動作を調整できます。
環境変数は、関数のバージョン固有の設定に保存される文字列のペアです。
###タグ
タグは、AWS リソースに割り当てるラベルです。
各タグは、キーとオプションの値で構成されます。
タグを使用して、リソースを検索およびフィルタリングしたり、
AWS コストを追跡したりできます。
###同時実行
Lambdaを1秒間に同時実行することができる回数を指定します。
デフォルトは1000回になっています。
例えば、同時実行が100だとします。
3秒かかる処理を1秒ごとに50回実行したとすると、以下のようになります。
1秒目:同時実行数は、50回
2秒目:1秒目に実行された50回+2秒目から実行された50回
3秒目:1秒目に実行された50回+2秒目から実行された50回+3秒目からの50回
こと時、2秒目までは同時実行数100回でも足りますが、
3秒目には1秒間150回の要求が来ているため、エラーが返されます。
###コード書名
コード署名を使用して、未検証コードのデプロイを制限します。
コード署名プロファイルを作成するには、次を参照してください。
###イベントの最大有効期間(非同期処理)
未処理のイベントをキューに保持する最大時間。
###再試行(非同期処理)
関数がエラーを返すときに再試行する最大回数。
###デッドレターキューサービス(非同期処理)
非同期呼び出しから Amazon SQS キューまたは Amazon SNS トピックに未処理のイベントを送信できます。
#さいごに
以上になります。
もう少し設定項目はありそうでしたが、
今回は考慮する必要がない設定項目だったので記載しておりません。。。
もし気が向いたら追記しておこうと思います。
いつかは、LambdaからDynamoDBにデータを書き込むまでの記事を作成したいな。
もしよかったらそちらもご覧ください。