Depicting chemicals with Azure Functions

A guide to quickly setup an Azure function to draw chemical structures from SMILES strings.

This uses the docker image provided by the CDK project to generate image files of a molecular structure based on a SMILES string. Not only is this potentially useful as a component in a larger application, but it also demonstrates using a docker image within an Azure Function. Running this as a function allows it to be run from just pennies a day, but could also be quickly scaled for more demanding solutions.

PowerShell deployment

This should work from a local PowerShell session after using Connect-AzAccount to authenticate, or from Azure Cloud Shell.

The script builds out an Azure Function within a new App Service Plan- plus an associated Storage Account and Application Insights. The Azure function pulls the Docker Image from the Docker Hub.

 1#Script to deploy SMILES depiction function
 2
 3#Parameters
 4#Set these variables 
 5$appName=           "cdkdepict01"               #Short Name for Application used in Naming Convention
 6$tags=              @{"tag-service"="SMILES"}   #Tags to apply to the Resource Group and Resources.
 7$subscriptionName=  "Pay-As-You-Go"             #The Subscription to deploy to
 8$location=          "Central US"                #The Azure Region to deploy to.
 9
10#Determine the resource names using a naming convention
11$resourceGroupName=     $AppName+"-rsg"
12$functionName=          $AppName+"-fun"
13$appServicePlanName =   $AppName+"-asp"
14$storageAccountName =   $AppName+"sto"
15
16#Switch to the correct subscription
17    $context = Set-AzContext -SubscriptionName $subscriptionName
18
19"-- Creating Resource Group "+$resourceGroupName +" in " + $location
20    $resourceGroup = New-AzResourceGroup -Location $location -Name $resourceGroupName -tag $Tags
21
22"-- Creating App Service Plan "+$appServicePlanName
23    $appServicePlan = New-AzAppServicePlan -Location $location -Tag $tags -ResourceGroupName $resourceGroupName `
24                        -Name $appServicePlanName -Tier "Basic" -WorkerSize "Small" -NumberofWorkers 1 -Linux
25
26"-- Creating Storage Account "+$storageAccountName
27    $storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName `
28                        -SkuName "Standard_LRS" -Location $location -Kind Storage -Tag $tags
29
30"-- Creating Function "+$functionName+" from Docker Hub image"
31    $newFunction = New-AzFunctionApp -Name $functionName -ResourceGroupName $resourceGroupName -DockerImageName "simolecule/cdkdepict" `
32                        -PlanName $appServicePlanName -StorageAccountName $storageAccountName -Tag $tags
33
34"-- Finished"

Once executed the resulting web page, with examples, should be available at https://appname-fun.azurewebsites.net/ (replace appname with the value used in the script.)

Example Output