Optimizely DXP — это решение облачного хостинга Optimizely (ранее Episerver), основанное на платформе Microsoft Azure. В Optimizely DXP мы получаем три среды.
- Интеграция
- Подготовка производства
- Производство
При переносе веб-решения с физических серверов в облако необходимо перенести базу данных и файлы (изображения/документы, загруженные редакторами) со старых серверов в облако. Обычно во время миграции в облако это делается как минимум дважды: один раз при настройке сред и второй раз со свежими данными в связи с окончательным запуском в облаке.
На протяжении многих лет у Optimizely были разные способы сделать это, но наметилась тенденция к все большему количеству самообслуживаемых и удобных для разработчиков решений.
Создать ключи API
Для переноса данных в Среду интеграции в DXP нам нужны API-ключи, которые можно создать на портале самообслуживания, также называемом порталом PaaS. Нажмите кнопку «Добавить учетные данные API» на вкладке API.
Затем выберите «Интеграция» и дайте ключу описательное имя.
Обязательно сохраните секрет API, который отображается только один раз. Вам также понадобится ключ API и идентификатор проекта, но они также могут быть отображены позже.
Примечание. Переносить базы данных/файлы можно только непосредственно в среду интеграции. Затем вы можете использовать портал самообслуживания для перемещения контента на предварительную версию. Перенос баз данных/файлов в производство вы можете сделать это самостоятельно только при первом развертывании. Для последующих обновлений баз данных/файлов в рабочей среде необходимо обратиться в службу поддержки Optimizely.
Перенос базы данных
Файл базы данных, который вы передаете в DXP, должен быть в формате bacpac, который вы можете создать из SQL Management Studio следующим образом.
Для переноса базы данных и файлов в DXP мы используем команду API развертывания через модуль Powershell ЭпиКлауд. Вы можете установить этот модуль из Powershell таким образом.
Install-Module -Name EpiCloud
Затем файл загружается следующим образом. Важно, чтобы имя файла было в этом формате, просто замените часть даты на сегодняшнюю дату.
$saslink = Get-EpiDeploymentPackageLocation
Add-EpiDeploymentPackage
-SasUrl $saslink
-Path "C:dbintegration.cms.sqldb.20231231.bacpac"
Вам будет предложено ввести значения, которые вы получили при создании ключа API.
После завершения загрузки таким способом вы запускаете развертывание базы данных в среду интеграции.
Start-EpiDeployment
-DeploymentPackage ("integration.cms.sqldb.20231231.bacpac")
-TargetEnvironment "Integration" -DirectDeploy
Вы можете следить за статусом развертывания на портале самообслуживания, а также получите электронное письмо, когда оно будет завершено.
Передача файлов/блобов
При передаче файлов вы можете использовать тот же ключ API, что и при переносе базы данных. Разница здесь в том, что мы используем ключ API для создания токена SAS с ограниченным сроком действия, который используется для передачи файлов.
Многие предпочитают использовать Azure Storage Explorer, но у меня был неудачный опыт передачи больших объемов данных (>50 ГБ), когда Azure Storage Explorer внезапно давал сбой. Поэтому я предпочитаю azcopy
из командной строки, где у меня никогда не возникало проблем.
Чтобы создать токен SAS, используйте следующую команду. Контейнер больших двоичных объектов в Optimizely DXP всегда называется «mysitemedia».
Get-EpiStorageContainerSasLink
-Writable
-Environment "Integration"
-StorageContainer "mysitemedia"
Вы должны снова предоставить три значения, которые вы получили при создании ключа API, и взамен вы получите URL-адрес с токеном SAS, аналогичный этому.
https://nasa1337binte.blob.core.windows.net/mysitemedia?sv=2023-01-03&se=2024-12-31T23%3A59%3A00Z&sr=c&sp=rwl&sig=1337%
Обратите внимание, что URL-адрес может быть разделен на две строки с разрывами строк и несколькими пробелами. Вы должны вручную удалить их, прежде чем использовать его дальше.
Если у вас еще нет azcopy, вам необходимо скачать азкопию. Затем вы можете запустить следующую команду, предполагая, что d:blobs содержит все файлы, которые вы хотите перенести.
azcopy copy "d:blobs*" "https://nasa1337binte.blob.core.windows.net/mysitemedia?sv=2023-01-03&se=2024-12-31T23%3A59%3A00Z&sr=c&sp=rwl&sig=1337%" --recursive=true
В отличие от базы данных, файлы будут доступны в среде интеграции сразу после загрузки.
Это так просто! 😁