How do you populate an Azure IP-Group using Logic Apps?

Viewed 18

What I am trying to accomplish:

I am trying to do a HTTP GET request from Azure Logic Apps from https://endpoints.office.com/endpoints/Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7 where they provide public facing list of IP addresses for Office365.

I would like to only pull out the IPv4 list of addresses into a legible format and then store this into my Blob storage in Azure as a CSV file.

Then what I want is that the list of IPv4 addresses to be pulled into an IP-GROUP in Azure so that any changes of IP addresses from Microsoft would be dynamically updated via Logic Apps and stored into Blob Storage and then updated in the IP-Group.

The IP-Group is used in an Azure Firewall.

What I have Tried [logic app in code]:

  {
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            "Create_blob_(V2)": {
                "inputs": {
                    "body": "@triggerBody()",
                    "headers": {
                        "ReadFileMetadataFromServer": true
                    },
                    "host": {
                        "connection": {
                            "name": "@parameters('$connections')['azureblob']['connectionId']"
                        }
                    },
                    "method": "post",
                    "path": "/v2/datasets/@{encodeURIComponent(encodeURIComponent('AccountNameFromSettings'))}/files",
                    "queries": {
                        "folderPath": "/project-a",
                        "name": "office365-test.csv",
                        "queryParametersSingleEncoded": true
                    }
                },
                "runAfter": {
                    "Create_job": [
                        "Succeeded"
                    ]
                },
                "runtimeConfiguration": {
                    "contentTransfer": {
                        "transferMode": "Chunked"
                    }
                },
                "type": "ApiConnection"
            },
            "Create_job": {
                "inputs": {
                    "host": {
                        "connection": {
                            "name": "@parameters('$connections')['azureautomation']['connectionId']"
                        }
                    },
                    "method": "put",
                    "path": "/subscriptions/@{encodeURIComponent('xxxxxxxxxxxxxxxxxxxxxxxxx')}/resourceGroups/@{encodeURIComponent('xxxxxxx')}/providers/Microsoft.Automation/automationAccounts/@{encodeURIComponent('test')}/jobs",
                    "queries": {
                        "runbookName": "test-hello",
                        "wait": false,
                        "x-ms-api-version": "2015-10-31"
                    }
                },
                "runAfter": {},
                "type": "ApiConnection"
            },
            "Get_blob_content_using_path_(V2)": {
                "inputs": {
                    "host": {
                        "connection": {
                            "name": "@parameters('$connections')['azureblob']['connectionId']"
                        }
                    },
                    "method": "get",
                    "path": "/v2/datasets/@{encodeURIComponent(encodeURIComponent('AccountNameFromSettings'))}/GetFileContentByPath",
                    "queries": {
                        "inferContentType": true,
                        "path": "/project-a/office365-test.csv",
                        "queryParametersSingleEncoded": true
                    }
                },
                "runAfter": {
                    "Create_blob_(V2)": [
                        "Succeeded"
                    ]
                },
                "type": "ApiConnection"
            }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {
            "$connections": {
                "defaultValue": {},
                "type": "Object"
            }
        },
        "triggers": {
            "HTTP": {
                "evaluatedRecurrence": {
                    "frequency": "Day",
                    "interval": 1
                },
                "inputs": {
                    "method": "GET",
                    "uri": "https://endpoints.office.com/endpoints/Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7"
                },
                "recurrence": {
                    "frequency": "Day",
                    "interval": 1
                },
                "type": "Http"
            }
        }
    },
    "parameters": {
        "$connections": {
            "value": {
                "azureautomation": {
                    "connectionId": "/subscriptions/xxxxxx/resourceGroups/xxx/providers/Microsoft.Web/connections/azureautomation",
                    "connectionName": "azureautomation",
                    "id": "/subscriptions/xxxxxx/providers/Microsoft.Web/locations/uksouth/managedApis/azureautomation"
                },
                "azureblob": {
                    "connectionId": "/subscriptions/xxxxxx/resourceGroups/xxx/providers/Microsoft.Web/connections/azureblob",
                    "connectionName": "azureblob",
                    "id": "/subscriptions/xxxxxx/providers/Microsoft.Web/locations/uksouth/managedApis/azureblob"
                }
            }
        }
    }
}

This pulls the whole lot of data from Microsoft Website and bundles it into blob storage in a messy format. I only need the IPv4 addresses in a clear format for CSV.

Then I would like that CSV to be used to update an existing IP-GROUP. Any suggestions?

0 Answers
Related