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编写订阅代码。 由于我的lambda func已经在AWS控制台上订阅了它, 如果我的Java程序再次包含订阅或者是否存在 直接获取msg有效负载的方法。
答案 0 :(得分:0)
你在写这个函数的语言是什么?以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上配置了发布和订阅,我可以假设客户端已连接
客户并非真正“连接”,他们只是订阅了某个主题。
发布一条消息,我应该在订阅者端获取该消息,这是我的lambda函数吗?
听起来你正在做正确的事情 - 发布示例代码将有助于我们提出更准确的答案。
答案 1 :(得分:0)
在搜索时,我找到了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中的Lambda函数处理程序就是这样的, 例;
public void handleRequest(SNSEvent input, Context context){
String this_takes_message=input.getRecords().get(0).getSNS().getMessage();
}