托管静态站点时是否可以在不进行重定向的情况下路由流量?

问题描述 投票:0回答:2

我想在网址build/1.coolfile.html上提供文件/1/coolfile。我找不到像这样“重写”网址的方法。我所看到的只是做http redirect的方法。

amazon-web-services
2个回答
0
投票

据我所知,AWS没有可以为您重写URL的服务。您需要部署负载均衡器(如Apache或nginx)才能执行此操作,如果您不想创建和管理基础结构,我认为您可以在Elastic Beanstalk上运行apache。


0
投票

正如迈克尔 - sqlbot可能暗示你可以用cloudfront和lambda做到这一点。 Cloudfront很容易设置,但lambda让你设置然后不起作用,你留下零线索,不得不尝试几个小时的随机事情,直到它最终工作。玩得开心。

编辑 - 因为这是一次创伤性体验,所以我会很善良并且回归。

  1. 设置指向S3存储桶的分发。如果您已经创建了S3存储桶,则建议您只需要一个分发版。转到路线53并将A记录指向您的分配。文档可能会说使用CNAME。我使用A是因为CNAME不适用于example.com和www.example.com
  2. 您不需要特殊的IAM帐户来创建lambda。只需在您的管理员帐户上执行此操作(安全人员会哭)。
  3. 创建你的lambda。让它为你的lambda创建一个新角色。您需要在IAM中编辑该角色的策略(转到aws控制台并键入IAM)。我看起来像这样(注意我添加了s3:GetObject) { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:CreateLogGroup", "s3:GetObject" ], "Resource": "*" } ] }
  4. 创建你的lambda并发布它。只需使用他们的开始代码即可。在右上方,它将打印出lambda的“uri”。它看起来像这个arn:aws:lambda:us-east-1:169014044482:function:RewriteURL:9
  5. 返回到cloudfront>您的发行版>行为> lambda函数关联>为原始请求添加一个(它未缓存并从桶中请求)和一个用于查看者请求(其缓存并从云端请求)。在文本框中使用上面的“uri”。
  6. 等待一年的时间让Cloudfront更新并转到您的网站。如果它有效,你将在cloudwatch> yourLambdaFunctionName部分的cloudwatch中看到lambda的日志
  7. 如果这不起作用,请告知您可以直接转到分发网址(看起来像这样d1tplmeznzg2c3.cloudfront.net)。如果您的dns中的某些内容不正确,这可能会有所帮助。这样你至少可以验证lambda是否正确连接并正常运行。
  8. 一旦你完成所有这些****,你就可以编写一个看起来与此类似的lambda(除非他们自从我写这个以来它已经改变了哈哈)。 exports.handler =(event,context,callback)=> {const request = event.Records [0] .cf.request; request.uri =“/ images / favicon.png”; callback(null,request);抱歉,但stackoverflow不会格式化此代码。是的,每一行都缩进了4个空格,并且在它上面和下面都有换行符LOLLL !!!!

确保每次打开新选项卡以重新访问亚马逊控制台以访问其他服务,并确保将其重定向到控制台,无论您使用的是哪个页面。不要问我如何让它进行重定向。我尝试的每个解决方案都不起作用,我已经尝试了很多。 ...如果您刚刚开始这样做,我建议不要使用AWS,除非您愿意花费大量时间。

© www.soinside.com 2019 - 2024. All rights reserved.