こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- Python・Ruby・Node.js等で作成した自作関数をAWS上で自動実行できるようにしたい。
- AWS Lambdaの利用方法が知りたい。
AWS Lambdaとは
AWS Lambdaとは、自身で作成した関数をリクエスト(イベント発生)の都度、自動で実行できるようにするサーバーレスコンピューティングサービスです。
Lambdaは、特定のイベントをトリガーとして、ランタイムがセットアップされたコンテナ内で関数を実行します。以下、具体的な特徴を見ていきましょう!
- サーバーのプロビジョニングや管理をすることなく、アプリケーションやバックエンドサービスのコードが実行可能。
- 関数をLambdaに保存すると、その関数がリクエストやイベントをトリガーとして自動実行できる。
- Java、Go、PowerShell、Node.js、C#、Python、Rubyをネイティブとしてサポートしている。その他の言語は Runtime APIを別途用いることで対応可能。
- 定期的なダウンタイムはなく、可用性が高い。
- 最長15分まで関数の実行が可能。
AWS Lambdaの利用料金
Lambdaはリクエストとコードを実行するために要した処理実行時間(期間)でコストが発生します。
アーキテクチャ | 期間(GB-秒)あたり | リクエスト(100万件あたり) |
---|---|---|
x86 料金 | 0.0000166667USD | 0.20USD |
Arm 料金 | 0.0000133334USD | 0.20USD |
期間は関数に割り当てるメモリ量により変動します。詳しくは上記のAWS公式HPの料金表をご覧下さい。
Lambda関数の作成・実行手順
本記事では下記の手順に従い、Lambda関数を作成・実行します。
- AWSマネジメントコンソールにログインし、AWS Lambdaのコンソールを開く
- AWS Lambdaコンソール右上の「関数の作成」をクリック
- 関数作成に必要な情報を入力し「関数の作成」をクリック
- デフォルトで作成された関数の動作テスト
- オリジナルの関数を作成
- オリジナルの関数の動作テスト
- 「トリガーを追加」を選択し、関数を実行するイベントを定義
【実践】Lambda関数の作成
AWSマネジメントコンソールにログインし、AWS Lambdaのコンソールを開く
AWSマネジメントコンソールにログインし、「AWS Lambda」と検索し、Lambdaコンソールを開きます。
AWS Lambdaコンソール右上の「関数の作成」をクリック
Lambdaコンソール左部の「関数」をクリックすると、関数一覧が表示されます。
画面右上の「関数の作成」ボタンがクリックしましょう。
関数作成に必要な情報を入力し「関数の作成」をクリック
この画面では関数作成に必要な情報を入力していきます。以下、入力事項を1つずつ見ていきましょう。
関数の作成オプション
デフォルトで作成されるLambda関数の形式を選択します。今回は「1から作成」を選択し、後述の関数を作成していくこととします。
1から作成 | Hello worldを出力するシンプルな関数をデフォルトとして作成 |
設計図を使用 | AWSに用意された一般的ユースケース用のサンプルコードとデフォルトの設定値をもとLambdaアプリケーションを構築 |
コンテナイメージ | 関数にデプロイするコンテナイメージ選択 |
Serverless Application Repository参照 | AWS Serverless Application RepositoryからLambdaアプリケーションでデプロイ |
基本情報の入力
関数名 | 関数名を入力 |
ランタイム | 関数の記述に使用する言語選択 |
アーキテクチャ | 関数コードに必要な命令セットアーキテクチャ選択 |
アクセス権限 | 実行ロールにポリシーを追加すると、DynamoDBやS3などのダウンストリームリソースへのアクセスが可能 |
詳細設定 | コード書面の有効化やネットワークを有効化設定 |
上記基本情報入力後、画面右下の「関数の作成」をクリックしましょう。
デフォルトで作成された関数の動作テスト
10秒程待機すると、作成された関数が画面に表示されます。
デフォルトで作成されたLambda関数の確認
画面中央左部の「コード」タグを選択すると、コードソースが確認できます。
前述の「関数の作成オプション」で指定した関数(lambda_function)がデフォルトで作成されています。
以下この関数の動作テストを行なってみましょう。
デフォルトで作成されたLambda関数の動作テスト
「テスト」タグを選択し、右部の「テスト」ボタンをクリックします。
関数実行時にエラーが出なければ、画面上に「成功」と表示されます。
また、ログをクリックすると関数実行による出力結果等が確認できます。
オリジナルの関数を作成
画面中央左部の「コード」タグを再び選択して、オリジナルの関数を作成していきます。
例えば上図の例では、デフォルトで作成されたlambda_function.pyと同じディレクトリにexecute.pyという自作スクリプトを新たに用意しました。
加えてlambdas_function.pyを開き、execute.pyに記述したオリジナル関数をインポート・実行できるよう修正しています。
関数作成後は右上に表示されるDeploy(デプロイ)をクリックしましょう。
オリジナルの関数の動作テスト
関数の作成およびデプロイが完了したら、再び動作テストを行ないエラーがでないか確認しましょう。
【実践】Lambda関数の実行
前述までで関数の作成が完了しました。後述では関数の実行形式について解説していきます。
「トリガーを追加」を選択し、関数を実行するイベントを定義
関数を自動実行するためのトリガーを設定します。
関数の概要部分にある「トリガーの追加」をクリックしましょう。
トリガーの設定画面に遷移すると、検索欄から関数実行のトリガーを指定できます。
指定したトリガーに対して設定値を入力することで、関数が自動実行できるようになります。
【参考】Lambdaの代表的なトリガー
LambdaはAWSのサービスから同期的・非同期的に呼び出して関数実行ができます。
Lambda関数を同期的に呼び出すサービス
同期的にLamdaを呼び出す場合、関数は直接実行されます。以下AWSで代表的なLamdaの呼出元サービスを記載します。
- Amazon Alexa
- Amazon API Gateway
- Amazon Cognito
- Amazon CloudFront
- Amazon Lex
- Amazon Kinesis Data Firehouse
- AWS Step Functions
- Elastic Load Balancing
Lambda関数を非同期的に呼び出すサービス
非同期で呼び出す場合、呼出元にはリクエストの実行結果は渡されず、リクエストの実行に際して正常動作したかのステータスのみ返却されます。以下非同期的な呼出元サービスを以下に示します。
- Amazon Simple Storage Service(S3)
- Amazon Simple Notification Service
- Amazon Simple Email Service
- AWS CloudFormation
- AWS CodeCommit
- AWS Config
- AWS IoT Events
- Amazon CloudWatch Log
- Amazon EventBridge
以下、トリガーとしてよく用いられるサービスを抜粋して紹介します。
Amazon EventBridge|関数のスケジュール設定・定期実行が可能
Amazon EventBridgeはイベントを使って多様なアプリケーションを接続できるようにするサーバーレスなイベントパスサービスです。
EventBridgeを通じて、AWS上でのアクション(ステータス変更などシステムの状態が変わること)やAWS内外のサービス同士を接続し、イベント駆動型アプリケーションを容易に実装することができます。
イベント実行条件や一定のスケジュール設定のもと関数の定期実行したい場合、Lambdaと合わせてEventBridgeが用いられます。
Amazon API Gateway|関数のスケジュール設定・定期実行が可能
Amazon API Gatewayは、REST、HTTPおよびWebSocket API の作成、公開、保守および保護するためのサービスです。
API Gatewayはクライアントとバックエンド間のゲートウェイとして機能します。
API GatewayをLambdaと合わせて用いることで、クライアントはAPIリクエスト経由で関数実行できるようになります。
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら