2016-04-19 8 views
6

का उपयोग करके एज़ूर फ़ंक्शंस पर नियोजित करें क्या कोई तरीका है, मैं पावरहेल स्क्रिप्ट का उपयोग करके एज़ूर फ़ंक्शंस पर तैनात कर सकता हूं? सीआई हमारे लिए काम नहीं करेगा क्योंकि हम अपने सभी उत्पादन सेवाओं को तैनात करने के लिए ऑक्टोपस तैनाती का उपयोग करते हैं। इसलिए यदि पावरहेल स्क्रिप्ट का उपयोग करके तैनाती करने का कोई तरीका है तो यह फायदेमंद होगा।शक्तियों

धन्यवाद!

उत्तर

7

आप Kudu REST API का उपयोग करके Azure में फ़ंक्शंस को तैनात कर सकते हैं। आप हमारे templates repository में ऐसा करने के कुछ कोड/नमूने भी देख सकते हैं। this कोड नमूना में, आप देख सकते हैं कि हमारी टेस्ट स्क्रिप्ट फ़ंक्शन ऐप में ज़िप को तैनात करने के लिए Kudu Rest apis पर कैसे कॉल करती है।

कार्यों के लिए folder structure प्रति फ़ोल्डर एक समारोह है। फ़ंक्शन ऐप पर आपको अपने फ़ंक्शन फ़ोल्डरों को ./site/wwwroot पर तैनात करने की आवश्यकता है। यदि आप अपडेट के बीच कोई नई बाइंडिंग जोड़ते हैं तो आपको किसी भी ऐप सेटिंग्स को जोड़ने की आवश्यकता होती है जिसमें आपके रहस्य हो सकते हैं।

PowerShell कोड की तर्ज पर कुछ ऐसा दिखाई देगा:

$apiUrl = $config.scmEndpoint + "/api/zip/" 
    if ($destinationPath) 
    { 
     $apiUrl = $apiUrl + $destinationPath 
    } 

    $response = Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $config.authInfo)} -Method PUT -InFile $zipFilePath -ContentType "multipart/form-data" 
+0

सिर्फ "इस" यूआरएल, आशा अपनी सोच के साथ वैध रहने को सही –

5

कार्तिक का वर्णन करने के अलावा, वहाँ एक प्रथम श्रेणी के एआरएम एपीआई आप कार्यों को तैनात करने के लिए उपयोग कर सकते है। यहां बताया गया है यह PowerShell में की तरह लग रहा है:

Function DeployHttpTriggerFunction($ResourceGroupName, $SiteName, $FunctionName, $CodeFile, $TestData) 
{ 
    $FileContent = "$(Get-Content -Path $CodeFile -Raw)" 

    $props = @{ 
     config = @{ 
      bindings = @(
       @{ 
        type = "httpTrigger" 
        direction = "in" 
        webHookType = "" 
        name = "req" 
       } 
       @{ 
        type = "http" 
        direction = "out" 
        name = "res" 
       } 
      ) 
     } 
     files = @{ 
      "index.js" = $FileContent 
     } 
     test_data = $TestData 
    } 

    New-AzureRmResource -ResourceGroupName $ResourceGroupName -ResourceType Microsoft.Web/sites/functions -ResourceName $SiteName/$FunctionName -PropertyObject $props -ApiVersion 2015-08-01 -Force 
} 

अंतर्निहित एपीआई के बारे में जानकारी के लिए https://github.com/projectkudu/kudu/wiki/Functions-API देखें।

+0

मैं कार्यों के लिए प्राप्त कर सकते हैं 'Invoke-RestMethod' और नीचे दिए गए एंडपॉइंट का उपयोग करके लॉग इन करें। आप प्रथम श्रेणी एआरएम एपीआई के साथ PowerShell में यह कैसे कर सकते हैं? '$ scmEndpoint =" https: //$SiteName.scm.azurewebsites.net/api/vfs/LogFiles/Application/Functions/Function/$functionName/ "' –

+0

क्या यह काम करता है यदि मैं एक नया-नया तैनाती करना चाहता हूं फंक्शन ऐप? मुझे यह बताते हुए एक त्रुटि मिलती है कि संसाधन नहीं मिला। – willem

+0

@ डेविड एब्बो इस के साथ एक कस्टम असेंबली कैसे अपलोड करता है। क्या इस परिदृश्य के लिए कोई कोड नमूने हैं? – raghav710

1

तुम भी Azure CLI 2.0 + Azure Function CLI Azure कार्यों को तैनात करने के लिए उपयोग कर सकते प्रपत्र कमांडलाइन/powershell

Azure CLI एपीआई, प्रावधान एक समारोह अनुप्रयोग के लिए इस्तेमाल किया जा सकता आदेश

az functionapp create --name $functionappName --resource-group $resourceGroup --storage-account $storageAccountName --consumption-plan-location $consumptionPlanLocation 

और लागू आवेदन

की स्थापना का उपयोग कर
az functionapp config appsettings set --name $functionappName --resource-group $resourceGroup --settings "test=value" 

और Azure फ़ंक्शन सीएलआई एपीआई का उपयोग आपके पास

01 के कार्यों को तैनात करने के लिए किया जा सकता है
func azure functionapp publish <azurefunctionapp> 

हैंडी टूल्स!

3

बस मेरे जैसे ऐसे लोग हैं जिन्हें चरण-दर-चरण समाधान की आवश्यकता है। यहाँ प्रक्रिया powershell का उपयोग कर नीला कार्यों को तैनात करने के (गैर एआरएम रास्ता)

  1. myFunctionName फ़ोल्डर की एक ज़िप निम्नलिखित संरचना

    myFunctionName(Folder) 
    | 
    |_ function.json (contains info on input, output, trigger) 
    |_ run.csx (contains code) 
    |_ [OPTIONAL] project.json (for nuget packages) 
    |_ [OPTIONAL] bin(Folder) 
        |_ all custom DLLs go in this folder 
    
  2. के साथ एक नीला समारोह बनाएँ है - चलो इसे नाम my.zip ।सुनिश्चित करें कि my.zip ज़िप करने के बाद myFunctionName फ़ोल्डर और उसकी सभी सामग्री

  3. अपने खोजें वर्णित here के रूप में प्रोफ़ाइल यूज़रनेम और पासवर्ड प्रकाशित करते हैं,

$creds = Invoke-AzureRmResourceAction -ResourceGroupName YourResourceGroup -ResourceType Microsoft.Web/sites/config -ResourceName YourWebApp/publishingcredentials -Action list -ApiVersion 2015-08-01 -Force 

    $username = $creds.Properties.PublishingUserName 
    $password = $creds.Properties.PublishingPassword 

शामिल अर्थात् करें और फिर powershell का उपयोग कर कुडू REST API का आह्वान इस प्रकार

$username = '<publish username>' #IMPORTANT: use single quotes as username may contain $ 
    $password = "<publish password>" 
    $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password))) 

    $apiUrl = "https://<yourFunctionApp>.scm.azurewebsites.net/api/zip/site/wwwroot" 
    $filePath = "<yourFunctionName>.zip" 
    Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method PUT -InFile $filePath -ContentType "multipart/form-data" 
  1. जाओ करने के लिए <yourFunctionApp>.scm.azurewebsites.net -> Debug menu at the top -> CMD। दिखाई देने वाले पेज में, site -> wwwroot पर नेविगेट करें। आपको वहां निकाली गई अपनी ज़िप फ़ाइल की सामग्री देखना चाहिए और आप यह भी सत्यापित कर सकते हैं कि आपका एज़ूर फ़ंक्शन अज़ूर पोर्टल में उपलब्ध है।

दें संदर्भ

  1. https://github.com/projectkudu/kudu/wiki/REST-API#sample-of-using-rest-api-with-powershell

  2. http://markheath.net/post/deploy-azure-functions-kudu-powershell

+0

मेरी इच्छा है कि यह इस पोस्ट का शीर्ष उत्तर था, यह मुझे एक सप्ताह बचा सकता: -X –

संबंधित मुद्दे