Run Logic App Anywhere

Published Feb 05 2022 04:12 AM 2,320 Views
Microsoft

Logic App Standard tier or Single Tenant Logic App has now provided the opportunity to build and containerise logic app and thus allowing it to run anywhere - any Cloud, On-Prem or any Infrastructure. This is hosted as an extension on the Azure Functions runtime and like Azure Function, needs a Storage account to store its state.

 

This also means that this containerised version of Logic App can now be hosted on managed K8s services like AKS as well as Serverless Container offerings like Azure Container Apps or on-Prem Bare metal.

Developers can now Design, Develop, Build and Run Logic App end-to-end locally; finally when everything is running fine - then deploy anywhere as they want!

The Only thing that should be considered here is the state of the Logic App which needs to be a Storage account on Azure - apart from this everything else is completely agnostic of the hosting environment!

 

Disclaimer:

At the time of writing this article, running anywhere randomly is not supported.

Currently supported hosting options are -

  • Logic App Standard Plans
  • App Service Environment V3
  • Azure Arc-enabled K8s clusters

 

Plan

 

How to Setup

 

Set CLI Varibales

tenantId="<tenantId>"
subscriptionId="<subscriptionId>"
resourceGroup="<resourceGroup>"
monitoringResourceGroup="<monitoringResourceGroup>?"
location="<location>"
logWorkspace="<logWorkspace>"
basicEnvironment="basic-env"
securedEnvironment="secure-env"
acrName="<acrName>"
registryServer="<container_registry_server>"
registryUserName="<container_registry_username>"
registryPassword="<container_registry_password>"

# Optional - NOT a requirement for Contyainer Apps but mostly for microservice applications
storageName="<storage_account_name>"

# Optional - Primary for Securing Container Apps
containerAppVnetName="containerapp-workshop-vnet"
containerAppVnetId=

# Optional - Subnet for Control plane of the Container Apps Infrastructure
controlPlaneSubnetName="containerapp-cp-subnet"
controlPlaneSubnetId=

# Optional - Subnet for hosting Container Apps
appsSubnetName="containerapp-app-subnet"
appsSubnetId=

# Both Control plane Subnet and Application Services Subnet should be in same VNET viz. $containerAppVnetName

 

Configure Azure CLI

# Add CLI extension for Container Apps
az extension add \
 --source https://workerappscliextension.blob.core.windows.net/azure-cli-extension/containerapp-0.2.0-py2.py3-none-any.whl
 
# Register the Microsoft.Web namespace
az provider register --namespace Microsoft.Web
az provider show --namespace Microsoft.Web

 

Create Resource Groups

# Hosting Container Apps
az group create --name $resourceGroup --location $location

# Hosting Log Analytics Workspace for Container Apps
az group create --name $monitoringResourceGroup --location $location

 

Create Log Analytics Workspace

az monitor log-analytics workspace create --resource-group $monitoringResourceGroup --workspace-name $logWorkspace

# Retrieve Log Analytics ResourceId
logWorkspaceId=$(az monitor log-analytics workspace show --query customerId -g $monitoringResourceGroup -n $logWorkspace -o tsv)

# Retrieve Log Analytics Secrets
logWorkspaceSecret=$(az monitor log-analytics workspace get-shared-keys --query primarySharedKey -g $monitoringResourceGroup -n $logWorkspace -o tsv)

 

Create Container App Environment

# Simple environment with no additional security for the underlying sInfrastructure
az containerapp env create --name $basicEnvironment --resource-group $resourceGroup \
 --logs-workspace-id $logWorkspaceId --logs-workspace-key $logWorkspaceSecret --location $location

 

Deploy Azure Logic App as Container App

Build a Logic App with basic request/response workflow - viz. LogicContainerApp

  • Run and test this Logic app as docker container locally

  • Deploy the Logic App container onto Azure as a Container App

  • Host the Logic App inside a Virtual Network (Secured Environment)

  • Expose the container app with No Ingress - as no inblound access would be needed for this logic app

 

Logic App in a Container

  • Let us first Create and Deploy a Logic app as Docker Container

Logic App runs an Azure Function locally and hence few tools/extensions need to be installed

 

Pre-Requisites
  • Azure Function Core Tools - v3.x

    • The abobve link is for macOS; please install the appropriate links in the same page for other Operating Systems

    • At the time of writing, Core tools 3.x only supports the Logic App Designer within Visual Studio Code

    • The current example has been tested with - Function Core Tools version 3.0.3904 on a Windows box

  • Docker Desktop for Windows

  • A Storage Account on Azure - which is needed by any Azure function App

    • Logic App (aka Azure Function) would use this storage to cache its state

  • VS Code Extension for Standard Logic App

  • VS Code Extension for Azure Function

  • VS Code extension for Docker

    • This is Optional but recommended; it makes life easy while dealing with Dockerfile and Docker CLI commands

  • Create a Local folder to host all files related Logic App - viz. LogicStorageApp

  • Open the folder in VS Code

  • Create a New Logic App Project in this Folder

    • Choose Stateful workflow in the process and name accordingly - viz. processstgflow

    • This generates all necessary files and sub-folders within the current folder

    • A folder named processstgflow is also added which contains the workflow.json file

    • This describes the Logic App Actions/triggers

    • This example uses one Blob trigger and one Queue trigger

 

logic-storageapp-workflow-json.png

 

  • Right click on the workflow.json file and Open the Logic App Designer - this might take few seconds to launch

  • Add Blob trigger

 

logic-storageapp-blob.png

 

  • Add Queue trigger

 

logic-storageapp-queue.png

 

  • Save the Designer changes

  • Right click on the empty area on the workspace folder structure and Open the Context menu

 

logic-storageapp-menu.png

 

  • Select the menu options that says - Convert to Nuget-based Logic App project

  • This would generate .NET specific files - along with a LogicStorageApp.csproj file

 

logic-storageapp-menu-nuget.png

 

