前端直接调用AWS Lambda函数是possible/safe吗?

Is it possible/safe to call AWS Lambda function directly from frontend?

我的 Lambda 函数至少需要 12 秒才能执行,所以我无法通过 AWS API 网关公开它(因为 10 秒超时)。我在想的是 call/execute Lambda 函数直接从前端通过 AWS javascript SDK。创建仅具有执行此特定功能权限的 IAM 用户并在前端对该用户 AWS_KEY_ID 和 AWS_SECRET_KEY 进行硬编码是否安全?

是的,这是可能的。 新 AWS Service Cognito 允许您提供特定于最终用户的 AWS 凭证。您可以使用这些凭据访问不同的 aws 服务,例如 DynamoDB 或者在您的情况下 AWS Lambda.

Is it safe to create IAM user that will have only permission to execute this one particular function and hardcode this user AWS_KEY_ID and AWS_SECRET_KEY in frontend?

永远不要这样做。请改用 AWS Service Cognito

您可以使用亚马逊网关 API 从所谓的 "front end" 连接到 lambda,从亚马逊结帐 this tutorial

您可以使用 aws API 网关和 Lambda 构建 RESTful 服务。使用蓝图 "microservice-http-endpoint" 构建您的 Lambda 函数,或手动将您的 API 端点指向已创建的 Lambda 函数。 This tutorial 解释了如何使用 API Gateway、Lambda 和 DynamoDB 构建 REST 服务。

如果您手动进行域映射和错误映射,您可能会遇到挑战,aws 提供了一个选项来从 swagger 文档构建端点。导入后,您可以手动将 Lambda 函数映射到每个端点。