[AWS] Exploitez SQS à partir du SDK (envoi / réception) [Python] [Node.js]

J'utilise souvent Lambda x SQS

Comme SQS est souvent utilisé, j'écrirai un échantillon d'envoi et de réception. Cet article a une grande signification en tant que mémorandum à moi.

supposition

Recevoir un message de SQS

Obtenir des messages de SQS à l'aide de Python

sample


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

from __future__ import print_function
import ConfigParser
import boto3
import json

#Lire le fichier de configuration
ini = ConfigParser.SafeConfigParser()
ini.read("./config.ini")

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

#Nombre maximum de messages à récupérer
limit = 100

#Corps de traitement
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 ============')


#Processus d'acquisition de message SQS
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

Vous pouvez recevoir de SQS si vous connaissez l'URL.

Récupérer des messages de SQS à l'aide de node.js

sample


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

//Nombre maximum de messages à récupérer
var limit = 100;

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

//Traitement principal
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"
    }
}

J'ai écrit le côté nœud avec json.


Envoyer un message à SQS

Envoyez maintenant un message à SQS

Envoyer un message à SQS en utilisant Python

sample


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

from __future__ import print_function
import ConfigParser
import boto3


#Lire le fichier de configuration
ini = ConfigParser.SafeConfigParser()
ini.read("./config.ini")

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


#Corps de traitement
print('Loading function...')
def lambda_handler(event, context):
    print('========== FUNCTION START ==========')

    message = 'hogeeeeeeeeee'
    send_sqs_message(sqsUrl, message)

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


#Traitement de la transmission des messages SQS
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

Envoyer un message à SQS en utilisant node.js

sample



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

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

//Traitement principal
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();
        }
    });

};


__ Comme vous pouvez le voir, je ne suis pas bon au nœud. __

Au fait, pourquoi deux langues? Parce que j'utilise les deux

Recommended Posts

[AWS] Exploitez SQS à partir du SDK (envoi / réception) [Python] [Node.js]
Appeler Polly à partir du kit SDK AWS pour Python
Exploitez Filemaker depuis Python
Faites fonctionner le neutron de Python!
Faire fonctionner LXC depuis Python
Utiliser un écran connecté I2C à partir de Python
Utilisez DynamoDB à partir de Python comme SQL.
Remarque sur boto3 (AWS SDK for Python)
Recevoir des données textuelles de mysql avec python
Exploitez le stockage d'objets cloud de Sakura à partir de Python
J'ai créé une bibliothèque pour faire fonctionner la pile AWS CloudFormation à partir de CUI (Python Fabric)
J'ai créé une image Docker qui peut appeler FBX SDK Python à partir de Node.js
Créez des paramètres dans terraform pour envoyer des messages depuis AWS Lambda Python3.8 vers Slack
Envoyer un message de Slack à un serveur Python
Envoyer des données depuis Raspberry Pi à l'aide d'AWS IOT