【发布时间】:2020-08-16 02:32:37
【问题描述】:
我的用例相当简单:我想将前端部署到使用 Amplify 后端的生产环境中,而不暴露 API 密钥等敏感配置。
我有一个前端,它使用 Github Actions 进行 CI 和 CD 并部署到 Zeit Now(因为它是 Next.js 项目并且需要 SSR 支持,而 Amplify 目前不提供)。目前它没有连接后端,因此它可以毫无问题地部署到生产环境。
在同一个项目中,我为后端设置了 AWS Amplify 并将其连接到前端。这一切都在本地环境中按预期成功运行。
现在我想将前端部署到生产环境,但是用于将其连接到后端的 AWS 配置保存在名为 aws-exports.js 的自动生成文件中,其中包含 GraphQL 端点及其 API 密钥等内容。此文件已被Amplify CLI 添加到.gitignore。
如果我从.gitignore 中删除aws-exports.js 文件并将其提交到存储库,我认为一旦部署到生产环境它可能会工作,但是我认为这不是一个好主意,因为我会暴露敏感配置数据。
我不想使用 AWS 来部署我的前端,这是我阅读过的文档中建议的解决方案。有没有推荐的方法来保持前端和后端环境分开? (意味着前端仍在部署到 Zeit Now,它将使用部署在 AWS 中的后端)。
【问题讨论】:
-
我不太了解这个场景,无法回答这个问题。我了解您想在前端隐藏凭据。但是您的前端应该如何针对 GraphQL 端点进行身份验证?通过身份验证模型 API_KEY?
-
我想从存储库中隐藏 API 密钥。例如,在部署到 Zeit Now 的情况下,我使用 Github 机密,因此它们作为占位符提交到存储库,但敏感信息是隐藏的,并且可以使用 Github Actions 进行部署。所以我想知道是否有类似的方法可以在前端和 AWS Graphql 后端之间进行通信。或者可能无关紧要,因为在任何情况下,在执行来自客户端的请求时都会暴露 API 密钥?我希望这有助于澄清我的问题,我显然错过了一些难题。
标签: amazon-web-services server-side-rendering aws-amplify aws-amplify-cli