[AWS] SQS über SDK betreiben (Senden / Empfangen) [Python] [Node.js]

Ich benutze oft Lambda x SQS

Da SQS häufig verwendet wird, schreibe ich ein Beispiel für das Senden und Empfangen. Dieser Artikel hat eine große Bedeutung als eigenes Memorandum.

Annahme

Nachricht von SQS empfangen

Erhalten Sie Nachrichten von SQS mit Python

sample


# -*- coding: utf-8 -*-

from __future__ import print_function
import ConfigParser
import boto3
import json

#Konfigurationsdatei lesen
ini = ConfigParser.SafeConfigParser()
ini.read("./config.ini")

# sqs
sqs = boto3.client('sqs')
sqsUrl = ini.get("sqs", "url")

#Maximale Anzahl abzurufender Nachrichten
limit = 100

#Verarbeitungskörper
print('Loading function...')
def lambda_handler(event, context):
    print('========== FUNCTION START ==========')
    
    for cnt in range(0, limit):
        queMessage = get_sqs_message(sqsUrl)

        if queMessage is not None:
            if "Messages" in queMessage:
                receiptHandle = queMessage['Messages'][0]['ReceiptHandle']
                message = queMessage['Messages'][0]['Body']
                print('receiptHandle:' + str(receiptHandle))
                print('messageBody:' + str(message))
            else:
                print('no message')
                break
        else:
            ercnt += 1
            print("ERROR COUNT:" + str(ercnt))

    print('========== FUNCTION END ============')


#SQS-Nachrichtenerfassungsprozess
def get_sqs_message(sqs_url):
    url = sqs_url

    try:
        response = sqs.receive_message(
            QueueUrl=url,
        )

    except Exception as e:
        print('=====Error=====')
        print('get_sqs_message')
        print('ERROR:' + str(e))
        print('===============')
        return None

    return response

Sie können von SQS empfangen, wenn Sie die URL kennen.

Erhalten Sie Nachrichten von SQS mit node.js.

sample


//Modul laden
var aws = require('aws-sdk');
var sqs = new aws.SQS({region: 'ap-northeast-1'});

//Maximale Anzahl abzurufender Nachrichten
var limit = 100;

//URL von sqs
var ini = require('./config.json');
var url = ini.sqs.url.test

//Hauptverarbeitung
exports.handler = function (event, context) {
	var cnt = 0;
	var params = {
			QueueUrl: url
	};

	for (var i = 0; i < limit; i++) {
	cnt++;
			sqs.receiveMessage(params, function (err, data) {
					if (err) {
							console.log(err, err.stack);
					} else {
							if (data.Messages) {
									var messageBody = data.Messages[0].Body;
									var receiptHandle = data.Messages[0].ReceiptHandle;
									console.log(messageBody);
									console.log(receiptHandle);
							} 
					}
					if (cnt === limit) context.succeed();
			});
	}
};
    

config.json


{
  "sqs": {
    "url": {
      "test": "https://sqs.ap-northeast-1.amazonaws.com/************/hogehoge-test"
    }
}

Ich habe die Knotenseite mit json geschrieben.


Senden Sie eine Nachricht an SQS

Senden Sie nun eine Nachricht an SQS

Senden Sie mit Python eine Nachricht an SQS

sample


# -*- coding: utf-8 -*-

from __future__ import print_function
import ConfigParser
import boto3


#Konfigurationsdatei lesen
ini = ConfigParser.SafeConfigParser()
ini.read("./config.ini")

# sqs
sqs = boto3.client('sqs')
sqsUrl = ini.get("sqs", "url")


#Verarbeitungskörper
print('Loading function...')
def lambda_handler(event, context):
    print('========== FUNCTION START ==========')

    message = 'hogeeeeeeeeee'
    send_sqs_message(sqsUrl, message)

    print('========== FUNCTION END ============')


#SQS-Nachrichtenübertragungsverarbeitung
def send_sqs_message(sqs_url, send_message):
    url = sqs_url
    obj = send_message

    try:
        response = sqs.send_message(
            MessageBody = obj,
            QueueUrl = url,
            DelaySeconds = 0
        )

    except Exception as e:
        print('=====Error=====')
        print('send_sqs_message')
        print('ERROR:' + str(e))
        print('===============')
        return None

    return response

Senden Sie eine Nachricht mit node.js an SQS

sample



//Modul laden
var aws = require('aws-sdk');
var sqs = new aws.SQS({region: 'ap-northeast-1'});

//URL von sqs
var ini = require('./config.json');
var url = ini.sqs.url.test;

//Hauptverarbeitung
exports.handler = function (event, context) {
    var message = 'hogeeeeeeee';
    var params = {
        MessageBody: message,
        QueueUrl: url,
        DelaySeconds: 0
    };

    sqs.sendMessage(params, function (err, data) {
        if (err) {
          console.log(err, err.stack)
        } else {
            console.log(data);
            context.succeed();
        }
    });

};


__ Wie Sie sehen können, bin ich nicht gut im Knoten. __ __

Warum übrigens zwei Sprachen? Weil ich beides benutze

Recommended Posts

[AWS] SQS über SDK betreiben (Senden / Empfangen) [Python] [Node.js]
Rufen Sie Polly aus dem AWS SDK für Python auf
Bedienen Sie Filemaker von Python aus
Bedienen Sie Neutronen von Python!
Betreiben Sie LXC von Python aus
Bedienen Sie ein mit I2C verbundenes Display über Python
Betreiben Sie DynamoDB von Python aus wie SQL.
boto3 (AWS SDK für Python) Hinweis
Empfangen Sie Textdaten von MySQL mit Python
Betreiben Sie den Cloud-Objektspeicher von Sakura von Python aus
Ich habe eine Bibliothek zum Betreiben des AWS CloudFormation-Stacks über CUI (Python Fabric) erstellt.
Ich habe ein Docker-Image erstellt, das FBX SDK Python von Node.js aus aufrufen kann
Erstellen Sie Einstellungen in Terraform, um Nachrichten von AWS Lambda Python3.8 an Slack zu senden
Senden Sie eine Nachricht von Slack an einen Python-Server
Senden Sie Daten von Raspberry Pi mit AWS IOT