【问题标题】:Invoke same Lambda function from different API endpoint从不同的 API 端点调用相同的 Lambda 函数
【发布时间】:2021-06-04 04:25:07
【问题描述】:
我是无服务器架构设计的新手。基本上我想从/向 mongodb 数据库读取/更新数据。为此,我使用两个资源(list、update)创建了 API Gateway,并创建了两个 lambda 方法(listFunction、updateFunction)。
有什么方法可以编写单个 lambda 方法并根据 api 网关资源名称执行列表/更新?
【问题讨论】:
标签:
amazon-web-services
aws-lambda
aws-api-gateway
aws-serverless
【解决方案1】:
要创建一个可以在 MongoDB 上执行 CRUD 操作的 Lambda 函数,首先确保将 MongoDB 实例部署到 EC2 实例,如下所述:
Install and configure MongoDB community edition
验证 MongoDB 实例已成功部署并运行后,现在您可以编写一个执行 CRUD 操作的 Lambda 函数。我会使用 Lambda 运行时 Java API 编写 Lambda 函数,然后使用 Mongo Java API 与 MongoDB 集合进行交互。
例如,在您的 Lambda 函数中创建一个 MongoClient 实例。
private String mongoUri = "mongodb://<ENTER EC2 IP Address>.amazonaws.com:27017" ;
private MongoClient getConnection() {
try {
MongoClient mongoClient = new MongoClient(new MongoClientURI(mongoUri));
return mongoClient;
} catch (Exception e) {
e.getStackTrace();
}
return null;
}
现在您可以在 Lambda 函数中执行 CRUD 操作。
如果您想使用 API Gateway,您可以使用 API Gateway 调用此 Lambda 函数。
【解决方案2】:
是的,您可以使用单一功能来为您的所有操作提供服务。
在 api Gateway event 中获取资源路径和 http 方法类型。
因此,您可以让if else 块根据处理程序中的路径来处理请求。
在您的 api 网关中使用新的 lambda 函数配置这两种方法。