CloudFront:使用 RoutingRule 在内部重定向到 S3 存储桶文件中的特定文件

迈克尔

我正在使用 AWS CDK 设置一个新的私有 S3 静态站点存储桶,并使用 CloudFront 配置为其提供服务。S3存储桶的结构如下:

bucketname/1.2.3-SNAPSHOT/
bucketname/1.2.3-SNAPSHOT/index.html
bucketname/1.2.3-SNAPSHOT/config
bucketname/1.2.3-SNAPSHOT/config/config-dev.js
bucketname/1.2.3-SNAPSHOT/config/config-tst.js
bucketname/1.2.3-SNAPSHOT/config/config-acc.js
bucketname/1.2.3-SNAPSHOT/config/config-prd.js

例如,当我部署静态站点的 4.5.6-SNAPSHOT 版本时,会在bucketnameS3 存储桶中创建一个新文件夹 4.5.6-SNAPSHOT 目前,index.html 包含以下内容:

<html>
  <head>
    <script src="https://dev.somesite.com/config/config-dev.js" />
  </head>
  <body>...</body>
</html>

我设法配置了 cloudfront 配置以将https://dev.somesite.com/some-path映射bucketname/1.2.3-SNAPSHOT/some-path使用 S3 destinationPrefix当我导航到https://dev.somesite.com/index.html 并加载配置 js 时。到现在为止还挺好。

但是,正如您在 HTML 中看到的,对的引用config-dev.js仍然是硬编码的。我希望 CloudFront 配置在内部(不是 30x)将调用重定向https://dev.somesite.com/config/config.jsbucketname/1.2.3-SNAPSHOT/config/config-dev.js我曾尝试设置一个RoutingRuleusing 多样性KeyPrefixEqualsReplaceKeyWith值,但无济于事。我正在尝试设置与此类似的配置(示例 2)。

我的 CDK 脚本产生以下路由规则:

<RoutingRules>
  <RoutingRule>
    <Condition>
      <KeyPrefixEquals>1.2.3-SNAPSHOT/config</KeyPrefixEquals>
    </Condition>
    <Redirect>
      <ReplaceKeyWith>1.2.13-SNAPSHOT/config/config-dev.js</ReplaceKeyWith>
    </Redirect>
  </RoutingRule>
</RoutingRules>

但是,https://dev.somesite.com/config/anything不会将调用重定向到所需的 config-dev.js 文件。有谁知道这个问题的最佳方法?设置 RoutingRule 是正确的方法吗?

[编辑]

我使用 S3destinationPrefix=1.2.3-SN设置来确保将新文件夹上传到bucketName新目标(前缀)文件夹“1.2.3-SN”中的存储桶中。同时我已经配置CloudFront的的originPath,以/1.2.3-SN确保该文件夹设置为“根”文件夹中。这按预期工作;导航到https://dev.somesite.com/结果bucketname/1.2.3-SN/index.html得到服务。

我想要完成的是能够将任何对https://dev.somesite.com/config/ **.js 的调用“重新路由”到位于bucketname/1.2.3-SN/config. 我之所以要这样做,是为了确保 index.html 中的脚本引用不需要根据环境进行更改,同时屏蔽当前环境中不需要的其他配置文件。

Ugur Cem Ozturk

您可以在 CloudFront 边缘运行 Lambda 函数。它被称为lambda@edge当 CDN 收到请求(查看器请求)时,您可以设置很多东西,例如:

  • 转发到特定存储桶
  • 设置响应头
  • ...

我相信这就是你所需要的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

AWS Cloudfront重定向到S3存储桶

S3 RoutingRule:将目录重定向到子域

如何在使用Cloudfront上传的S3存储桶中获取文件?

使用 python boto 仅下载 S3 存储桶中的特定文件夹

使用特定子字符串从 s3 存储桶中获取文件列表

使用 php Laravel 将文件存储到 s3 存储桶

S3 / Cloudfront:如何在存储桶中列出文件夹的内容

使用boto3和python从S3存储桶目录中仅读取特定格式的文件

将文件列表从 S3 存储桶复制到 S3 存储桶

如何在AWS S3存储桶和CloudFront中将非www重定向到www

AccessDenied用于请求重定向到使用CDK部署的S3存储桶

使用 cli 根据文件中列出的名称从 s3 存储桶中删除文件

Cloudfront使用307临时重定向重定向到S3端点

AWS CloudFront如何遵循S3存储桶重定向规则?

cloudfront和s3 301重定向显示存储桶的裸域

使用API在Amazon S3存储桶中创建文件夹/上传文件

使用S3,CloudFront和Origin Path的静态网站托管的子文件夹重定向问题

增量表:仅从 S3 存储桶复制到特定分区文件夹

使用Spring集成轮询文件的S3存储桶

如何使用cloudformation模板中的userdata将文件从s3存储桶复制到ec2实例中

使用boto3,Python从S3存储桶中查找最新的CSV文件

如何在不使用 spark 的情况下从 AWS EMR 内部读取 S3 存储桶中的文本文件

如何使用重定向规则在Amazon s3中从'/'重定向到'/ en'

在内部重定向 Apache 文件夹

如何使用Spark Session列出S3存储桶中的文件?

如何使用python从S3存储桶中读取.txt文件并查看内容?

如何使用AWS CLI删除S3存储桶中的多个文件

使用Cloudformation在S3存储桶中创建文件夹

如何使用Boto将文件上传到S3存储桶中的目录