如何仅在一个文件的s3存储桶上设置重定向?

时间:2018-12-21 06:19:41

标签: amazon-web-services amazon-s3 amazon-cloudfront

我已经设置了一个s3存储桶来托管我的网站,并设置了cloudfront来指向我的s3存储桶。所有发送到cloudfront的请求都将进入我的s3存储桶。我要设置的重定向规则仅适用于s3存储桶中的文件之一。 s3中有一个JavaScript文件/folderA/index.js。而且我想应用一条规则来将对此文件的请求重定向到另一个文件/folderB/index.js。如何设置?是否需要在s3存储桶或cloudfront上设置?

1 个答案:

答案 0 :(得分:0)

我认为您无法为文件定义S3重定向规则。我相信它是在存储桶级别。

您可以将/folderB/index.js的内容复制到/folderA/index.js中,因此不需要重定向。

或者,您可以设置查看器请求lambda @ edge函数,该函数将在路径等于/folderA/index.js的情况下重定向

类似:

'use strict';

exports.handler = (event, context, callback) => {
    /*
     * Generate HTTP redirect response with 301 status code and Location header.
     */
    const request = event.Records[0].cf.request;
    const uri = request.uri;
    if (ur.endsWith('/folderA/index.js`) {
      const redirectTo = //where you want to redirect
      console.log(`Redirecting ${uri} with to: ${redirectTo}`);
      const response = {
          status: '301',
          statusDescription: 'Found',
          headers: {
              location: [{
                  key: 'Location',
                  value: redirectTo,
              }],
          },
      };
      callback(null, response);
    } else {
       callback(null, request);
    }

};