Я использую AWS CDK для настройки нового частного сегмента S3 stati c с конфигурацией 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 сайта stati c в папке создается новая папка 4.5.6-SNAPSHOT. bucketname
S3 ведро. На данный момент индекс. html состоит из следующего:
<html>
<head>
<script src="https://dev.somesite.com/config/config-dev.js" />
</head>
<body>...</body>
</html>
Мне удалось настроить конфигурацию облачного фронта для сопоставления https://dev.somesite.com/some-path с bucketname/1.2.3-SNAPSHOT/some-path
с использованием S3 destinationPrefix
. Когда я перехожу к https://dev.somesite.com/
, индекс. html обслуживается, и конфигурация js загружается. Пока все хорошо.
Однако, как вы можете видеть в HTML, ссылка на config-dev.js
все еще жестко закодирована. Я бы хотел, чтобы конфигурация CloudFront внутренне (не в 30 раз) перенаправляла вызов https://dev.somesite.com/config/config.js
на bucketname/1.2.3-SNAPSHOT/config/config-dev.js
. Я попытался настроить RoutingRule
, используя различные значения KeyPrefixEquals
и ReplaceKeyWith
, но безрезультатно. Я пытаюсь настроить конфигурацию, аналогичную this one (пример 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 правильным подходом для всех?
[править]
Я использую настройку S3 destinationPrefix=1.2.3-SN
, чтобы убедиться, что новая папка загружена в корзину bucketName
в новой папке назначения (префикс) '1.2.3-SN'. Одновременно я настроил originPath
CloudFront на /1.2.3-SN
, чтобы убедиться, что папка установлена как папка root. Это работает как ожидалось; переход к https://dev.somesite.com/ приводит к bucketname/1.2.3-SN/index.html
обслуживанию.
Что бы я хотел сделать sh - это возможность "перенаправить" любой вызов на https://dev.somesite.com/config/**. js в один файл конфигурации, расположенный в bucketname/1.2.3-SN/config
. Причина, по которой я хотел бы сделать это, заключается в том, чтобы ссылка на скрипт в index. html не нуждалась в изменении для каждой среды, в то же время экранируя другие файлы конфигурации, которые не нужны в текущей среде.