2017-02-14 53 views
1

我正在構建一個Azure函數,爲此我使用了一種預編譯方法。在函數本身中,我們只有一個調用「Process.Run()」來啓動一個預編譯的私有DLL。這些DLL都保存在Web應用程序根目錄的共享文件夾中。使用共享程序集部署Azure函數

儘管我們可以看到所有內容都完美運行,但現在我們希望通過ARM模板或PowerShell腳本(ZIP)進行部署。我們也使用Visual Studio預覽功能模板。

中,我們希望部署的形式是

-- Host 
---Shared (Deploy DLL's in this folder) 
---HttpTriggerFunctionCSharep1 
----(Deploy the needed files to this directory) 
+0

您是否在使用VSTS部署此ARM模板? –

+0

目前還不是,但它必須是一個完整的腳本部署 –

回答

0

有幾種方法可以在其中部署Azure的功能。 Here是一個很好的博客文章,我將在下面爲您概括它,並添加第四點。

  1. GIT集成
  2. KUDU REST API
  3. MSdeploy.exe/WAWSDeploy.exe
  4. ARM模板與MSDeploy結合。

我的首選方法是#4。您需要爲此部署執行幾個步驟。

  1. 創建包含Azure功能應用程序代碼的ZIP。 ZIP中的內容需要有correct folder structure
  2. 將此ZIP上載到Azure存儲區blob容器。
  3. 在您的ARM模板部署一個空函數的應用程序(This one可以是你的出發點。)
  4. 添加MSDeploy ARM資源到Azure的功能應用部署ZIP的功能應用。這是一個MSDeploy資源的一個示例:
{ 
    "name": "MSDeploy", 
    "type": "extensions", 
    "location": "[resourceGroup().location]", 
    "apiVersion": "2015-08-01", 
    "dependsOn": [ 
     "[concat('Microsoft.Web/sites/', variables('functionAppName'))]" 
    ], 
    "properties": { 
     "packageUri": "[concat('https://',parameters('storageAccount'), '.blob.core.windows.net/', parameters('storageContainer'), '/', parameters('zipFile'))]", 
     "dbType": "None", 
     "connectionString": "" 
    } 
} 

我還發現其也基於我上述原理此實例實施方案:https://github.com/ianalderman/AZF_Samples/tree/master/DeploymentExample

+0

4號是我們現在使用的選項。我們使用一個空的Web項目來創建部署包,並且我們通過ARM模板進行部署。但我希望能有更好或更簡單的解決方案。 –

+0

我目前還沒有意識到更好的方法。我們也正在使用這種方法以及我們已經運行的幾個函數。 –