我是aws的新手,我想知道如何解决我的问题。
我的情况如下: 我有一个rest控制器,该控制器返回一个整数(此数字表示以毫秒为单位的时间)。
当整数大于某个数字时,我想触发aws lambda。
我正在进行研究以找到一些解决方案,并且我知道我可能会定期(每5分钟或1小时)向控制器询问该值,但是我想知道是否有其他方法可以解决此问题? / p>
感谢您的帮助!
PS。我不想定期安排它,而要使用诸如监听器之类的东西来休息。 例如我的rest控制器返回的值是3,并且还可以,但是当我的控制器返回的值大于(比如说10)时,我希望它触发lambda。
答案 0 :(得分:0)
我不确定我是否正确解决了核心问题,但是如果您的用例只是为了安排触发lambda的时间表,那么您实际上并不需要外部服务来调用它每隔一段时间。
您可以使用CloudWatch,在“事件”->“规则”中可以设置自定义计划并将lambda设置为目标。
在此处找到了如何操作的指南:https://www.youtube.com/watch?v=FynLOwBgJAU
答案 1 :(得分:0)
答案 2 :(得分:0)
如果您在半标准JAX-RS环境中运行,则可以使用ContainerResponseFilter在内部触发此操作。骨架:
import java.io.IOException;
import javax.annotation.Priority;
import javax.ws.rs.Priorities;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.ext.Provider;
@Provider
@Priority(Priorities.USER) // or whatever makes sense
public class ResponseFilterImpl implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext,
ContainerResponseContext responseContext) throws IOException {
// get response body with responseContext.getEntity().toString() or whatever works
// if it contains what you want, trigger a Lambda
}
}