【问题标题】:Configuring environment variables for static web site on AWS S3 [closed]在 AWS S3 上为静态网站配置环境变量 [关闭]
【发布时间】:2020-01-18 04:04:49
【问题描述】:

我正在尝试根据以下信息在 S3 上设置一个简单的静态 Angular 网站: http://docs.aws.amazon.com/gettingstarted/latest/swh/website-hosting-intro.html

我想通过需要发送 sendgrid api 密钥的表单发送电子邮件。显然,我想为此使用环境变量来避免代码中有键。如何在 S3 中设置环境变量?

我查看了 aws-cli 工具,但它只显示了似乎是 AWS 特定环境变量的示例。 AWS/S3 控制台中是否有可以设置这些的地方?

顺便说一句-我想使用这个演示 sendgrid 服务的 Angular 服务: https://github.com/onaclovtech/sendgrid/blob/master/sendgrid.js

【问题讨论】:

  • 您不能在 S3 中设置环境变量,但可以在 Amazon Lambda 中设置。您可以考虑在 lambda 中创建一个函数来处理您的 sendgrid 调用。
  • 我曾考虑过的一种方法(也许 Lambda 会起作用),但您只需将您的 sendgrid 调用传递给可以私下处理该问题的东西,(我想在某个时候提供服务,但叹息,时间/生活)。有点像直通,所以像 sendgrid.blah.com 之类的东西,然后你托管你的密钥,它通过和返回传递请求......所以只有一个站点(理论上)作为直通是必要的,但是您可以构建各种静态站点(在某个时间点类似于说 firebase)。
  • 也许 AWS Amplify aws.amazon.com/amplify 是您在 AWS S3 之上需要的服务

标签: amazon-s3


【解决方案1】:

您不能在 S3 中设置环境变量。 S3 只是一个静态对象存储,而不是动态内容服务器。评估变量值将是动态内容的定义,而 S3 仅提供静态内容。

请注意,AngularJS 代码在浏览器中运行,而不是在服务器上,因此任何知道如何查看的人都可以在浏览器中查看那些您希望保留在代码之外的键。如果您想从客户端框架调用 SendGrid,则无法隐藏这些值。

【讨论】:

  • 我希望有一种方法可以通过 S3 隐藏密钥。我想既然他们有关于静态托管网站的方法,他们必须有某种方式,因为谁真正托管了一个真正的静态网站?每个人都需要接受电子邮件。
  • 正是我同样的问题。发现aws.amazon.com/amplify 可能就是答案。
【解决方案2】:

大多数著名的电子邮件营销公司甚至不允许从可能暴露密钥的前端调用他们的服务,例如 MailChimp。你可以阅读below

注意:MailChimp 不支持使用 CORS 请求的 API 客户端实现,因为暴露帐户 API 密钥存在潜在的安全风险。

现在,您可能会多次使用环境变量来分隔环境等(非敏感信息)。在这种情况下,您应该使用机器上的环境变量,并在 webpack 或其他构建工具的帮助下生成构建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 2018-09-18
    • 2018-06-28
    相关资源
    最近更新 更多