Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redirect Cloudfront、lambda@edge、S3重定向对象、,_Redirect_Amazon S3_Aws Lambda_Amazon Cloudfront_Aws Lambda Edge - Fatal编程技术网

Redirect Cloudfront、lambda@edge、S3重定向对象、,

Redirect Cloudfront、lambda@edge、S3重定向对象、,,redirect,amazon-s3,aws-lambda,amazon-cloudfront,aws-lambda-edge,Redirect,Amazon S3,Aws Lambda,Amazon Cloudfront,Aws Lambda Edge,我正在构建一个S3URL重定向,没什么特别的,只是一堆填写了WebsiteRedirectLocation元的零长度对象。S3 bucket设置为服务器静态网站,bucket策略设置为public,等等。它工作正常 然而,我还想锁定bucket中的某些文件,特别是一些用于管理重定向的HTML文件(比如添加新的重定向)。使用传统的设置,我既可以使用重定向,也可以很好地为HTML页面服务。但为了锁定它,我需要使用Cloudfront和Lambda@edge比如在这些帖子中: 我已经修改了文件la

我正在构建一个S3URL重定向,没什么特别的,只是一堆填写了WebsiteRedirectLocation元的零长度对象。S3 bucket设置为服务器静态网站,bucket策略设置为public,等等。它工作正常

然而,我还想锁定bucket中的某些文件,特别是一些用于管理重定向的HTML文件(比如添加新的重定向)。使用传统的设置,我既可以使用重定向,也可以很好地为HTML页面服务。但为了锁定它,我需要使用Cloudfront和Lambda@edge比如在这些帖子中:

我已经修改了文件lambda@edge脚本,仅在请求管理页面(或其资产,如CSS/JS)时提示输入密码。如果请求的路径是其他路径(可能是重定向文件),则不会提示用户输入密码。是的,我还可以在Cloudfront中设置一个行为规则来决定何时使用Lambda函数提示输入密码

而且它有点起作用。当我按照这些说明通过Cloudfront URL访问我的站点时,当我转到站点的根目录(管理页面)时,确实会收到提示输入密码。但是,重定向将不起作用。如果我尝试加载重定向,浏览器只会下载它

现在,有人建议我将我的Cloudfront分发端点更改为S3 bucket网站端点-我认为这也意味着将bucket策略更改回网站模式,而公共模式很糟糕,因为现在它可以在Cloudfront策略之外访问,这是我不想要的。此外,Cloudfront不再自动为指定的索引文件提供服务,这不是最糟糕的事情


那么,有没有可能完全通过Cloudfront锁定我的bucket服务器Lambda@edge但是Cloudfront是否也尊重这些重定向,而不仅仅是提示下载?Cloudfront中是否有关于标头的设置?我是否应该为不同的文件设置不同的行为规则(HTML vs redirects)?

而不是使用
WebsiteRedirectLocation
meta,它特定于S3静态网站托管,当Cloudfront是服务器时无效,将空对象替换为包含带有所需重定向目标的
meta
HTML标记的HTML对象:

<meta http-equiv="Refresh" content="0; url=https://www.example.com" />

分号前的数字是重定向前的延迟,以秒为单位,其中0为立即数

不要忘记将对象的
内容类型
元标记也更改为
text/html


如果您想支持可能无法正确处理刷新指令的旧浏览器,请按照说明添加锚定链接。

而不是使用
WebsiteRedirectLocation
meta,它特定于S3静态网站托管,在Cloudfront为服务器时无效,将空对象替换为包含带有所需重定向目标的
meta
HTML标记的HTML对象:

<meta http-equiv="Refresh" content="0; url=https://www.example.com" />

分号前的数字是重定向前的延迟,以秒为单位,其中0为立即数

不要忘记将对象的
内容类型
元标记也更改为
text/html


如果您想支持可能无法正确处理刷新指令的旧浏览器,请按照说明添加锚定链接。

哦,这是一个有趣的想法,我将尝试一下,稍后再报告!谢谢这是一个有趣的主意,我会试一试,稍后再报告!谢谢