【Azure 云服务】如何从Azure Cloud Service中获取项目的部署文件

问题描述

在历史已经部署的云服务(Azure Cloud Service)中,如何获取到项目在很久以前的部署包文件呢?

解决办法

1)如果部署云服务是通过门户上传部署包到存储账号中,则可以直接从存储账号(Storage Account -> BLOB)中直接下载部署包

 

2)如果无法找到部署时候使用的存储账号(Storage Account)或已经删除了部署包所存储的资源。也可以通过Cloud Service所提供的API来实现(Get Package)。

Get Package:获取用于部署的云服务部署包,并将部署包文件存储在Microsoft Azure Blob中,存储的文件包含两种(配置文件和项目文件):

  • Service configuration file(.cscfg) – 包含云服务的配置信息,Role的定义和实例数量等

  • Service package(.cspkg) – 包含项目代码和服务定义文件

在中国区使用的Endpoint为://management.core.chinacloudapi.cn/<subscription-id>/services/hostedservices/<cloudservice-name>/deployments/<deployment-name>/package

 

关于详细使用Get Package下载部署包的操作步骤,可以参考原文档://techcommunity.microsoft.com/t5/azure-paas-blog/azure-cloud-service-download-package/ba-p/819730

 

准备Azure Tools工具

执行以下步骤

  1. 双击下载的AzureTools.exe文件,点击Utils Tab页
  2. 选择其中的Misc Tools.
  3. 在新弹出的窗口中,选择Service Management REST API Tab页
  4. 创建自定义证书(如果已经有云服务的自定义证书,则在Misc Tools中直接导入.cer的证书文件)
    • 可以通过IIS创建自定义证书或者使用openssl 及 Certreq.exe生成证书。详细可以参考文档://technet.microsoft.com/en-us/library/ff710475(v=ws.10).aspx
    • 在本地计算机中安装新生成的证书 
    • 上传证书(.cer格式的文件)到云服务中
    • Azure门户 –> 云服务 –> 证书管理(Certificates) –>上传新证书
  5. 在Misc Tool的Service Management REST API Tab中,数据当前的订阅号,选择上一步创建的证书文件,选择POST操作
  6. 填写Get Package的URL并携带正确的参数。如<subscription-id>,<cloudservice-name>,<deployment-name> 和 containerUri参数。参考文档://docs.microsoft.com/en-us/previous-versions/azure/reference/jj154121(v=azure.100)
    •  containerUri参数的值为Storage Account存储账号,需要一个Public的container的URL用于存储云服务的部署包
  7. 点击Submit按钮,等待API的返回为202 – Accpeted后,即可以在上一步中的Stroage Account中查看到部署包

 

 

 

当下载云服务的部署包后,可以直接在文件中查看当项目资源文件,也可以直接把该文件部署到Azure应用服务中。部署包的项目文件结构如下图所示:

 

 

参考资料 

Get Package//docs.microsoft.com/en-us/previous-versions/azure/reference/jj154121(v=azure.100)
Azure Cloud Service Download Package//techcommunity.microsoft.com/t5/azure-paas-blog/azure-cloud-service-download-package/ba-p/819730
Create and export a self-signed certificate//docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ff710475(v=ws.10)?redirectedfrom=MSDN