AWS SDK for Node.jsを用いたSQSの操作

AWS Lambda を使ってお手軽に SQS を操作するために、普段はあまり使わないが Node.js 経由で試してみることにした。本当はJavaのほうが慣れているし、好きなのですがいかんせん Lambda にいちいち jar をアップロードするのは非常に厳しい気持ちになるので、まあたまには…。

自分のためのメモ書きなので、各位はドキュメントを見るべきだと思います
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS.html

SQS へのメッセージの送信

'use strict';
const AWS = require('aws-sdk');
const SQS = new AWS.SQS({ apiVersion: '2012-11-05' });
const Lambda = new AWS.Lambda({ apiVersion: '2015-03-31' });

const QUEUE_URL = '..........';

exports.handler = (event, context, callback) => {
    var params = {
        MessageBody: JSON.stringify({"key": "value"}), /* required */
        QueueUrl: QUEUE_URL, /* required */
        DelaySeconds: 0,
    }
    SQS.sendMessage(params, function(err, data) {
        if (err) {
            console.log(err);
        } else { 
            console.log(data)
        }
    });
};

SQS メッセージの受信

exports.handler = (event, context, callback) => {
    const params = {
        QueueUrl: QUEUE_URL,
        MaxNumberOfMessages: 10,
        VisibilityTimeout: 10
    };
    SQS.receiveMessage(params, (err, data) => {
        if (err) return callback(err);
        const promises = data.Messages.map((message) => {
            console.log(message);
        });
    });
};

SQS 受信メッセージの削除

exports.handler = (event, context, callback) => {
    const params = {
        QueueUrl: QUEUE_URL,
        MaxNumberOfMessages: 10,
        VisibilityTimeout: 10
    };
    SQS.receiveMessage(params, (err, data) => {
        if (err) return callback(err);
        const promises = data.Messages.map((message) => {
            console.log(message);

            var params = {
                QueueUrl: QUEUE_URL,
                ReceiptHandle: message["ReceiptHandle"]
            };
            SQS.deleteMessage(params, function(err, data) {
                if (err) console.log(err, err.stack);
                else console.log(data);
            });
        });
    });
};

Node.js 書くのかったるい…

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください