我试图在S3中托管一个静态站点,它能够使用Lambda/Api网关处理一些动态内容。似乎不能这么做。我希望URL看起来像这样:
example.com/index.html
example.com/images/*
example.com/css/*
example.com/api/* -> API Gateway 此外,在重定向时,我希望将example.com保留为根域。我尝试了RoutingRules中的S3,但是从客户端重定向。我需要这是透明的,从用户,如代理请求。
发布于 2018-12-27 01:51:59
您可以通过将CloudFront发行版放在API Gateway和静态内容的S3桶前面来配置这一点。这还允许您利用CloudFront的边缘缓存。
发布于 2018-12-27 04:32:49
虽然Bob的回答对于公共网站非常简洁,而且很简单,但是如果您正在寻找其他可以为内部站点工作或不想使用CDN的备选方案,您可以尝试以下选项。
备选案文1-
这是人们最喜欢的选择。您只需为静态vs配置两个不同的DNS主机。(假设您为*.example.com启用了适当的CORS )。
example.com( S3 ) ->S3静态内容 api.example.com(APIGateway) -> Lambda
备选案文2-
Example.com(APIGateway) --> /apigLambda ->Lambda Example.com(APIGateway) -> /* -> S3桶/S3文件。
API网关配置-

API网关S3后端代理-

示例API Urls
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路径中被接受,但是我的示例隐藏了桶名,这样用户在看到S3网关Url时就不知道桶名了。
备选案文3-
根据您的评论,只需使用{proxy+}作为代理S3以支持子文件夹调用的资源,但正如您所建议的,直接传递代理并不能提供太多的选项来转换HTTP主体,我认为这是可以的,因为您知道您的网站内容文件。
https://stackoverflow.com/questions/53938053
复制相似问题