目次
サーバーレスとDevOpsに注力中。AWSを使った効率的なインフラ構築が得意です。
AWS Lambda のトリガーに CloudWatch の定期実行イベントを設定することで、cron のように Lambda 関数を定期実行できます。利用例として、ここでは SQS にメッセージを一つだけ登録する処理を Lambda 関数で定期実行してみます。複数のインスタンスで動作する何らかのアプリケーションがバッチ処理を行う際、SQS からメッセージを取得できたインスタンス以外では処理をスキップするように実装することで、重複実行を回避しつつバッチ処理アプリケーションを冗長化できます。
Lambda 関数がメッセージを登録する SQS の作成
Create New Queue をクリックします。
Queue Name を設定します。SQS におけるメッセージは、取得された後 Default Visibility Timeout の間だけ他のクライアントから参照できなくなります。その間にメッセージを取得したクライアントは SQS からメッセージを削除する必要があります。
Lambda 関数が利用する IAM ロールの作成
Create Role をクリックします。
Lambda 権限が付与されたロールを作成します。
AmazonSQSFullAccess
を追加します。
ロール名を設定します。
Lambda 関数の登録
Create a function をクリックします。
Blueprints は利用せずに Author from scratch をクリックします。
Lambda 関数名および先程作成した IAM ロールを設定します。
関数を以下のように編集して Save します。
'use strict';
const AWS = require('aws-sdk');
const sqs = new AWS.SQS();
const QUEUE_URL = 'https://sqs.ap-northeast-1.amazonaws.com/123412341234/my-queue-20171007';
exports.handler = function(event, context, callback) {
var params = {
MessageBody: 'test test',
QueueUrl: QUEUE_URL
};
// SQS にメッセージを送信します。
// http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html#sendMessage-property
sqs.sendMessage(params, function(err, data) {
if (err) {
console.log(err);
}
else {
console.log(data);
}
});
};
Test を実行すると SQS にメッセージが一つ追加されます。
CloudWatch イベントの登録
Create rule をクリックします。
一分毎に Lambda 関数を実行するように設定します。ここで直接 SQS にメッセージを追加することもできますが、Lambda 関数を介することで SQS が空でない場合など処理の分岐が柔軟に行えます。
記事の執筆者にステッカーを贈る
有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。
さらに詳しく →Feedbacks
ログインするとコメントを投稿できます。
関連記事
- AWS EC2 インスタンスの選定方法準仮想化と完全仮想化 AWS のインスタンスタイプが準仮想化と完全仮想化のどちらの仮想化技術を採用したハードウェアであるかによって、使用できる AMI (OS) が異なるのは以下の理由によります。 準仮想化 ParaVirtualization (PV) において OS は自分が仮想化用のハードウェア上で動作していることを知っています。つまり仮想化用にカスタマイズされた専用の OS が必要になりま...
- OpenVPN で二つの VPC をつなぐための設定インターネット VPN (Virtual Private Network) には二拠点間の通信を暗号化する方式によって IPsec-VPN や SSL-VPN などがあります。OpenVPN は SSL-VPN の実装のひとつです。AWS VPC を二つ用意してそれらを OpenVPN で接続してみます。 VPC の構成 myvpc-1 (10.1.0.0/16) mysubnet-1-1 (10...
- Windows Server EC2 インスタンスへの CAL インストールWindows サーバを AWS EC2 インスタンスとして起動した後は、RDP 接続が必要となります。RDP 接続を行なうためには Remote Desktop Services (RDS) ライセンスが必要となります。 Windows Server のライセンスは、管理用途の RDS 接続を許可しています。その際に RDS ライセンスは不要です。ただし、[同時接続数が 2 という制限があります...
- AWS Lambda の基本的な使い方AWS Lambda はイベントドリブンな「関数」を登録できるサービスです。例えば S3 に画像がアップロードされたときにサムネイル用のサイズに加工する処理が記述された関数を登録できます。基本的な使い方をまとめます。 事前準備 関数の登録はブラウザで AWS コンソールにログインして行うこともできますが、本ページでは AWS C
- AWS 落穂拾い (Data Engineering)Kinesis Kinesis Streams データは 3 AZ にレプリケーションされます。Amazon Kinesis Data Streams FAQs 24 時間 (既定値) から 1 年までデータ保持できます。[Changing the Data Retention Period](https://docs.aws.amazon