我应该使用 API 网关作为 S3 的代理吗?

Should I use API gateway as a proxy to S3?

我正在学习无服务器架构,目前正在阅读 Martin Fowler 博客上的 this 文章。

于是我看到了这个方案,尝试用AWS的解决方案来代替抽象的组件。我想知道不使用 API 网关来控制对 S3 的访问是否是个好主意(在图像上,2 号数据库未使用它)。 Martin 谈到 Google Firebase,我不熟悉它与 S3 的比较。

https://martinfowler.com/articles/serverless/sps.svg

将 S3 公开给客户端应用程序而不将 API 网关配置为它们之间的代理是一种常见的策略吗?

Aws S3 不是数据库,它是对象存储服务。

使 S3 存储桶可公开访问是可能的,但不推荐,但是,您可以通过 CLI 或 SDK 使用 S3 API 访问其对象。

回到评论中关于直接从前端使用 API 是否肯定是一种不好的做法,因为 AWS 强烈建议您安全地存储 [=18] =] 凭据(密钥),并且任何 AWS API 调用都应包含 AWS 为您的 IAM 用户提供的 API 凭据(密钥),那么显然任何使用您的 Web 应用程序的人都可以看到这些密钥。

希望这能回答您的问题。

回答你的问题 - 可能是。

但是,您在为 Martin 的博客中的摘要选择 AWS 服务时犯了一个错误。而且您可能根本不应该按照您描述的方式使用 S3。

代替S3;你会想要 dynamoDB。您还需要查看 Cognito 以进行身份​​验证。

在 Martin 的文章之后阅读这篇文章,了解如何将您学到的知识应用到 AWS 特定服务上 https://aws.amazon.com/getting-started/hands-on/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/