Open the local.settings.json file

  • Replace the value of AzureWebJobsStorage variable with the value from Storage Account Connection string created earlier

  • Add a Dockerfile in the workspace

     

    FROM mcr.microsoft.com/azure-functions/node:3.0

    ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
        AzureFunctionsJobHost__Logging__Console__IsEnabled=true \
        FUNCTIONS_V2_COMPATIBILITY_MODE=true \    
        AzureWebJobsStorage='' \
        AZURE_FUNCTIONS_ENVIRONMENT=Development \
        WEBSITE_HOSTNAME=localhost \
        WEBSITE_SITE_NAME=logicstorageapp

    COPY ./bin/Debug/netcoreapp3.1 /home/site/wwwroot

     

  • WEBSITE_SITE_NAME - this is the name by which entries are created in Storage Account by the Logic App while caching its state

     

  • Build docker image
docker build -t <repo_name>/<image_name>:<tag> .

 

  • Create and Run the Logic App Container
docker run --name logicstorageapp -e AzureWebJobsStorage=$azureWebJobsStorage -d -p 8080:80 <repo_name>/<image_name>:<tag>

 

Setup Azure Container App

 

  • Create Virtual Network to inject Container Apps

    containerAppVnetId=$(az network vnet show -n $containerAppVnetName --resource-group $resourceGroup --query="id" -o tsv)

    controlPlaneSubnetId=$(az network vnet subnet show -n $controlPlaneSubnetName --vnet-name $containerAppVnetName --resource-group $resourceGroup --query="id" -o tsv)

    appsSubnetId=$(az network vnet subnet show -n $appsSubnetName --vnet-name $containerAppVnetName --resource-group $resourceGroup --query="id" -o tsv)

     

  • Create a Secured Environment for Azure Container Apps with this Virtual Network

    az containerapp env create --name $securedEnvironment --resource-group $resourceGroup \
     --logs-workspace-id $logWorkspaceId --logs-workspace-key $logWorkspaceSecret --location $location \
     --controlplane-subnet-resource-id $controlPlaneSubnetId \
     --app-subnet-resource-id $appsSubnetId

     

Logic App as Azure Container App

Let us now deploy the logic app container onto Azure as Container App

  • Push Logic App container image to Azure Container Registry

    # If Container image is already created and tested, use Docker CLI
    docker push <repo_name>/<image_name>:<tag>
     
    OR
     
    # Use Azure CLI command for ACR to build and push
    az acr build -t <repo_name>/<image_name>:<tag> -r $acrName .
  • Create Azure Container App with this image

    logicappImageName="$registryServer/logicstorageapp:v1.0.0"
    azureWebJobsStorage=""
    blobConnectionString=""
    queueConnectionKey=""
         
    az containerapp create --name logicstorageapp --resource-group $resourceGroup \
     --image $logicappImageName --environment $securedEnvironment \
     --registry-login-server $registryServer --registry-username $registryUserName \
     --registry-password $registryPassword \
     --ingress internal --target-port 80 --transport http \
     --secrets azurewebjobsstorage=$azureWebJobsStorage,bloconnstring=$blobConnectionString,queueconnstring=$queueConnectionKey \
     --environment-variables "AzureWebJobsStorage=secretref:azurewebjobsstorage,AzureBlob_connectionString=secretref:bloconnstring,azurequeues-connectionKey=secretref:queueconnstring"

     

Test End-to-End

 

Let us now Test the logic app locally as a Docker container

 

  • Upload image to the Blob container e.g. logicblob

logic-storageapp-test-blob.png

 

  • Check the image name being added to the Queue e.g. logicqueue

logic-storageapp-test-queue.png

 

 

