2021/09/21

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を選択し、以下のコードを入力します。


exports.handler = async (event) => {
    // TODO implement
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    };
    return response;
};


関数コードをテストしてみる

関数コードの記述が終了したら、関数コードのテストをしてみましょう。

関数コードの上部にあるTestを選択し、任意のテストイベントを作成します。今回は、新しいテストイベントの作成を選択し、hello-worldで作成します。

再度Testを選択し、テストが実行されることを確認します。テスト結果が、Execution Resultとして表示されます。以下のようになっていれば成功です。


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で作成していきましょう。

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】