首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在lambda中解析来自AWS事件规则的输入?

如何在lambda中解析来自AWS事件规则的输入?
EN

Stack Overflow用户
提问于 2020-05-13 17:52:46
回答 2查看 492关注 0票数 0

如果我在事件规则中使用输入..我该如何在lambda中解析它呢?

现在我有了:

代码语言:javascript
运行
复制
  MyJobScheduledRule:
    Type: AWS::Events::Rule
    Properties:
      Description: Scheduled Rule
      ScheduleExpression: !Sub "rate(${IntervalMinutes} minutes)"
      State: "ENABLED"
      Targets:
        - Id: "MyJobLambda"
          Arn: !GetAtt MyJobLambda.Arn
          Input: "\"{\\\"key\\\":\\\"value\\\"}\"

使用以下lambda:

代码语言:javascript
运行
复制
public class MyJobLambda implements RequestHandler<Map<String, String>, Void>  {
  private static Logger LOGGER = LoggerFactory.getLogger(MyJobLambda.class);

  @Override
  public Void handleRequest(Map<String, String> event, Context context) {

    LOGGER.debug("MyJob got value {} from input", event.get("key"));

    return null;
  }

}

但我得到了以下运行时异常:

代码语言:javascript
运行
复制
An error occurred during JSON parsing: java.lang.RuntimeException
java.lang.RuntimeException: An error occurred during JSON parsing
Caused by: java.io.UncheckedIOException: com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `java.util.LinkedHashMap` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('
{
    "key": "value"
}

我还尝试使用POJO作为lambda的输入。有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2021-05-08 02:42:40

使用ScheduledEvent对象,并解析事件的详细信息字段

代码语言:javascript
运行
复制
import com.amazonaws.services.lambda.runtime.events.ScheduledEvent;
public class MyJobLambda implements RequestHandler<Map<String, String>, Void>  {
  private static Logger LOGGER = LoggerFactory.getLogger(MyJobLambda.class);

  @Override
  public Void handleRequest(ScheduledEvent event, Context context) {

    LOGGER.debug("MyJob got value {} from input", mapScheduledEventDetail(event.getDetail());

    return null;
  }

 private String mapScheduledEventDetail(Map<String,Object> detailObject) {
       return ParserUtil.parseObjectToJson(detailObject.get("clientId"));
    }

}
票数 1
EN

Stack Overflow用户

发布于 2021-03-12 22:02:15

代码语言:javascript
运行
复制
import os
import boto3
import json

#EVENT JSON PARSER (SYED)
def lambda_handler(event, context):
print('starting a new execution')
print('## ENVIRONMENT VARIABLES')
print(os.environ)
AMI = os.environ['AMI']
print('printing os variable AMI')
print(AMI)
print('#########################')
print('PRINTING EVENT')
print(event)
#return event
print('taking message payload from event')
#messagepayload = event['Records'][0]['Sns']['Message']
#the event[] gives a simple string
#the json.loads converts that string into a json/python dictionary that you can use
#[0] denotes first part of the array
messagepayload = json.loads(event['Records'][0]['Sns']['Message'])
print(messagepayload)
#key2 represents a key in the message payload json 
#next we take value for the key named as key2
key2value = messagepayload['key2']
print(key2value)
return key2value
print('END OF EXECUTION')
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61771458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档