%3CLINGO-SUB%20id%3D%22lingo-sub-3118351%22%20slang%3D%22en-US%22%3ERun%20Logic%20App%20Anywhere%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-3118351%22%20slang%3D%22en-US%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3ELogic%20App%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EStandard%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20tier%20or%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-meta-i-c%20%20md-link%22%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Flogic-apps%2Fsingle-tenant-overview-compare%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3E%3CSPAN%20class%3D%22md-plain%22%3ESingle%20Tenant%20Logic%20App%3C%2FSPAN%3E%3C%2FA%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20has%20now%20provided%20the%20opportunity%20to%20build%20and%20containerise%20logic%20app%20and%20thus%20allowing%20it%20to%20run%20anywhere%20-%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3Eany%20Cloud%2C%20On-Prem%20or%20any%20Infrastructure%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E.%20This%20is%20hosted%20as%20an%20extension%20on%20the%20Azure%20Functions%20runtime%20and%20like%20Azure%20Function%2C%20needs%20a%20Storage%20account%20to%20store%20its%20state.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%20class%3D%22md-end-block%20md-p%22%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EThis%20also%20means%20that%20this%20containerised%20version%20of%20Logic%20App%20can%20now%20be%20hosted%20on%20managed%20K8s%20services%20like%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-meta-i-c%20%20md-link%22%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Faks%2F%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3E%3CSPAN%20class%3D%22md-plain%22%3EAKS%3C%2FSPAN%3E%3C%2FA%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20as%20well%20as%20Serverless%20Container%20offerings%20like%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-meta-i-c%20md-link%22%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fcontainer-apps%2F%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3E%3CSPAN%20class%3D%22md-plain%22%3EAzure%20Container%20Apps%3C%2FSPAN%3E%3C%2FA%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20or%20on-Prem%20Bare%20metal.%20%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EDevelopers%20can%20now%20%3CEM%3EDesign%2C%20Develop%2C%20Build%3C%2FEM%3E%20and%20%3CEM%3ERun%3C%2FEM%3E%20Logic%20App%20end-to-end%20locally%3B%20finally%20when%20everything%20is%20running%20fine%20-%20then%20deploy%20anywhere%20as%20they%20want!%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CSPAN%20class%3D%22md-plain%22%3EThe%20Only%20thing%20that%20should%20be%20considered%20here%20is%20the%20state%20of%20the%20Logic%20App%20which%20needs%20to%20be%20a%20Storage%20account%20on%20Azure%20-%20apart%20from%20this%20everything%20else%20is%20completely%20agnostic%20of%20the%20hosting%20environment!%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CSPAN%20class%3D%22md-plain%22%3E%3CEM%3E%3CSTRONG%3EDisclaimer%3A%3C%2FSTRONG%3E%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EAt%20the%20time%20of%20writing%20this%20article%2C%20running%20anywhere%20randomly%20is%20not%20supported.%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FP%3E%0A%3CP%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3ECurrently%20supported%20hosting%20options%20are%20-%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3ELogic%20App%20Standard%20Plans%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FLI%3E%0A%3CLI%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EApp%20Service%20Environment%20V3%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FLI%3E%0A%3CLI%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EAzure%20Arc-enabled%20K8s%20clusters%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CH2%20class%3D%22md-end-block%20md-heading%20md-focus%22%20id%3D%22toc-hId-359705866%22%20id%3D%22toc-hId-360390968%22%3E%26nbsp%3B%3C%2FH2%3E%0A%3CH2%20class%3D%22md-end-block%20md-heading%20md-focus%22%20id%3D%22toc-hId--1447748597%22%20id%3D%22toc-hId--1447063495%22%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3EPlan%3C%2FSPAN%3E%3C%2FH2%3E%0A%3CUL%20class%3D%22ul-list%22%20data-mark%3D%22-%22%3E%0A%3CLI%20class%3D%22md-list-item%20md-focus-container%22%3E%3CP%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CSPAN%20class%3D%22md-pair-s%20md-expand%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3ECreate%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20a%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EContainer%20App%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20hosted%20in%20a%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-meta-i-c%20%20md-link%22%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fcontainer-apps%2Fenvironment%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3E%3CSPAN%20class%3D%22md-plain%22%3ESecured%20Environment%3C%2FSPAN%3E%3C%2FA%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3EBuild%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20a%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3ELogic%20App%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20with%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EStandard%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20tier%20Locally%20using%20VS%20Code%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3EContainerise%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20the%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3ELogic%20App%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20and%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3EPush%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20the%20image%20to%20an%20private%20Container%20Registry%20%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3EDeploy%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20the%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3ELogic%20App%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20Container%20on%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EAzure%20Container%20App%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20(%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3Efor%20simplicity%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E)%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3ETest%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20the%20entire%20flow%20end-to-end%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-meta-i-c%20md-link%22%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Fmonojit18%2FContainerApps%2Ftree%2Fmaster%2FMicroservices%2FLogicStorageApp%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3E%3CSPAN%20class%3D%22md-plain%22%3ESource%20Code%20-%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3ELogic%20Storage%20App%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FA%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20-%20Used%20in%20this%20article%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%20md-focus-container%22%3E%3CP%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CSPAN%20class%3D%22md-meta-i-c%20md-link%22%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Fmonojit18%2FContainerApps%2Ftree%2Fmaster%2FMicroservices%2FLogicContainerApp%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3E%3CSPAN%20class%3D%22md-plain%22%3ESource%20Code%20-%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3ELogic%20Container%20Ap%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3Ep%3C%2FSPAN%3E%3C%2FA%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3E%20-%20for%20reference%20%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20class%3D%22md-end-block%20md-heading%22%20id%3D%22toc-hId-1039764236%22%20id%3D%22toc-hId-1040449338%22%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3EHow%20to%20Setup%3C%2FSPAN%3E%3C%2FH2%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH4%20class%3D%22md-end-block%20md-heading%22%20id%3D%22toc-hId--66625649%22%20id%3D%22toc-hId--65940547%22%3E%3CSPAN%20class%3D%22md-plain%22%3ESet%20CLI%20Varibales%3C%2FSPAN%3E%3C%2FH4%3E%0A%3CPRE%20class%3D%22md-fences%20md-end-block%20ty-contain-cm%20modeLoaded%22%20lang%3D%22bash%22%20spellcheck%3D%22false%22%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EtenantId%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22%3CTENANTID%3E%22%3C%2FTENANTID%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EsubscriptionId%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22%3CSUBSCRIPTIONID%3E%22%3C%2FSUBSCRIPTIONID%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EresourceGroup%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22%3CRESOURCEGROUP%3E%22%3C%2FRESOURCEGROUP%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EmonitoringResourceGroup%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22%3CMONITORINGRESOURCEGROUP%3E%3F%22%3C%2FMONITORINGRESOURCEGROUP%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3Elocation%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22%3CLOCATION%3E%22%3C%2FLOCATION%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3ElogWorkspace%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22%3CLOGWORKSPACE%3E%22%3C%2FLOGWORKSPACE%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EbasicEnvironment%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22basic-env%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EsecuredEnvironment%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22secure-env%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EacrName%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22%3CACRNAME%3E%22%3C%2FACRNAME%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EregistryServer%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22%3CCONTAINER_REGISTRY_SERVER%3E%22%3C%2FCONTAINER_REGISTRY_SERVER%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EregistryUserName%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22%3CCONTAINER_REGISTRY_USERNAME%3E%22%3C%2FCONTAINER_REGISTRY_USERNAME%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EregistryPassword%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22%3CCONTAINER_REGISTRY_PASSWORD%3E%22%3C%2FCONTAINER_REGISTRY_PASSWORD%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%E2%80%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-comment%22%3E%23%20Optional%20-%20NOT%20a%20requirement%20for%20Contyainer%20Apps%20but%20mostly%20for%20microservice%20applications%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EstorageName%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22%3CSTORAGE_ACCOUNT_NAME%3E%22%3C%2FSTORAGE_ACCOUNT_NAME%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%E2%80%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-comment%22%3E%23%20Optional%20-%20Primary%20for%20Securing%20Container%20Apps%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EcontainerAppVnetName%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22containerapp-workshop-vnet%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EcontainerAppVnetId%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%E2%80%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-comment%22%3E%23%20Optional%20-%20Subnet%20for%20Control%20plane%20of%20the%20Container%20Apps%20Infrastructure%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EcontrolPlaneSubnetName%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22containerapp-cp-subnet%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EcontrolPlaneSubnetId%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%E2%80%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-comment%22%3E%23%20Optional%20-%20Subnet%20for%20hosting%20Container%20Apps%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EappsSubnetName%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22containerapp-app-subnet%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EappsSubnetId%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%E2%80%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-comment%22%3E%23%20Both%20Control%20plane%20Subnet%20and%20Application%20Services%20Subnet%20should%20be%20in%20same%20VNET%20viz.%20%24containerAppVnetName%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FPRE%3E%0A%3CH4%20class%3D%22md-end-block%20md-heading%22%20id%3D%22toc-hId--1874080112%22%20id%3D%22toc-hId--1873395010%22%3E%26nbsp%3B%3C%2FH4%3E%0A%3CH4%20class%3D%22md-end-block%20md-heading%22%20id%3D%22toc-hId-613432721%22%20id%3D%22toc-hId-614117823%22%3E%3CSPAN%20class%3D%22md-plain%22%3EConfigure%20Azure%20CLI%3C%2FSPAN%3E%3C%2FH4%3E%0A%3CPRE%20class%3D%22md-fences%20md-end-block%20ty-contain-cm%20modeLoaded%22%20lang%3D%22bash%22%20spellcheck%3D%22false%22%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-comment%22%3E%23%20Add%20CLI%20extension%20for%20Container%20Apps%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3Eaz%20extension%20add%20%5C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%3CSPAN%20class%3D%22cm-attribute%22%3E--source%3C%2FSPAN%3E%20https%3A%2F%2Fworkerappscliextension.blob.core.windows.net%2Fazure-cli-extension%2Fcontainerapp-0.2.0-py2.py3-none-any.whl%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-comment%22%3E%23%20Register%20the%20Microsoft.Web%20namespace%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3Eaz%20provider%20register%20%3CSPAN%20class%3D%22cm-attribute%22%3E--namespace%3C%2FSPAN%3E%20Microsoft.Web%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3Eaz%20provider%20show%20%3CSPAN%20class%3D%22cm-attribute%22%3E--namespace%3C%2FSPAN%3E%20Microsoft.Web%3C%2FSPAN%3E%3C%2FPRE%3E%0A%3CH4%20class%3D%22md-end-block%20md-heading%22%20id%3D%22toc-hId--1194021742%22%20id%3D%22toc-hId--1193336640%22%3E%26nbsp%3B%3C%2FH4%3E%0A%3CH4%20class%3D%22md-end-block%20md-heading%22%20id%3D%22toc-hId-1293491091%22%20id%3D%22toc-hId-1294176193%22%3E%3CSPAN%20class%3D%22md-plain%22%3ECreate%20Resource%20Groups%3C%2FSPAN%3E%3C%2FH4%3E%0A%3CPRE%20class%3D%22md-fences%20md-end-block%20ty-contain-cm%20modeLoaded%22%20lang%3D%22bash%22%20spellcheck%3D%22false%22%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-comment%22%3E%23%20Hosting%20Container%20Apps%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3Eaz%20group%20create%20%3CSPAN%20class%3D%22cm-attribute%22%3E--name%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24resourceGroup%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-attribute%22%3E--location%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24location%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%E2%80%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-comment%22%3E%23%20Hosting%20Log%20Analytics%20Workspace%20for%20Container%20Apps%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3Eaz%20group%20create%20%3CSPAN%20class%3D%22cm-attribute%22%3E--name%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24monitoringResourceGroup%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-attribute%22%3E--location%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24location%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FPRE%3E%0A%3CH4%20class%3D%22md-end-block%20md-heading%22%20id%3D%22toc-hId--513963372%22%20id%3D%22toc-hId--513278270%22%3E%26nbsp%3B%3C%2FH4%3E%0A%3CH4%20class%3D%22md-end-block%20md-heading%22%20id%3D%22toc-hId-1973549461%22%20id%3D%22toc-hId-1974234563%22%3E%3CSPAN%20class%3D%22md-plain%22%3ECreate%20Log%20Analytics%20Workspace%3C%2FSPAN%3E%3C%2FH4%3E%0A%3CPRE%20class%3D%22md-fences%20md-end-block%20ty-contain-cm%20modeLoaded%22%20lang%3D%22bash%22%20spellcheck%3D%22false%22%3E%3CSPAN%3Eaz%20monitor%20log-analytics%20workspace%20create%20%3CSPAN%20class%3D%22cm-attribute%22%3E--resource-group%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24monitoringResourceGroup%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-attribute%22%3E--workspace-name%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24logWorkspace%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%E2%80%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-comment%22%3E%23%20Retrieve%20Log%20Analytics%20ResourceId%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3ElogWorkspaceId%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-quote%22%3E%24(az%20monitor%20log-analytics%20workspace%20show%20--query%20customerId%20-g%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3E%24monitoringResourceGroup%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-quote%22%3E%20-n%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3E%24logWorkspace%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-quote%22%3E%20-o%20tsv)%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%E2%80%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-comment%22%3E%23%20Retrieve%20Log%20Analytics%20Secrets%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3ElogWorkspaceSecret%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-quote%22%3E%24(az%20monitor%20log-analytics%20workspace%20get-shared-keys%20--query%20primarySharedKey%20-g%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3E%24monitoringResourceGroup%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-quote%22%3E%20-n%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3E%24logWorkspace%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-quote%22%3E%20-o%20tsv)%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FPRE%3E%0A%3CH4%20class%3D%22md-end-block%20md-heading%22%20id%3D%22toc-hId-1396965597%22%20id%3D%22toc-hId-1397650699%22%3E%26nbsp%3B%3C%2FH4%3E%0A%3CH4%20class%3D%22md-end-block%20md-heading%22%20id%3D%22toc-hId--410488866%22%20id%3D%22toc-hId--409803764%22%3E%3CSPAN%20class%3D%22md-plain%22%3ECreate%20Container%20App%20Environment%3C%2FSPAN%3E%3C%2FH4%3E%0A%3CPRE%20class%3D%22md-fences%20md-end-block%20ty-contain-cm%20modeLoaded%22%20lang%3D%22bash%22%20spellcheck%3D%22false%22%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-comment%22%3E%23%20Simple%20environment%20with%20no%20additional%20security%20for%20the%20underlying%20sInfrastructure%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3Eaz%20containerapp%20env%20create%20%3CSPAN%20class%3D%22cm-attribute%22%3E--name%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24basicEnvironment%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-attribute%22%3E--resource-group%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24resourceGroup%3C%2FSPAN%3E%20%5C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%3CSPAN%20class%3D%22cm-attribute%22%3E--logs-workspace-id%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24logWorkspaceId%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-attribute%22%3E--logs-workspace-key%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24logWorkspaceSecret%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-attribute%22%3E--location%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24location%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20class%3D%22md-end-block%20md-heading%22%20id%3D%22toc-hId-1818858529%22%20id%3D%22toc-hId-1819543631%22%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3EDeploy%20Azure%20Logic%20App%20as%20Container%20App%3C%2FSPAN%3E%3C%2FH2%3E%0A%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EBuild%20a%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3ELogic%20App%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20with%20basic%20request%2Fresponse%20workflow%20-%20viz.%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3ELogicContainerApp%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CUL%20class%3D%22ul-list%22%20data-mark%3D%22-%22%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3ERun%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20and%20test%20this%20Logic%20app%20as%20docker%20container%20locally%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3EDeploy%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20the%20Logic%20App%20container%20onto%20Azure%20as%20a%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EContainer%20App%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3EHost%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20the%20Logic%20App%20inside%20a%20Virtual%20Network%20(%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3ESecured%20Environment%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E)%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3EExpose%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20the%20container%20app%20with%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3ENo%20Ingress%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20-%20as%20no%20inblound%20access%20would%20be%20needed%20for%20this%20logic%20app%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH4%20class%3D%22md-end-block%20md-heading%22%20id%3D%22toc-hId-269569504%22%20id%3D%22toc-hId-270254606%22%3E%3CSPAN%20class%3D%22md-plain%22%3ELogic%20App%20in%20a%20Container%3C%2FSPAN%3E%3C%2FH4%3E%0A%3CUL%20class%3D%22ul-list%22%20data-mark%3D%22-%22%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3ELet%20us%20first%20Create%20and%20Deploy%20a%20Logic%20app%20as%20Docker%20Container%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3ELogic%20App%20runs%20an%20Azure%20Function%20locally%20and%20hence%20few%20tools%2Fextensions%20need%20to%20be%20installed%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%20class%3D%22md-end-block%20md-p%22%3E%26nbsp%3B%3C%2FP%3E%0A%3CH5%20class%3D%22md-end-block%20md-heading%22%20id%3D%22toc-hId--1408802240%22%20id%3D%22toc-hId--1408117138%22%3E%3CSPAN%20class%3D%22md-plain%22%3EPre-Requisites%3C%2FSPAN%3E%3C%2FH5%3E%0A%3CUL%20class%3D%22ul-list%22%20data-mark%3D%22-%22%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EAzure%20Function%20Core%20Tools%20-%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-meta-i-c%20%20md-link%22%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fazure-functions%2Ffunctions-run-local%3Ftabs%3Dv3%252Cwindows%252Ccsharp%252Cportal%252Cbash%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3E%3CSPAN%20class%3D%22md-plain%22%3Ev3.x%3C%2FSPAN%3E%3C%2FA%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CUL%20class%3D%22ul-list%22%20data-mark%3D%22-%22%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EThe%20abobve%20link%20is%20for%20macOS%3B%20please%20install%20the%20appropriate%20links%20in%20the%20same%20page%20for%20other%20Operating%20Systems%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EAt%20the%20time%20of%20writing%2C%20Core%20tools%203.x%20only%20supports%20the%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3ELogic%20App%20Designer%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20within%20Visual%20Studio%20Code%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EThe%20current%20example%20has%20been%20tested%20with%20-%20Function%20Core%20Tools%20version%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3E3.0.3904%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20on%20a%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EWindows%20box%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-meta-i-c%20%20md-link%22%3E%3CA%20href%3D%22https%3A%2F%2Fhub.docker.com%2Feditions%2Fcommunity%2Fdocker-ce-desktop-windows%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noreferrer%22%3E%3CSPAN%20class%3D%22md-plain%22%3EDocker%20Desktop%20for%20Windows%3C%2FSPAN%3E%3C%2FA%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EA%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3EStorage%20Account%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20on%20Azure%20-%20which%20is%20needed%20by%20any%20Azure%20function%20App%3C%2FSPAN%3E%3C%2FP%3E%0A%3CUL%20class%3D%22ul-list%22%20data-mark%3D%22-%22%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3ELogic%20App%20(%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3Eaka%20Azure%20Function%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E)%20would%20use%20this%20storage%20to%20cache%20its%20state%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EVS%20Code%20Extension%20for%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-meta-i-c%20%20md-link%22%3E%3CA%20href%3D%22https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dms-azuretools.vscode-azurelogicapps%23%3A~%3Atext%3DAzure%2520Logic%2520Apps%2520for%2520Visual%2CApps%2520directly%2520from%2520VS%2520Code.%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3E%3CSPAN%20class%3D%22md-plain%22%3EStandard%20Logic%20App%3C%2FSPAN%3E%3C%2FA%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EVS%20Code%20Extension%20for%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-meta-i-c%20%20md-link%22%3E%3CA%20href%3D%22https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dms-azuretools.vscode-azurefunctions%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3E%3CSPAN%20class%3D%22md-plain%22%3EAzure%20Function%3C%2FSPAN%3E%3C%2FA%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EVS%20Code%20extension%20for%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-meta-i-c%20%20md-link%22%3E%3CA%20href%3D%22https%3A%2F%2Fmarketplace.visualstudio.com%2Fitems%3FitemName%3Dms-azuretools.vscode-docker%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3E%3CSPAN%20class%3D%22md-plain%22%3EDocker%3C%2FSPAN%3E%3C%2FA%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CUL%20class%3D%22ul-list%22%20data-mark%3D%22-%22%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EThis%20is%20Optional%20but%20recommended%3B%20it%20makes%20life%20easy%20while%20dealing%20with%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EDockerfile%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20and%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EDocker%20CLI%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20commands%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CUL%20class%3D%22ul-list%22%20data-mark%3D%22-%22%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3ECreate%20a%20Local%20folder%20to%20host%20all%20files%20related%20Logic%20App%20-%20viz.%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3ELogicStorageApp%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EOpen%20the%20folder%20in%20VS%20Code%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3ECreate%20a%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3ENew%20Logic%20App%20Project%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20in%20this%20Folder%20%3C%2FSPAN%3E%3C%2FP%3E%0A%3CUL%20class%3D%22ul-list%22%20data-mark%3D%22-%22%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EChoose%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EStateful%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20workflow%20in%20the%20process%20and%20name%20accordingly%20-%20viz.%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3Eprocessstgflow%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EThis%20generates%20all%20necessary%20files%20and%20sub-folders%20within%20the%20current%20folder%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EA%20folder%20named%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3Eprocessstgflow%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20is%20also%20added%20which%20contains%20the%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3Eworkflow.json%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20file%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EThis%20describes%20the%20Logic%20App%20Actions%2Ftriggers%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%20md-focus-container%22%3E%3CP%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CSPAN%20class%3D%22md-plain%22%3EThis%20example%20uses%20one%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EBlob%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20trigger%20and%20one%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EQueue%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20trigger%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22md-plain%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22logic-storageapp-workflow-json.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F345515i0B7A9AFC8151CDB5%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22logic-storageapp-workflow-json.png%22%20alt%3D%22logic-storageapp-workflow-json.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CUL%20class%3D%22ul-list%22%20data-mark%3D%22-%22%3E%0A%3CLI%20class%3D%22md-list-item%20md-focus-container%22%3E%3CP%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3ERight%20click%20on%20the%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3Eworkflow.json%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20file%20and%20Open%20the%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3ELogic%20App%20Designer%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20-%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3Ethis%20might%20take%20few%20seconds%20to%20launch%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%20md-focus-container%22%3E%3CP%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CSPAN%20class%3D%22md-plain%22%3EAdd%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3EBlob%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3E%20trigger%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22logic-storageapp-blob.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F345516iA2F9184B5481BF57%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22logic-storageapp-blob.png%22%20alt%3D%22logic-storageapp-blob.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3EAdd%20%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3EQueue%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%20trigger%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22logic-storageapp-queue.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F345517i16798C3D27BBEDFE%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22logic-storageapp-queue.png%22%20alt%3D%22logic-storageapp-queue.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CUL%20class%3D%22ul-list%22%20data-mark%3D%22-%22%3E%0A%3CLI%20class%3D%22md-list-item%20md-focus-container%22%3E%3CP%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3ESave%20the%20Designer%20changes%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%20md-focus-container%22%3E%3CP%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3ERight%20click%20on%20the%20empty%20area%20on%20the%20workspace%20folder%20structure%20and%20Open%20the%20Context%20menu%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22logic-storageapp-menu.png%22%20style%3D%22width%3A%20546px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F345518i026C081C13449337%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22logic-storageapp-menu.png%22%20alt%3D%22logic-storageapp-menu.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CUL%20class%3D%22ul-list%22%20data-mark%3D%22-%22%3E%0A%3CLI%20class%3D%22md-list-item%20md-focus-container%22%3E%3CP%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3ESelect%20the%20menu%20options%20that%20says%20-%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EConvert%20to%20Nuget-based%20Logic%20App%20project%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%20md-focus-container%22%3E%3CP%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CSPAN%20class%3D%22md-plain%22%3EThis%20would%20generate%20.NET%20specific%20files%20-%20along%20with%20a%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3ELogicStorageApp.csproj%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3E%20file%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22logic-storageapp-menu-nuget.png%22%20style%3D%22width%3A%20493px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F345519i3BD724DAC01753B9%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22logic-storageapp-menu-nuget.png%22%20alt%3D%22logic-storageapp-menu-nuget.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3EOpen%20the%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3Elocal.settings.json%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20file%3C%2FSPAN%3E%3C%2FP%3E%0A%3CUL%20class%3D%22ul-list%22%20data-mark%3D%22-%22%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EReplace%20the%20value%20of%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3EAzureWebJobsStorage%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20variable%20with%20the%20value%20from%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EStorage%20Account%20Connection%20string%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20created%20earlier%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CUL%20class%3D%22ul-list%22%20data-mark%3D%22-%22%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CSPAN%20class%3D%22md-plain%22%3EAdd%20a%20%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3EDockerfile%3C%2FSTRONG%3E%3C%2FSPAN%3E%20in%20the%20workspace%3C%2FSPAN%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22md-fences%20md-end-block%20ty-contain-cm%20modeLoaded%22%20lang%3D%22bash%22%20spellcheck%3D%22false%22%3E%3CSPAN%3EFROM%20mcr.microsoft.com%2Fazure-functions%2Fnode%3A3.0%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%E2%80%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3EENV%20%3CSPAN%20class%3D%22cm-def%22%3EAzureWebJobsScriptRoot%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%2Fhome%2Fsite%2Fwwwroot%20%5C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%20%26nbsp%3B%20%3CSPAN%20class%3D%22cm-def%22%3EAzureFunctionsJobHost__Logging__Console__IsEnabled%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-atom%22%3Etrue%3C%2FSPAN%3E%20%5C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%20%26nbsp%3B%20%3CSPAN%20class%3D%22cm-def%22%3EFUNCTIONS_V2_COMPATIBILITY_MODE%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-atom%22%3Etrue%3C%2FSPAN%3E%20%5C%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%20%26nbsp%3B%20%3CSPAN%20class%3D%22cm-def%22%3EAzureWebJobsStorage%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E''%3C%2FSPAN%3E%20%5C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%20%26nbsp%3B%20%3CSPAN%20class%3D%22cm-def%22%3EAZURE_FUNCTIONS_ENVIRONMENT%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3EDevelopment%20%5C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%20%26nbsp%3B%20%3CSPAN%20class%3D%22cm-def%22%3EWEBSITE_HOSTNAME%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3Elocalhost%20%5C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%20%26nbsp%3B%20%3CSPAN%20class%3D%22cm-def%22%3EWEBSITE_SITE_NAME%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3Elogicstorageapp%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%E2%80%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3ECOPY%20.%2Fbin%2FDebug%2Fnetcoreapp3.1%20%2Fhome%2Fsite%2Fwwwroot%3C%2FSPAN%3E%3C%2FPRE%3E%0A%3CP%20class%3D%22md-end-block%20md-p%22%3E%26nbsp%3B%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3EWEBSITE_SITE_NAME%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20-%20this%20is%20the%20name%20by%20which%20entries%20are%20created%20in%20Storage%20Account%20by%20the%20Logic%20App%20while%20caching%20its%20state%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%20class%3D%22md-end-block%20md-p%22%3E%26nbsp%3B%3C%2FP%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CUL%3E%0A%3CLI%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3EBuild%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20docker%20image%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CPRE%20class%3D%22md-fences%20md-end-block%20ty-contain-cm%20modeLoaded%22%20lang%3D%22bash%22%20spellcheck%3D%22false%22%3E%3CSPAN%3Edocker%20build%20%3CSPAN%20class%3D%22cm-attribute%22%3E-t%3C%2FSPAN%3E%20%3CREPO_NAME%3E%2F%3CIMAGE_NAME%3E%3A%3CTAG%3E%20.%3C%2FTAG%3E%3C%2FIMAGE_NAME%3E%3C%2FREPO_NAME%3E%3C%2FSPAN%3E%3C%2FPRE%3E%0A%3CDIV%20id%3D%22write%22%20class%3D%22enable-diagrams%22%20tabindex%3D%22-1%22%20spellcheck%3D%22true%22%3E%0A%3CP%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%26nbsp%3B%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CSPAN%20class%3D%22md-pair-s%20md-expand%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3ECreate%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20and%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3ERun%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20the%20Logic%20App%20Container%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CPRE%20class%3D%22md-fences%20md-end-block%20ty-contain-cm%20modeLoaded%22%20lang%3D%22bash%22%20spellcheck%3D%22false%22%3E%3CSPAN%3Edocker%20run%20%3CSPAN%20class%3D%22cm-attribute%22%3E--name%3C%2FSPAN%3E%20logicstorageapp%20%3CSPAN%20class%3D%22cm-attribute%22%3E-e%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3EAzureWebJobsStorage%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3E%24azureWebJobsStorage%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-attribute%22%3E-d%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-attribute%22%3E-p%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-number%22%3E8080%3C%2FSPAN%3E%3A80%20%3CREPO_NAME%3E%2F%3CIMAGE_NAME%3E%3A%3CTAG%3E%3C%2FTAG%3E%3C%2FIMAGE_NAME%3E%3C%2FREPO_NAME%3E%3C%2FSPAN%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH4%20class%3D%22md-end-block%20md-heading%22%20id%3D%22toc-hId-949627874%22%20id%3D%22toc-hId-950312976%22%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3ESetup%20Azure%20Container%20App%3C%2FSPAN%3E%3C%2FH4%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CUL%20class%3D%22ul-list%22%20data-mark%3D%22-%22%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3ECreate%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EVirtual%20Network%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20to%20inject%20Container%20Apps%3C%2FSPAN%3E%3C%2FP%3E%0A%3CPRE%20class%3D%22md-fences%20md-end-block%20ty-contain-cm%20modeLoaded%22%20lang%3D%22bash%22%20spellcheck%3D%22false%22%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EcontainerAppVnetId%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-quote%22%3E%24(az%20network%20vnet%20show%20-n%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3E%24containerAppVnetName%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-quote%22%3E%20--resource-group%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3E%24resourceGroup%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-quote%22%3E%20--query%3D%22id%22%20-o%20tsv)%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%E2%80%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EcontrolPlaneSubnetId%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-quote%22%3E%24(az%20network%20vnet%20subnet%20show%20-n%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3E%24controlPlaneSubnetName%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-quote%22%3E%20--vnet-name%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3E%24containerAppVnetName%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-quote%22%3E%20--resource-group%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3E%24resourceGroup%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-quote%22%3E%20--query%3D%22id%22%20-o%20tsv)%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%E2%80%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EappsSubnetId%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-quote%22%3E%24(az%20network%20vnet%20subnet%20show%20-n%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3E%24appsSubnetName%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-quote%22%3E%20--vnet-name%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3E%24containerAppVnetName%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-quote%22%3E%20--resource-group%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3E%24resourceGroup%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-quote%22%3E%20--query%3D%22id%22%20-o%20tsv)%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%E2%80%8B%3C%2FSPAN%3E%3C%2FPRE%3E%0A%3CP%20class%3D%22md-end-block%20md-p%22%3E%26nbsp%3B%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3ECreate%20a%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3ESecured%20Environment%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20for%20Azure%20Container%20Apps%20with%20this%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EVirtual%20Network%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CPRE%20class%3D%22md-fences%20md-end-block%20ty-contain-cm%20modeLoaded%22%20lang%3D%22bash%22%20spellcheck%3D%22false%22%3E%3CSPAN%3Eaz%20containerapp%20env%20create%20%3CSPAN%20class%3D%22cm-attribute%22%3E--name%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24securedEnvironment%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-attribute%22%3E--resource-group%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24resourceGroup%3C%2FSPAN%3E%20%5C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%3CSPAN%20class%3D%22cm-attribute%22%3E--logs-workspace-id%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24logWorkspaceId%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-attribute%22%3E--logs-workspace-key%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24logWorkspaceSecret%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-attribute%22%3E--location%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24location%3C%2FSPAN%3E%20%5C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%3CSPAN%20class%3D%22cm-attribute%22%3E--controlplane-subnet-resource-id%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24controlPlaneSubnetId%3C%2FSPAN%3E%20%5C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%3CSPAN%20class%3D%22cm-attribute%22%3E--app-subnet-resource-id%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24appsSubnetId%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FPRE%3E%0A%3CP%20class%3D%22md-end-block%20md-p%22%3E%26nbsp%3B%3C%2FP%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CH4%20class%3D%22md-end-block%20md-heading%22%20id%3D%22toc-hId--857826589%22%20id%3D%22toc-hId--857141487%22%3E%3CSPAN%20class%3D%22md-plain%22%3ELogic%20App%20as%20Azure%20Container%20App%3C%2FSPAN%3E%3C%2FH4%3E%0A%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3ELet%20us%20now%20deploy%20the%20logic%20app%20container%20onto%20Azure%20as%20Container%20App%3C%2FSPAN%3E%3C%2FP%3E%0A%3CUL%20class%3D%22ul-list%22%20data-mark%3D%22-%22%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3EPush%20Logic%20App%20container%20image%20to%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3EAzure%20Container%20Registry%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CPRE%20class%3D%22md-fences%20md-end-block%20ty-contain-cm%20modeLoaded%22%20lang%3D%22bash%22%20spellcheck%3D%22false%22%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-comment%22%3E%23%20If%20Container%20image%20is%20already%20created%20and%20tested%2C%20use%20Docker%20CLI%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3Edocker%20push%20%3CREPO_NAME%3E%2F%3CIMAGE_NAME%3E%3A%3CTAG%3E%3C%2FTAG%3E%3C%2FIMAGE_NAME%3E%3C%2FREPO_NAME%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%20OR%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-comment%22%3E%23%20Use%20Azure%20CLI%20command%20for%20ACR%20to%20build%20and%20push%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3Eaz%20acr%20build%20%3CSPAN%20class%3D%22cm-attribute%22%3E-t%3C%2FSPAN%3E%20%3CREPO_NAME%3E%2F%3CIMAGE_NAME%3E%3A%3CTAG%3E%20%3CSPAN%20class%3D%22cm-attribute%22%3E-r%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24acrName%3C%2FSPAN%3E%20.%3CBR%20%2F%3E%3C%2FTAG%3E%3C%2FIMAGE_NAME%3E%3C%2FREPO_NAME%3E%3C%2FSPAN%3E%3C%2FPRE%3E%0A%3C%2FLI%3E%0A%3CLI%20class%3D%22md-list-item%22%3E%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3ECreate%20Azure%20Container%20App%20with%20this%20image%3C%2FSPAN%3E%3C%2FP%3E%0A%3CPRE%20class%3D%22md-fences%20md-end-block%20ty-contain-cm%20modeLoaded%22%20lang%3D%22bash%22%20spellcheck%3D%22false%22%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3ElogicappImageName%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3E%24registryServer%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%2Flogicstorageapp%3Av1.0.0%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EazureWebJobsStorage%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EblobConnectionString%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3EqueueConnectionKey%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-string%22%3E%22%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3Eaz%20containerapp%20create%20%3CSPAN%20class%3D%22cm-attribute%22%3E--name%3C%2FSPAN%3E%20logicstorageapp%20%3CSPAN%20class%3D%22cm-attribute%22%3E--resource-group%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24resourceGroup%3C%2FSPAN%3E%20%5C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%3CSPAN%20class%3D%22cm-attribute%22%3E--image%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24logicappImageName%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-attribute%22%3E--environment%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24securedEnvironment%3C%2FSPAN%3E%20%5C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%3CSPAN%20class%3D%22cm-attribute%22%3E--registry-login-server%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24registryServer%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-attribute%22%3E--registry-username%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24registryUserName%3C%2FSPAN%3E%20%5C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%3CSPAN%20class%3D%22cm-attribute%22%3E--registry-password%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3E%24registryPassword%3C%2FSPAN%3E%20%5C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%3CSPAN%20class%3D%22cm-attribute%22%3E--ingress%3C%2FSPAN%3E%20internal%20%3CSPAN%20class%3D%22cm-attribute%22%3E--target-port%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-number%22%3E80%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-attribute%22%3E--transport%3C%2FSPAN%3E%20http%20%5C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%3CSPAN%20class%3D%22cm-attribute%22%3E--secrets%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-def%22%3Eazurewebjobsstorage%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3E%24azureWebJobsStorage%2Cbloconnstring%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3E%24blobConnectionString%2Cqueueconnstring%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-operator%22%3E%3D%3C%2FSPAN%3E%3CSPAN%20class%3D%22cm-def%22%3E%24queueConnectionKey%3C%2FSPAN%3E%20%5C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%20%26nbsp%3B%3CSPAN%20class%3D%22cm-attribute%22%3E--environment-variables%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22cm-string%22%3E%22AzureWebJobsStorage%3Dsecretref%3Aazurewebjobsstorage%2CAzureBlob_connectionString%3Dsecretref%3Abloconnstring%2Cazurequeues-connectionKey%3Dsecretref%3Aqueueconnstring%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CH2%20class%3D%22md-end-block%20md-heading%22%20id%3D%22toc-hId-1371520806%22%20id%3D%22toc-hId-1372205908%22%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3ETest%20End-to-End%3C%2FSPAN%3E%3C%2FH2%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%20class%3D%22md-end-block%20md-p%22%3E%3CSPAN%20class%3D%22md-plain%22%3ELet%20us%20now%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3ETest%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20the%20logic%20app%20locally%20as%20a%20Docker%20container%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%20class%3D%22md-end-block%20md-p%22%3E%26nbsp%3B%3C%2FP%3E%0A%3CUL%20class%3D%22ul-list%22%20data-mark%3D%22-%22%3E%0A%3CLI%20class%3D%22md-list-item%20md-focus-container%22%3E%3CP%20class%3D%22md-end-block%20md-p%20md-focus%22%3E%3CSPAN%20class%3D%22md-plain%22%3EUpload%20image%20to%20the%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3EBlob%3C%2FSPAN%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-plain%22%3E%20container%20e.g.%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3Elogicblob%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22logic-storageapp-test-blob.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F345520iFA9968AB2BDF62F9%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22logic-storageapp-test-blob.png%22%20alt%3D%22logic-storageapp-test-blob.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSPAN%20class%3D%22md-plain%20md-expand%22%3ECheck%20the%20image%20name%20being%20added%20to%20the%20%3C%2FSPAN%3E%3CSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3EQueue%3C%2FSPAN%3E%3C%2FSTRONG%3E%3CSPAN%20class%3D%22md-plain%22%3E%20e.g.%20%3C%2FSPAN%3E%3CSPAN%20class%3D%22md-pair-s%20md-expand%22%3E%3CEM%3E%3CSPAN%20class%3D%22md-plain%22%3Elogicqueue%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%3CSPAN%20class%3D%22md-pair-s%20%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22logic-storageapp-test-queue.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F345521i53D5168E6A50CFCC%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22logic-storageapp-test-queue.png%22%20alt%3D%22logic-storageapp-test-queue.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-3118351%22%20slang%3D%22en-US%22%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22logic-storageapp-main.png%22%20style%3D%22width%3A%20338px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F345513i52777191C1A11D15%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22logic-storageapp-main.png%22%20alt%3D%22logic-storageapp-main.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EDevelop%2C%20Build%20and%20Run%20Logic%20App%20Anywhere%20-%26nbsp%3B%3CSPAN%3Eany%20Cloud%2C%20On-Prem%20or%20any%20Infrastructure%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-TEASER%3E%3CLINGO-LABS%20id%3D%22lingo-labs-3118351%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3ELogic%20Apps%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
Co-Authors
Version history
Last update:
‎Feb 13 2022 07:24 PM
Updated by: