【问题标题】:how to add proxy to s3 so i can consume service hosted in EC2 instance?如何将代理添加到 s3,以便我可以使用托管在 EC2 实例中的服务?
【发布时间】:2020-04-17 20:24:21
【问题描述】:

我是 aws 新手,我将所有 UI 都托管在 s3 存储桶中,并且也使用了 cloudfont。现在我已经在 EC2 实例中托管了所有的 restApi。

angular UI -> s3 存储桶(example.com) 后端 SpringBoot restApi -> EC2 实例 (api.exaple.com)

但是有人能告诉我们如何从 S3 (example.com) 存储桶/云前端使用托管在 EC2 (api.example.com) 中的 API 调用。

我在 EC2 实例 (api.example.com:8080) 中托管了 sprint boot rest api。

  1. s3 存储桶说方法不允许用于(GET、POST、PUT、DELETE)方法。
  2. 由于上述原因,我在代码中硬编码了 api.example.com,所以我的所有请求都会重定向到 api.example.com -> 这里的问题是浏览器不允许跨源。

现在我想知道如何让它工作。

【问题讨论】:

    标签: amazon-web-services spring-boot rest amazon-s3 amazon-ec2


    【解决方案1】:

    您需要在您的 S3 存储桶上 enable CORS(跨域资源共享)。

    跨域资源共享 (CORS) 为客户端 Web 定义了一种方式 加载在一个域中以与资源交互的应用程序 在不同的域中。借助 CORS 支持,您可以构建丰富的 使用 Amazon S3 的客户端 Web 应用程序,并有选择地允许 跨域访问您的 Amazon S3 资源。

    【讨论】:

    • 我在 s3 属性中添加 CORS 配置,如下面<CORSConfiguration> <CORSRule> <AllowedOrigin>http://api.example.com:8081</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedHeader>*</AllowedHeader> </CORSRule> </CORSConfiguration>
    • 确保您的 S3 静态文件和 REST API 使用相同的模式 - http 或 https。您可能无法从 https 网页调用 REST http 端点。
    • 问题是我没有在休息控制器上添加@CrossOrigin(origins = "*", maxAge = 3600)。现在它按预期工作。感谢您的快速回复@Anton
    猜你喜欢
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2010-09-22
    相关资源
    最近更新 更多