微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使静态文件只能由托管在 AWS 或 Google Cloud 上的我的应用程序访问

如何解决使静态文件只能由托管在 AWS 或 Google Cloud 上的我的应用程序访问

我有一个静态网站(纯 HTML、JS 和 CSS),我将托管在 AWS 或 Google Cloud 上。

站点从 CSV 文件提取数据,该数据可以作为站点上的本地文件定位,或者最好位于另一个端点上。

我的问题是,客户不希望 CSV 文件可公开访问(人们不应该直接访问并下载它)。

文件需要存在于 AWS S3 或 Google Cloud Storage 上,因为客户端会定期更新它。

但是,我似乎无法弄清楚如何使其对我的应用可见,但如果您尝试直接访问该文件,则不会。我可以将其公开,以便我的应用程序可以看到它,但其他所有人也可以。或者不公开,这样就不能下载了,这样我的app也看不到了。

我的问题是 - 我正在努力实现的目标是否可能?或者 CSV 必须是公开的还是不公开的?

我的理想选择是两个单独的存储桶,一个带有我的静态站点,另一个带有 CSV 文件

欢迎提出任何建议。

解决方法

按照您描述的方式,您所要求的实际上并不可能。如果 CSV 是要由网页直接使用,则网页需要能够获取它,如果网页能够获取它,那么任何可以查看该页面的人都可以获取。网页上的任何数据也是如此。您不希望直接访问 CSV 有什么特殊原因吗?它不是您可以直接访问的内容,您必须知道 URI(这很容易找到,但大多数用户不会打扰)。数据中是否有不应公开的内容?如果是这样,您需要完全重新考虑您的方法。

,

AWS 最近发布了新的 S3 功能,可以满足您的需求。一种是 Amazon S3 访问点 (https://aws.amazon.com/s3/features/access-points)。另一个称为 Amazon S3 Object Lambda (https://aws.amazon.com/es/blogs/aws/introducing-amazon-s3-object-lambda-use-your-code-to-process-data-as-it-is-being-retrieved-from-s3/)。

看起来您可以将 Lambda 放在 S3 存储桶的前面来处理请求并将其转换为文件(也称为“对象”)。不幸的是,我没有准确回答您的问题,因为我从未实施过此解决方案,但我相信您可能能够将 CSV 文件存储在 S3 中,并且仅通过 S3 接入点才能访问您的静态站点。

或者,您也可以使用 CloudFront 和 Lambda 关联来限制对特定来源的 CSV 文件的访问。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。