Rest 调用AWS Lambda端点
我实现了AWS lambda方法来学习如何使用它。 我现在所拥有的:Rest 调用AWS Lambda端点,rest,amazon-web-services,aws-lambda,Rest,Amazon Web Services,Aws Lambda,我实现了AWS lambda方法来学习如何使用它。 我现在所拥有的: AWS lambda本身 API网关 Amazon CloudWatch日志 在API网关配置中,我看到了下一个选项: 终点: API密钥:QW123E45RTY6 授权:无 在这个lambda背后,我有Java代码,实现com.amazonaws.services.lambda.runtime.RequestStreamHandler和它背后的REST控制器,类似于: @Path("/tester") public
- AWS lambda本身
- API网关
- Amazon CloudWatch日志
- 终点:
- API密钥:QW123E45RTY6
- 授权:无
@Path("/tester")
public class TestResource {
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private TestRepository testRepository;
public void setTestRepository(TestRepository testRepository) {
this.testRepository = testRepository;
}
@POST
@Path("/{identifier}")
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.WILDCARD)
public Response store(@PathParam("identifier") String identifier, @QueryParam("hashcode") String hashcode) {
try {
this.testRepository.store(identifier, hashcode);
} catch (RuntimeException ex) {
LOG.error("Failed to store pair {}, {}", identifier, hashcode, ex);
throw new InternalServerErrorException(ex);
}
return Response.noContent().build();
}
}
现在我尝试通过邮递员调用此服务:
选项1-调用我在API网关中看到的内容:
- 网址:
- 方法:邮寄
- 标题:
- 密钥:x-api-Key
- 值:QW123E45RTY6
{
"message": "Missing Authentication Token"
}
选项2-调用我的方法:
- 网址:
- 方法:邮寄
- 标题:
- 密钥:x-api-Key
- 值:QW123E45RTY6
{
"message": "Missing Authentication Token"
}
我完全理解为什么选项1不起作用,但是选项2出了什么问题?您能帮我理解我错过了什么吗?当您尝试调用不存在的URL时,会出现此消息(大多数情况下)
请确保您正在呼叫http://api-gateway-name/stage-name/resource-name
另外,请确保您已经部署了API。我的问题的答案是简单而明显的(愚蠢的我)。API网关中的端点配置必须与Java代码中的
@Path
配置相匹配
因此,如果我在网关中定义dummy/test store
,应该使用@Path(“/dummy/test store”)
而不是@Path(“/tester”)
解决了这一限制,并通过手动实现处理程序使基于Lambda的API变得轻量级,而无需常规REST API框架的开销。甚至在上发布了我的WIP“框架”。谢谢你的提示,URL错误是对的,但在我深入到AWS客户端代码之前,我不明白为什么它是错误的。我将把我的发现作为一个单独的答案粘贴在这里。