rub*_*hak 8 redirect amazon-s3 aws-lambda aws-api-gateway
我正在尝试在 S3 中托管一个静态站点,能够使用 Lambda/Api 网关处理一些动态内容。似乎无法做到这一点。我希望 URL 看起来像这样:
example.com/index.html
example.com/images/*
example.com/css/*
example.com/api/* -> API Gateway
Run Code Online (Sandbox Code Playgroud)
另外,在重定向时,我想将 example.com 保留为根域。我在 S3 中尝试了 RoutingRules,但从客户端重定向。我需要这对用户透明,例如代理请求。
Imr*_*ran 14
虽然 Bob 的回答对于公共网站来说非常简洁而且很简单,但如果您正在寻找其他适用于内部网站或不想使用 CDN 的替代方案,您可以尝试以下选项。
选项1 -
这是人们更喜欢的最常见的选择。您只需为静态 vs api 配置 2 个不同的 DNS 主机。(假设您为 *.example.com 启用了正确的 CORS)
example.com(S3) --> S3 静态内容
api.example.com(APIGateway) --> Lambda
选项 2 -
Example.com(APIGateway) --> /apigLambda -->Lambda
Example.com(APIGateway) --> /* --> S3 Bucket/S3 文件。
API 网关配置 -
API 网关 S3 后端代理 -
示例 API 网址 -
https://xxx.execute-api.us-east-1.amazonaws.com/dev/apigLambda
https://xxx.execute-api.us-east-1.amazonaws.com/dev/myfilename.css
参考 -
注意 - 在上面的参考 Url 中,Url 路径中接受了存储桶名称,但我的示例隐藏了存储桶名称,因此用户在看到 API Gateway Url 时不知道 S3 存储桶名称。
选项 3 -
根据您的评论,只需使用 {proxy+} 作为代理 S3 的资源以支持子文件夹调用,但正如您所建议的,仅使用传递代理并没有提供太多选项来转换 HTTP 响应主体,我认为这仍然可以,因为您知道您的网站内容文件。
您可以通过将 CloudFront 分配放在 API Gateway API 和静态内容的 S3 存储桶前面来进行配置。这也将允许您利用 CloudFront 的边缘缓存。
| 归档时间: |
|
| 查看次数: |
7982 次 |
| 最近记录: |