Java-программа AWS SNS для подписки

  • Я публикую сообщение String как полезную нагрузку сообщения, используя уведомление SNS от Raspberry Pi с помощью программы Python, и я хочу передать полезную нагрузку этого сообщения в функцию Lambda.
  • Я настроил требование в консоли SNS на AWS, т. Е. Создал тему и добавил лямбда-функцию своим подписчикам.
  • Теперь я хочу получить полезную нагрузку этого сообщения в лямбда-функции. Но я не могу найти метод, который может помочь мне сделать это. Например, что-то вроде getMessage или что-то подобное.
  • Итак, мои вопросы: поскольку я настроил публикацию и подписку на AWS, могу ли я предположить, что клиенты подключены, и если я опубликую сообщение, я должен получить его на стороне подписчика, что является моей лямбда-функцией здесь? Кроме того, какова техника, в которой я могу получить полезную нагрузку сообщения в моей лямбда-функции? Я добавляю ниже согласно предложению cjwfuller.
  • Ниже я записал метод публикации в Python

client_boto = boto3.client('sns', aws_access_key_id='@@@', aws_secret_access_key='@@@', region_name='us-west-2')

REGION = 'us-west-2'

TOPIC = 'arn:aws:sns:us-west-2:***:topic_name'

MSG = ntpath.basename(f_string)

SUBJECT_boto = 'File Name'

pub =client_boto.publish(TopicArn = TOPIC, Message = MSG, Subject=SUBJECT_boto)

Я пишу код подписки на Java. Поскольку моя лямбда-функция уже подписана на нее на консоли AWS, должна ли моя Java-программа снова включить подписку или есть способ напрямую получить полезную нагрузку msg.

2 ответа

При поиске я нашел класс для SNSEvent, который находится по https://github.com/aws/aws-lambda-java-libs/blob/master/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/SNSEvent.java

Этот класс содержит все методы, связанные и необходимые для получения полезной нагрузки сообщения.

Обработчик лямбда-функции в Java выглядит примерно так:

public void handleRequest(SNSEvent input, Context context){
  String this_takes_message=input.getRecords().get(0).getSNS().getMessage();
}

На каком языке вы пишете функцию? JavaScript в качестве примера:

exports.myHandler = function(event, context, callback) {
    console.log("value1 = " + event.key1);
    console.log("value2 = " + event.key2);
    // ...
}

Источник: http://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html

Полезно тестировать такие вещи в консоли AWS Lambda, прежде чем писать весь код.

Поскольку я настроил публикацию и подписку на AWS, могу ли я предположить, что клиенты подключены

Клиенты на самом деле не "связаны", они просто подписаны на тему.

опубликовать сообщение, которое я должен получить в конце подписчика, какая моя лямбда-функция здесь?

Похоже, вы делаете правильные вещи - размещение примера кода поможет нам найти более точные ответы.

Другие вопросы по тегам