【问题标题】:Make static file accessible to only my app hosted on either AWS or Google Cloud使静态文件仅可供我在 AWS 或 Google Cloud 上托管的应用访问
【发布时间】:2021-03-26 20:20:30
【问题描述】:

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

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

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

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

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

我的问题是 - 我想要实现的目标是否可能?还是 CSV 必须公开或不公开?

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

欢迎提出任何建议。

【问题讨论】:

    标签: amazon-web-services amazon-s3 google-cloud-storage static-site


    【解决方案1】:

    您所要求的并不是您所描述的那样。如果CSV要被网页直接消费,那么网页需要能够获取它,如果网页可以获取它,那么任何可以查看该页面的人都可以。网页上的任何数据也是如此。您不希望直接访问 CSV 是否有特殊原因?这不是您可以直接访问的东西,您必须知道 URI(这很容易找到,但大多数用户不会打扰)。数据中是否有不应该暴露的东西?如果是这样,您需要彻底重新考虑您的方法。

    【讨论】:

    • 这是正确答案,我只想补充一点,如果页面没有 CSV 就无法工作,并且您不希望任何人访问 CSV,那么您应该考虑在保护页面和 CSV 的地方 - 但即便如此,经过身份验证的用户仍然可以访问 CSV,如果他们最不了解的话。
    • 谢谢杰森。我有一种感觉,可能是答案,但不确定是否可以添加某种身份验证(类似于 CORS 的工作方式)。
    【解决方案2】:

    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-retrieved-from-s3/)。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-30
      • 1970-01-01
      • 2020-12-18
      • 1970-01-01
      • 2019-02-18
      • 1970-01-01
      • 2018-09-14
      相关资源
      最近更新 更多