【问题标题】:Amazon S3 Static Website Hosting and REST API Access?Amazon S3 静态网站托管和 REST API 访问?
【发布时间】:2018-01-17 21:55:51
【问题描述】:

我目前正在使用 S3 存储桶的 rest api 来访问我公司应用程序的图像。我编写了 lambda 函数来帮助减轻我的应用程序的负载,但为了利用这些函数,我必须更改我的 S3 存储桶中的设置以充当静态网站主机。当我这样做时,我可以再访问原始的 rest api。我想同时利用 REST api 和静态网站 url 来使从一个到另一个的过渡顺利,但我找不到任何关于这样做的细节。甚至可能吗?

Rest API 请求示例https://s3.amazonaws.com/bucketname.mycompany.com/spacebackground.jpg

静态网站示例 http://bucketname.mycompany.com.s3-website-us-west-1.amazonaws.com/spacebackground(1)Full.jpg

将存储桶更改为静态网站主机后,我会收到“永久重定向”http 响应。

可以同时使用吗?

【问题讨论】:

  • 当您说“REST API”时,您的意思是您正在使用 AWS S3 API 来生成签名请求吗?还是您只是使用 REST 作为访问公共对象的匿名用户?
  • 以匿名用户身份使用 rest。该存储桶包含由我们的网络应用程序拉入的公共图像。
  • 我刚刚注意到Kannaiyan的回答非常好。
  • CloudFront 是一项很好的服务,但它是您获得重定向的原因与静态网站托管无关。那是巧合。对于北加州的存储桶,您的 REST 端点是错误的。当您第一次创建存储桶时,S3 可以稍微容忍这个错误,因为不确定是您犯了错误,还是 S3 犯了错误,但之后,如果使用错误,您将获得永久重定向端点。
  • @Michael-sqlbot 谢谢!我没有意识到我在 prod 中使用的存储桶和我的测试存储桶位于不同的区域,所以我没想到 URL 会有所不同。

标签: amazon-web-services amazon-s3


【解决方案1】:

您缺少名为 CloudFront 的云服务。

https://aws.amazon.com/cloudfront/

您可以将 lambda 和您的静态网站都映射到一个域。例如,

https://www.example.com/ --- 将是一个静态站点 https://www.example.com/api -- 属于 API。

创建 CloudFront 分配,配置您的来源并映射到您的 url 模式。

您还可以指定哪个网址需要自签名或哪个网址也需要公开。

这将是一件轻而易举的事。

希望对你有帮助。

【讨论】:

  • 谢谢!我明天会试试这个,但似乎它应该可以解决我的问题。
猜你喜欢
  • 1970-01-01
  • 2018-06-11
  • 2013-08-06
  • 2019-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 2017-07-20
相关资源
最近更新 更多