问题描述
在历史已经部署的云服务(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为:https://management.core.chinacloudapi.cn/<subscription-id>/services/hostedservices/<cloudservice-name>/deployments/<deployment-name>/package
关于详细使用Get Package下载部署包的操作步骤,可以参考原文档:https://techcommunity.microsoft.com/t5/azure-paas-blog/azure-cloud-service-download-package/ba-p/819730
准备Azure Tools工具
- 从链接中下载Azure Tools工具: http://dsazure.blob.core.windows.net/azuretools/AzureTools.exe
- 更多关于Azure Tools的信息可以查看MSDN博客内容:https://docs.microsoft.com/en-us/archive/blogs/kwill/azuretools-the-diagnostic-utility-used-by-the-windows-azure-developer-support-team
执行以下步骤
- 双击下载的AzureTools.exe文件,点击Utils Tab页
- 选择其中的Misc Tools.
- 在新弹出的窗口中,选择Service Management REST API Tab页
- 创建自定义证书(如果已经有云服务的自定义证书,则在Misc Tools中直接导入.cer的证书文件)
- 可以通过IIS创建自定义证书或者使用openssl 及 Certreq.exe生成证书。详细可以参考文档:https://technet.microsoft.com/en-us/library/ff710475(v=ws.10).aspx
- 在本地计算机中安装新生成的证书
- 上传证书(.cer格式的文件)到云服务中
- Azure门户 --> 云服务 --> 证书管理(Certificates) -->上传新证书
- 在Misc Tool的Service Management REST API Tab中,数据当前的订阅号,选择上一步创建的证书文件,选择POST操作
- 填写Get Package的URL并携带正确的参数。如<subscription-id>,<cloudservice-name>,<deployment-name> 和 containerUri参数。参考文档:https://docs.microsoft.com/en-us/previous-versions/azure/reference/jj154121(v=azure.100)
- containerUri参数的值为Storage Account存储账号,需要一个Public的container的URL用于存储云服务的部署包
- 点击Submit按钮,等待API的返回为202 - Accpeted后,即可以在上一步中的Stroage Account中查看到部署包
当下载云服务的部署包后,可以直接在文件中查看当项目资源文件,也可以直接把该文件部署到Azure应用服务中。部署包的项目文件结构如下图所示:
参考资料
Get Package: https://docs.microsoft.com/en-us/previous-versions/azure/reference/jj154121(v=azure.100)
Azure Cloud Service Download Package: https://techcommunity.microsoft.com/t5/azure-paas-blog/azure-cloud-service-download-package/ba-p/819730
Create and export a self-signed certificate: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ff710475(v=ws.10)?redirectedfrom=MSDN