diff --git a/README.md b/README.md index 1ec7a93..482cd4e 100644 --- a/README.md +++ b/README.md @@ -401,6 +401,67 @@ func azure functionapp publish --no-build `--no-build` tells `func` to skip its own build step since we already compiled the TypeScript output. To also push application settings from `local.settings.json` in the same step, append `--publish-local-settings --overwrite-settings`. This is useful for the initial deployment or when settings and code change together. +### Triggering and verifying a deployed function + +Set these variables once, then all snippets below are copy-pastable: + +```sh +FUNCTION_APP= +RESOURCE_GROUP= +APP_INSIGHTS= # only needed for the query at the end +``` + +After deployment, trigger the timer function immediately without waiting for the schedule: + +```sh +MASTER_KEY=$(az functionapp keys list \ + --name $FUNCTION_APP \ + --resource-group $RESOURCE_GROUP \ + --query masterKey -o tsv) + +curl -X POST \ + "https://${FUNCTION_APP}.azurewebsites.net/admin/functions/acmeProvisioner" \ + -H "Content-Type: application/json" \ + -H "x-functions-key: ${MASTER_KEY}" \ + -d '{}' +``` + +Stream live logs while the function runs: + +```sh +func azure functionapp logstream $FUNCTION_APP +``` + +Or tail logs via the Azure CLI: + +```sh +az webapp log tail \ + --name $FUNCTION_APP \ + --resource-group $RESOURCE_GROUP +``` + +A successful run produces output similar to: + +``` +Initializing ACME account +Scanning DNS zones +Found 2 domain(s) tagged for ACME management +Issuing certificate for *.example.com, example.com +Certificate stored in KeyVault as 'cert-wildcard-example-com' +Done. Issued: 1, Renewed: 0, Skipped: 0, Errors: 0 +``` + +If Application Insights is configured, query recent invocations with: + +```sh +az monitor app-insights query \ + --app $APP_INSIGHTS \ + --resource-group $RESOURCE_GROUP \ + --analytics-query "traces | where timestamp > ago(1h) | order by timestamp desc" +``` + +--- + ### Local testing Create `local.settings.json` at the project root (gitignored) and fill in your values: