Cvičení – nasazení a export pracovního postupu Azure Logic Apps pomocí šablony ARM

Dokončeno

V předchozím cvičení jsme nasadili aplikaci logiky pomocí základní šablony Azure Resource Manageru. Tato šablona byla nepružná v tom, že vše bylo pevně zakódováno. Pokud chcete například změnit název pracovního postupu nebo umístění nasazení aplikace, musíte šablonu upravit. Ve scénářích, ve kterých máte ve skriptovém prostředí více nasazení, se ruční úprava šablony stává těžkopádná. Lepším řešením je zadávat hodnoty pro přizpůsobení nasazení prostředků jako parametry.

Aktualizace šablony, aby se používaly parametry šablony

  1. Zkopírujte základní šablonu, kterou jsme použili v předchozím cvičení, pomocí následujícího cp příkazu:

    cp basic-template.json template-with-params.json
    
  2. Otevřete šablonu v integrovaném editoru pomocí následujícího code příkazu:

    code template-with-params.json
    

    Prvním krokem je přidání parametrů, abychom mohli snadno přizpůsobit název a umístění aplikace, kde se aplikace spouští.

  3. parameters Nahraďte oddíl v šabloně následujícím fragmentem kódu, který přidá dva nové parametry a logicAppNamelocation:

    "parameters": {
        "logicAppName": {
            "type": "string",
            "metadata": {
              "description": "The name of the logic app to create."
            }
          },
        "location": {
        "type": "string",
        "defaultValue": "[resourceGroup().location]",
        "metadata": {
              "description": "Location for all resources."
            }
        }
    },
    

    Oba parametry jsou řetězce. Pro parametr neposkytujeme výchozí hodnotu logicAppName , což znamená, že je potřeba zadat jednu hodnotu v době nasazení. Naproti tomu je nepovinný, location protože zadáme výchozí hodnotu.

    Výchozí hodnota parametru location je umístění skupiny prostředků, do které je aplikace nasazená. Tuto hodnotu získáme odkazem na vlastnost location ze skupiny prostředků, kterou vrátí funkce šablony resourceGroup(). Výrazy začínají a končí levou a pravou závorkou ([ ]) v uvedeném pořadí. Hodnota výrazu se vyhodnotí při dokončení nasazení šablony. Výraz může vrátit řetězec, celé číslo, logickou hodnotu, pole nebo objekt. V šabloně můžete definovat maximálně 256 parametrů.

    Teď, když jsme definovali dva nové parametry, použijeme je v šabloně nahrazením pevně zakódovaných hodnot odkazy na nové parametry.

  4. name Nahraďte pole location v oddílu prostředků šablony tak, aby používaly naše nové parametry, jak je znázorněno v následujícím fragmentu kódu:

    "name": "[parameters('logicAppName')]",
    "location": "[parameters('location')]",
    
  5. Nahraďte oddíl outputs v dolní části šablony následujícím kódem. Aktualizujeme hodnotu logicAppUrl proměnné šablony tak, aby používala logicAppName také parametr, jak je znázorněno v následujícím fragmentu kódu:

    "outputs": {
        "logicAppUrl": {
           "type": "string",
           "value": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows/', parameters('logicAppName')), '/triggers/manual'), '2017-07-01').value]"
        }
     }
    
  6. Stisknutím kláves Ctrl + S uložte všechny změny do template-with-params.json.

Nasazení prostředku aplikace logiky pomocí parametrizované šablony

Existují dva způsoby, jak pomocí příznaku --parameters v příkazu az deployment group create během nasazení předat parametry šabloně. Můžeme zadat identifikátor URI vzdáleného souboru s parametry nebo název místního souboru. Použijeme místní soubor.

Vytvoření souboru JSON s parametry

  1. Vytvořte nový soubor volaný params.json v integrovaném editoru kódu pomocí následujícího příkazu:

    code params.json
    
  2. Do params.json vložte následující KÓD JSON a uložte změny stisknutím kláves Ctrl + S.

    { 
        "logicAppName": { 
            "value": "myLogicApp" 
        } 
    }
    

Ověření šablony

  1. V Cloud Shellu spusťte az deployment group validate příkaz k ověření šablony:

    az deployment group validate \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file template-with-params.json \
    --parameters @params.json
    

    Argument --template-file odkazuje na místní šablonu. Název souboru šablony je template-with-params.json.

    Jako výstup se zobrazí velký blok JSON, který vám řekne, že šablona prošla ověřením.

    Azure Resource Manager vyplní parametry šablony a zkontroluje, jestli by se šablona úspěšně spustila ve vašem předplatném.

    Pokud se ověření nezdařilo, zobrazí se ve výstupu podrobný popis selhání.

Nasazení šablony s parametry z místního souboru

  1. Spuštěním následujícího příkazu v Cloud Shellu nasaďte prostředek aplikace logiky s názvem aplikace převzatým ze souboru params.json . V souborulocation params.json není parametr nastavený, takže se použije výchozí hodnota.

    az deployment group create \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file template-with-params.json \
    --parameters @params.json
    

    Nasazení bude chvíli trvat a průběh můžete sledovat v příkazovém řádku Cloud Shellu. Až se nasazení dokončí, měli byste ve výsledku JSON vidět provisioningState s hodnotou Succeeded.

  2. Pokud chcete vidět aplikaci v akci, vyhledejte ve výsledku JSON hodnotu logicAppUrl. Vyberte adresu URL nebo ji zkopírujte a vložte ji do nového okna prohlížeče. Na stránce se zobrazí zpráva Hello Azure Logic Apps Template! .

Nasazení šablony s parametry z příkazového řádku

Místo provádění úprav souboru s parametry při každém nasazování z příkazového řádku můžeme parametry zadávat v řetězci JSON na příkazovém řádku.

  1. Spuštěním následujícího příkazu v Cloud Shellu nasaďte prostředek aplikace logiky s názvem aplikace a jeho umístěním předaným jako řetězec JSON na příkazovém řádku:

    az deployment group create \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file template-with-params.json \
    --parameters '{ "logicAppName": {"value":"MyLogicApp2"}, "location": {"value":"East US"}}'
    

    Nasazení bude chvíli trvat a průběh můžete sledovat v příkazovém řádku Cloud Shellu. Až se nasazení dokončí, měli byste ve výsledku JSON vidět provisioningState s hodnotou Succeeded.

  2. Pokud chcete vidět aplikaci v akci, vyhledejte ve výsledku JSON hodnotu logicAppUrl. Vyberte adresu URL a vložte ji do nového okna prohlížeče. Na stránce se zobrazí zpráva Hello Azure Logic Apps Template! .

  3. Spuštěním následujícího příkazu zobrazte seznam všech pracovních postupů Azure Logic Apps, které jsme zatím nasadili:

    az resource list \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --resource-type Microsoft.Logic/workflows \
    --query [*].[name,location] --output tsv
    

    Tento příkaz zobrazí seznam tří pracovních postupů Azure Logic Apps, které jsme zatím nasadili, a to vše ze šablony.

Aktualizace akce aplikace v šabloně Azure Resource Manageru

Teď se zaměříme na to, aby naše aplikace prováděla trochu víc než pouhé vracení statické zprávy. Aplikaci ponecháme jako pracovní postup aktivovaný protokolem HTTP, který stále vrátí odpověď HTTP. Pojďme předat některé hodnoty s požadavkem a nechat aplikaci provést výpočet. Provedeme základní výpočet oblasti. Předpokládejme, že předávané vstupy představují výšku a šířku obdélníku a vrátit se má jeho plocha. Pak nasadíme novou aplikaci a podíváme se, jak běží.

  1. Spuštěním následujícího příkazu v Cloud Shellu otevřete template-with-params.json v integrovaném editoru:

    code template-with-params.json
    
  2. relativePath Přidejte pole do části vstupů triggeru požadavku HTTP, jak je znázorněno v následujícím fragmentu kódu:

    "inputs": {
        "method": "GET",
        "relativePath": "{width}/{height}",
        "schema": {}
    }
    

    Položka relativePath určuje parametry, které má adresa URL koncového bodu HTTP přijímat. V tomto případě definujeme dva parametry, šířku a výšku. Tyto hodnoty parametrů použijeme k výpočtu oblasti a vrácení výsledku.

  3. Aktualizujte text akce Odpovědi následujícím řádkem:

    "body": "Response from @{workflow().name}  Total area = @{mul( int(triggerOutputs()['relativePathParameters']['height'])  , int(triggerOutputs()['relativePathParameters']['width'])  )}",
    

    Aktualizovaná odpověď provádí následující úlohy:

    • Vytiskne název prostředku aplikace logiky. Odpověď volá workflow() funkci, která vrátí informace o pracovním postupu. Z tohoto výsledku odkazujeme na vlastnost name.

    • Vrátí součin celočíselného ekvivalentu pro řetězcové hodnoty výšky a šířky z parametrů adresy URL. Tento úkol používá mul() funkci a int() převodní funkci.

  4. Stisknutím kláves Ctrl + S uložte všechny změny do template-with-params.json.

  5. Po provedení těchto změn pomocí příkazu v Cloud Shellu az deployment group validate šablonu ověřte. V tomto příkladu nastavíme název aplikace na CalculateArea pomocí vloženého parametru.

    az deployment group validate \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file template-with-params.json \
    --parameters '{ "logicAppName": {"value":"CalculateArea"}}'
    
  6. Spuštěním následujícího příkazu nasaďte tyto změny do aplikace logiky CalculateArea. Vynecháme hodnotu parametru location a použijeme výchozí hodnotu.

    az deployment group create \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --template-file template-with-params.json \
    --parameters '{ "logicAppName": {"value":"CalculateArea"}}'
    

    Nasazení bude chvíli trvat, ale průběh můžete sledovat na příkazovém řádku Cloud Shellu. Až se nasazení dokončí, měli byste ve výsledku JSON vidět provisioningState s hodnotou Succeeded.

  7. Pokud chcete vidět aplikaci v akci, vyhledejte ve výsledku JSON hodnotu logicAppUrl. Vyberte adresu URL a vložte ji do nového okna prohlížeče.

  8. Aktualizujte adresu URL v prohlížeči tak, že změníte /triggers/manual/paths/invoke?api na /triggers/manual/paths/invoke/{width}/{height}?api, kde {width} a {height} jsou celočíselné hodnoty pro šířku a výšku plochy, kterou chceme vypočítat. Například /triggers/manual/paths/invoke/6/7?api. Odpověď z aplikace zobrazí název pracovního postupu a počítanou oblast, jak je znázorněno na následujícím snímku obrazovky:

    Sceenshot of web browser displaying response from our app called calculate area.

  9. Spuštěním následujícího příkazu zobrazte seznam všech pracovních postupů Azure Logic Apps, které jsme zatím nasadili:

    az resource list \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" \
    --resource-type Microsoft.Logic/workflows \
    --query [*].[name,location] --output tsv
    

V tomto cvičení jsme nastavili větší flexibilitu pro šablonu pomocí parametrů. Tyto parametry jsme zadávali na příkazovém řádku a pomocí místního souboru. Aktualizovali jsme také akci, kterou provádí náš jednoduchý pracovní postup, a to tak, že jsme provedli změnu body přímo v odpovědi, která se odesílá zpět.

V Cloud Shellu si můžete parametry a soubory šablony stáhnout z GitHubu pomocí následujících příkazů curl.

curl https://github.com/MicrosoftDocs/mslearn-logic-apps-and-arm-templates/blob/master/calculate-area/params.json > params-final.json
curl https://github.com/MicrosoftDocs/mslearn-logic-apps-and-arm-templates/blob/master/calculate-area/template.json > template-with-params-final.json