Access Azure Function App system keys in Terraform

Viewed 465

I want to create Azure EventGrid subscription using Terraform.

resource "azurerm_eventgrid_system_topic_event_subscription" "function_app" {
  name                = "RunOnBlobUploaded"
  system_topic        = azurerm_eventgrid_system_topic.function_app.name
  resource_group_name = azurerm_resource_group.rg.name

  included_event_types = [
    "Microsoft.Storage.BlobCreated"
  ]

  subject_filter {
    subject_begins_with = "/blobServices/default/containers/input"
  }

  webhook_endpoint {
    url = "https://thumbnail-generator-function-app.azurewebsites.net/runtime/webhooks/blobs?functionName=Create-Thumbnail&code=<BLOB-EXTENSION-KEY>"
  }
}

By following this doc, I successfully deployed it and it works. However, the webhook_endpoint URL needs <BLOB-EXTENSION-KEY> which is hardcoded right now and found from the following place in the portal:

enter image description here

In order to not commit a secret to GitHub, I want to get this value by reference, ideally using Terraform.

According to my research, it seems there is no way in Terraform to reference that value. The closest one is this data source azurerm_function_app_host_keys in Terraform. However, it doesn't cover the blobs_extension key!

Is there any good way to reference blobs_extension in Terraform without a hardcoded value?

Thanks in advance!

1 Answers

If TF does not support it yet, you can create your own External Data Source which is going to use azure cli or sdk to get the value you want, and return it to your TF for further use.

Related