问题
I am trying to setup a simple static Angular website on S3 per the info: http://docs.aws.amazon.com/gettingstarted/latest/swh/website-hosting-intro.html
I want to send email via a form that needs to send sendgrid api keys. Obviously, I want to use environment variables for this to avoid having keys in code. How do you setup environment variables in S3?
I looked into aws-cli tool but it only shows examples of what appear to be AWS specific enviroment variables. Is there somewhere in AWS/S3 console were these can be set?
BTW- I would like to use this Angular service which demonstrates the sendgrid service: https://github.com/onaclovtech/sendgrid/blob/master/sendgrid.js
回答1:
You can't set environment variables in S3. S3 is just a static object store, not a dynamic content server. To evaluate variable values would be the very definition of dynamic content, and S3 only serves static content.
Note that AngularJS code runs in the browser, not on a server, so those keys you want to keep out of your code are going to be viewable in the browser by anyone that knows how to look. There's no way for you to hide those values if you want to call SendGrid from a client-side framework.
回答2:
Most of the reputed email marketing companies won't even allow calling their services from a front-end where the keys could be exposed such as MailChimp. You can read the below:
Note: MailChimp does not support the client-side implementation of our API using CORS requests due to the potential security risk of exposing account API keys.
Now, it may happen that many a time, you would want to still use environment variables to separate environments and such (non-sensitive information). In such scenarios, you should use the environment variables on your machine and generate builds with the help of webpack or some other build tool.
来源:https://stackoverflow.com/questions/36226645/configuring-environment-variables-for-static-web-site-on-aws-s3