如何在不需要在本地下载完整副本的情况下从其他Web应用加载到Web应用程序文件中?
我们有一些网站(大多数是共享定价)我们需要从另一个网站加载请求数据,应用程序架构需要这种分离和“同步”仅在请求时,可以不需要本地下载所有文件?
我看了一眼:
Stack Overflow :: How do I copy a website from one azure website to another (not deployment slots)?
Stack Overflow :: Is it possible to copy an Azure Website?
但没有帮助。 SiteReplicator似乎太自动(无法使其工作)并且备份不允许粒度(90%os站点需要同步,但10%不应该)。并且下载工作区不会避免本地加载,
什么会很棒,这将是一个ftp2ftp连接,所以我可以镜像所需的文件夹,而不是其余的,但cdm通过.scm.azurewebsites.net不允许ftp(访问被拒绝)
答案 0 :(得分:1)
Azure应用服务(Web应用程序,移动应用程序,API应用程序等)支持应用程序克隆,使用户能够将现有Web应用程序克隆到不同区域或新的应用程序中同一地区。
Azure App Service App Cloning Using Azure Portal
Azure App Service App Cloning Using PowerShell
重要提示:目前仅支持高级套餐应用服务计划进行应用程序克隆。
要解决此约束,您可以将要克隆的Web应用程序扩展到Premium层,然后在克隆完成后缩小到原始层。
答案 1 :(得分:0)
根据我的理解,我假设您可以利用KUDU REST API中的Zip API
从源Web应用程序下载特定文件夹/文件作为zip文件,然后将压缩文件扩展到您的文件夹中的文件夹中另一个Web App。以下是使用PowerShell的Zip REST API的示例:
$username = "`$website"
$password = "pwd"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))
$userAgent = "powershell/1.0"
$apiUrl = "https://{sitename}.scm.azurewebsites.net/api/zip/site/wwwroot"
$filePath = "C:\Temp\books.zip"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method PUT -InFile $filePath -ContentType "multipart/form-data"
另外,您可以利用Azure WebJobs在源Web应用程序的上下文中作为后台进程运行,以定期或手动调用Zip API来同步两个Web应用程序之间的内容。
注意:您可以利用Web App的文件系统作为临时文件夹来存储您的zip文件。有关详细信息,请参阅Azure Web Apps File system。
答案 2 :(得分:0)
令我惊讶的是,他们仍然没有直接在Azure中添加插槽复制功能。为了在较早的评论中回答David Makogon的问题,我们有一些大文件被排除在部署过程之外,因此仅部署到一个空插槽并不会重新创建启动应用程序所需的所有文件。通过将其他一些指南拼凑起来,我找到了一种回旋解决方案。
$ srcapp = Get-AzWebApp -ResourceGroupName“ ResourceGroupName”-名称“ AppServiceName”
$ destapp = New-AzWebAppSlot -ResourceGroupName ResourceGroupName-名称“ AppServiceName”-插槽“ SlotName” -AppServicePlan“ AppServicePlan” -SourceWebApp $ srcapp
请注意,第二个命令中的资源组名未用引号引起来。
快速创建现有应用程序服务的新实例。我使用Azure中的内置克隆应用程序服务功能对其进行了克隆。然后使用以上命令创建部署插槽。