amazon-web-services - 使静态文件仅可供我在 AWS 或 Google Cloud 上托管的应用访问
问题描述
我有一个静态站点(纯 HTML、JS 和 CSS),我将托管在 AWS 或 Google Cloud 上。
该站点从 CSV 中提取数据,该 CSV 可以作为本地文件定位在站点上,或者最好位于另一个端点上。
我的问题是,客户不希望 CSV 文件可公开访问(人们不应该直接访问并下载它)。
该文件需要存在于 AWS S3 或 Google Cloud Storage 上,因为客户端会定期更新它。
但是,我似乎无法弄清楚如何使其对我的应用程序可见,但如果您尝试直接访问该文件则不会。我可以将其公开,以便我的应用程序可以看到它,但其他人也可以。或者让它不公开,所以它不能下载,但我的应用程序也看不到它。
我的问题是 - 我想要实现的目标是否可能?还是 CSV 必须是公开的还是不公开的?
我的理想选择是两个单独的存储桶,一个带有我的静态站点,另一个带有 CSV 文件。
任何建议都将受到欢迎。
解决方案
AWS 最近发布了可以帮助您满足需求的新 S3 功能。一种是 Amazon S3 接入点 ( https://aws.amazon.com/s3/features/access-points )。另一个称为 Amazon S3 对象 Lambda ( https://aws.amazon.com/es/blogs/aws/introducing-amazon-s3-object-lambda-use-your-code-to-process-data-as-it -is-being-retrived-from-s3/)。
看起来您可以将 Lambdas 放在 S3 存储桶前面,以处理请求并将其转换为其文件(也称为“对象”)。不幸的是,我对您的问题没有准确的答案,因为我从未实施过此解决方案,但我相信您可能能够将 CSV 文件存储在 S3 中,并且仅通过 S3 访问点才可以访问您的静态站点。
或者,您也可以使用 CloudFront 和 Lambda 关联来限制对 CSV 文件的访问到特定来源。
推荐阅读
- mysql - 我如何将这三个表相互关联?
- c++ - 我在 C++ 中的 .append 方法有很多错误
- oracle - 如何对具有聚合函数的 Oracle 查询进行分组
- docker - 如何使用 docker 网络连接 nifi 和 nifi 注册表
- javascript - 未捕获的类型错误:myCategories.forEach 不是函数
- java - 给定正整数 A 的 3 的幂
- javascript - 在 NestJS GraphQL 中调用嵌套执行级别上的字段解析器
- html - 添加 ngb-pagination 不会加载页面
- dependency-injection - 使用Autofac注册微软的ILogger并解析为ILogger
- sql - MSSQL如何使用条件将数据从一个表复制到另一个表