AWS Lambdaで簡単に定期実行処理を作成するには?

この記事でわかること
AWS Lambdaとは?
AWS Lambdaとは、AWSのサービスの1つで、サーバーレスにプログラムを実行してくれるサービスです。
プログラム処理や定期実行処理などを実施したい場合、サーバーを用意して、特定のプログラム言語をインストールして・・・などと前準備に時間や費用がかかってしまいます。しかしAWS Lambdaなら事前準備不要でプログラム処理や定期実行処理が簡単にできます。
AWS Lambdaのメリット
AWS Lambdaは「環境構築が不要」「価格が安い」「実行サーバーのスペックを気にする必要がない」といったメリットがあげられます。
クラウドサーバーやオンプレサーバーで、プログラム処理や定期実行処理を1から作った経験がある方なら、この3つのメリットは大変嬉しいサービスでしょう。AWS Lambdaを上手に利用して快適にプログラム処理や定期実行処理を作っていきましょう。
AWS Lambdaは環境構築が不要
AWS Lambdaはサーバーレスコンピューティングサービスなため、環境構築が不要なサービスです。
使用できる言語は、Java、Go、PowerShell、Node.js、C#、Python、Rubyで、これらの言語で書かれたプログラム処理は環境構築不要で実施が可能となります。
AWS Lambdaは価格が安い
AWS Lambdaの値段は、リクエスト数と処理実行時間によって決定されます。
例えば東京リージョンだと、リクエスト100万件あたり0.20USD、処理実行時間についてはGB-秒あたり 0.0000166667USDという値段です。また無料枠については、1か月ごとに100万件、また40万GB-秒のコンピューティング時間となっています。
ちょっとしたプログラム処理や定期実行処理を実施したい場合は、AWS Lambdaだとかなり安い費用で運用することができるのがわかります。
AWS Lambdaは実行サーバーのスペックを気にする必要がない
AWS Lambdaは自動スケーリングという機能を持っており、プログラム実行環境のスペックを気にする必要はありません。
例えば、定期実行処理が同時刻に何度もリクエストされる場合であっても、リクエスト受信の回数に合わせて自動的に対応をしてくれます。もちろんリクエスト回数に上限はありません。
その結果、私たちユーザーはサーバーのスペックを気にすることなくプログラム処理を実施することができます。
CloudWatch Eventsとは?
CloudWatch Eventsとは、定義されたルールに従って、AWSのサービスを実行することができるサービスです。AWS Lambdaでの定期実行処理は、CloudWatch Eventsを利用することで実現できます。
CloudWatch Eventsでは、イベント、ルール、ターゲットの3つを設定する必要があります。
CloudWatch Eventsのイベントとは?
CloudWatch Eventsのイベントとは、AWSの環境の変化を指します。Cronのように特定の時刻になった時にイベントを発火させることができます。
CloudWatch Eventsのルールとは?
CloudWatch Eventsのルールとは、 イベントを振り分けるためのルールです。ルールによって、検出されたイベントは処理のためにターゲットに振り分けます。また、ターゲットは複数個設定することも可能です。
CloudWatch Eventsのターゲットとは?
CloudWatch Eventsのターゲットとは、 ルールによって振り分けられたイベントを実施するAWSサービスのことです。
設定できるターゲットは、Amazon EC2、AWS Lambda、Amazon Kinesis Data Streams、Amazon Kinesis Data Firehose、Amazon CloudWatch Logs、Amazon ECS、Systems Manager、AWS Batch、Step Functions、CodePipeline、CodeBuild、Amazon SNS、Amazon SQSです。
CloudWatch Eventsの料金は?
CloudWatch Eventsの値段は、イベントの件数によって決定されます。
例えば東京リージョンだと、イベント100万件あたり1.00USDという値段で、初期費用や最低利用料金は不要です。
AWS LambdaとCloudWatch Eventsで定期実行処理を作成しよう
ここからは、AWS LambdaとCloudWatch Eventsで定期実行処理を作成する手順を解説します。
作成方法をおさえて、作業の効率化を目指しましょう。
AWS Lambda関数を作成してみる
AWS Lambdaで定期実行処理を試すために、まずは、AWS Lambdaを作成しましょう。
AWS ConsoleからAWS Lambdaを選択します。関数を選択し、関数の作成ボタンを押します。その後1から作成を選択し、適当な関数名を入力します。
また関数を記述する言語としてランタイムはRuby 2.7を選択します。特に他の設定は変更せず、画面下部の関数の作成をクリックすると、AWS Lambdaが作成されます。
関数コードを記述する
関数コードに、実施したい定期処理を記述します。今回は、簡単にHello Worldを返却する処理を記述します。
index.jsを選択し、以下のコードを入力します。
1
2
3
4
5
6
7
8
9
10
|
exports.handler = async (event) => {
// TODO implement
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};
|
関数コードをテストしてみる
関数コードの記述が終了したら、関数コードのテストをしてみましょう。
関数コードの上部にあるTestを選択し、任意のテストイベントを作成します。今回は、新しいテストイベントの作成を選択し、hello-worldで作成します。
再度Testを選択し、テストが実行されることを確認します。テスト結果が、Execution Resultとして表示されます。以下のようになっていれば成功です。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
Response
{
"statusCode": 200,
"body": "\"Hello from Lambda!\"
}
Function Logs
START RequestId: 37781372-cd51-4540-801a-2a991b280ba9 Version: $LATEST
END RequestId: 37781372-cd51-4540-801a-2a991b280ba9
REPORT RequestId: 37781372-cd51-4540-801a-2a991b280ba9 Duration: 12.82 ms Billed Duration: 13 ms Memory Size: 128 MB Max Memory Used: 66 MB
Request ID
37781372-cd51-4540-801a-2a991b280ba9
|
CloudWatch Eventsを作成する
無事にAWS Lambdaが作成できたので、CloudWatch Eventsを作成します。
トリガーを追加を選択し、Amazon EventBridge (CloudWatch Events)を選択します。ルール名、ルールの説明は任意に設定し、ルールタイプはスケジュール式を選択します。スケジュール式はrate(5 minutes)と入力してみましょう。毎分5分ごとという意味です。
最後に画面下部の追加を選択します。これで無事に定期実行処理のトリガーの作成が完了しました。
定期実行されていることを確認
AWS Lambdaが先ほど設定したCloudWatch Eventsで、5分間隔で定期実行されているかを確認します。
作成したAWS Lambdaを選択し、モニタリングを選択します。CloudWatch メトリックスより、Duration、Error count and success rateより5分感覚で処理が実行されていれば成功です。また、CloudWatchのログを表示から、ログも確認することができます。
定期実行処理はAWS Lambdaで作ろう!
ちょっとしたプログラム処理や定期実行処理は、AWS LambdaとCloudWatch Eventsで簡単に作成できることがわかりました。また値段もかなり抑えて作成することが可能です。プログラム処理や定期実行処理は積極的にAWSで作成していきましょう。
Search キーワード検索
Popular 人気の記事
-
AWS EBSとは?8つの特徴とEBSボリュームについても解説
公開: 更新: -
AWSのT2とT3の違いとは?用途に合った選択をしよう!
公開: 更新:
reccomended おすすめ記事
-
AWSエンジニアの将来性は?年収と必要なスキル6つをご紹介!
公開: 更新:
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
通信キャリア向け基盤構築/東京都渋谷区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/在宅ワーク
月給65万~65万円東京都渋谷区(神泉駅) -
各種対応/東京都新宿区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給60万~60万円東京都新宿区(高田馬場駅) -
要件定義、構築/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給60万~60万円東京都千代田区(飯田橋駅) -
運用構築/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給56万~56万円東京都千代田区(飯田橋駅) -
監視システムの保守、更改/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給55万~55万円東京都千代田区(神保町駅) -
各種対応/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】
月給60万~60万円東京都千代田区(虎ノ門駅)