{"id":4700,"date":"2025-08-21T10:26:36","date_gmt":"2025-08-21T10:26:36","guid":{"rendered":"https:\/\/uplatz.com\/blog\/?p=4700"},"modified":"2025-08-23T21:51:16","modified_gmt":"2025-08-23T21:51:16","slug":"azure-functions-pocket-book","status":"publish","type":"post","link":"https:\/\/uplatz.com\/blog\/azure-functions-pocket-book\/","title":{"rendered":"Azure Functions Pocket Book"},"content":{"rendered":"<p><!-- ############################################################ --><br \/>\n<!-- Azure Functions Pocket Book \u2014 Uplatz (Single Column, ~55 Cards) --><\/p>\n<div style=\"margin:16px 0;\">\n<style>\n  \/* Scope *\/\n  .wp-azfunc-pb{font-family:Arial,Helvetica,sans-serif;max-width:980px;margin:0 auto;}<\/p>\n<p>  \/* Gradient header (balanced typography) *\/\n  .wp-azfunc-pb .heading{\n    background:linear-gradient(135deg,#7c3aed,#06b6d4);\n    color:#ffffff;padding:22px;border-radius:18px;text-align:center;\n    margin-bottom:26px;box-shadow:0 10px 24px rgba(0,0,0,.10);border:1px solid rgba(255,255,255,.22)\n  }\n  .wp-azfunc-pb .heading h2{margin:0;font-size:1.82rem;font-weight:800;letter-spacing:.2px;line-height:1.15}\n  .wp-azfunc-pb .heading p{margin:8px 0 0;font-size:.96rem;opacity:.95}<\/p>\n<p>  \/* Section titles *\/\n  .wp-azfunc-pb .section-title{\n    margin:26px 0 14px;padding:12px 16px;background:#f8fafc;border-left:8px solid #2563eb;\n    border-radius:12px;font-weight:800;color:#0f172a;font-size:1.02rem;\n    box-shadow:0 2px 8px rgba(0,0,0,.05);border:1px solid #e2e8f0\n  }\n  \/* Colored first section (per request) *\/\n  .wp-azfunc-pb .section-title.color-primary{\n    background:linear-gradient(135deg,#cffafe,#e9d5ff); \/* cyan -> violet *\/\n    border-left-color:#0ea5e9;color:#0f172a\n  }<\/p>\n<p>  \/* Cards *\/\n  .wp-azfunc-pb .card{\n    background:#fff;border-left:6px solid #2563eb;padding:16px;border-radius:14px;\n    box-shadow:0 6px 14px rgba(0,0,0,.06);border:1px solid #e5e7eb;margin-bottom:16px;\n    transition:transform .12s ease,box-shadow .12s ease\n  }\n  .wp-azfunc-pb .card:hover{transform:translateY(-2px);box-shadow:0 12px 22px rgba(0,0,0,.08)}\n  .wp-azfunc-pb .card h3{margin:0 0 10px;font-size:1.08rem;color:#0f172a}\n  .wp-azfunc-pb .card p{margin:0;font-size:.96rem;color:#334155;line-height:1.62}<\/p>\n<p>  \/* Color helpers for variety *\/\n  .bg-blue{border-left-color:#2563eb;background:#f0f9ff}\n  .bg-green{border-left-color:#16a34a;background:#f0fdf4}\n  .bg-amber{border-left-color:#f59e0b;background:#fffbeb}\n  .bg-violet{border-left-color:#7c3aed;background:#f5f3ff}\n  .bg-rose{border-left-color:#e11d48;background:#fff1f2}\n  .bg-cyan{border-left-color:#0891b2;background:#ecfeff}\n  .bg-indigo{border-left-color:#4f46e5;background:#eef2ff}\n  .bg-emerald{border-left-color:#059669;background:#ecfdf5}\n  .bg-slate{border-left-color:#334155;background:#f8fafc}<\/p>\n<p>  \/* Mono + code *\/\n  .mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}\n  .wp-azfunc-pb code{background:#f1f5f9;padding:0 4px;border-radius:4px;border:1px solid #e2e8f0}\n  .wp-azfunc-pb pre{background:#f5f5f5;color:#111827;border:1px solid #e5e7eb;padding:12px;border-radius:10px;overflow:auto;font-size:.92rem;line-height:1.55}<\/p>\n<p>  .muted{color:#64748b}\n  .tight ul{margin:0;padding-left:18px}\n  .tight li{margin:4px 0}\n  .q{font-weight:700}\n<\/style>\n<div class=\"wp-azfunc-pb\">\n<div class=\"heading\">\n<h2>Azure Functions Pocket Book \u2014 Uplatz<\/h2>\n<p>55+ deep-dive flashcards \u2022 Single column \u2022 Triggers &amp; Bindings \u2022 Durable Functions \u2022 Dev\/Deploy \u2022 Performance &amp; Security \u2022 Interview Q&amp;A<\/p>\n<p class=\"muted\">Cheat-friendly explanations \u2022 Readable CLI\/SDK snippets \u2022 Production-oriented tips<\/p>\n<\/p><\/div>\n<p>  <!-- ===================== SECTION 1 ===================== --><\/p>\n<div class=\"section-title color-primary\">Section 1 \u2014 Fundamentals<\/div>\n<div class=\"card bg-blue\">\n<h3>1) What is Azure Functions?<\/h3>\n<p>    Event-driven, serverless compute. Write small functions that run on triggers (HTTP, queue, timer, events). You manage code; Azure manages servers &#038; scaling.<\/p>\n<pre><code class=\"mono\"># Check Core Tools\r\nfunc --version\r\naz extension add -n azure-dev<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-green\">\n<h3>2) Hosting Plans<\/h3>\n<p>    <b>Consumption<\/b> (pay per execution, true serverless), <b>Premium<\/b> (pre-warmed, VNET, no cold start), <b>Dedicated\/App Service<\/b> (reserved). Choose by latency\/VNET\/cost.\n  <\/div>\n<div class=\"card bg-amber\">\n<h3>3) Languages &amp; Runtimes<\/h3>\n<p>    C#, JavaScript\/TypeScript, Python, Java, PowerShell, Custom Handlers. Function runtime versions align with language workers.\n  <\/p><\/div>\n<div class=\"card bg-violet\">\n<h3>4) Triggers &amp; Bindings<\/h3>\n<p>    Triggers start your function; input\/output bindings connect to services (Storage, Service Bus, Cosmos DB, SignalR). No SDK boilerplate for common I\/O.\n  <\/p><\/div>\n<div class=\"card bg-rose\">\n<h3>5) Function App Structure<\/h3>\n<p>    A Function App hosts one or more functions sharing a runtime &#038; settings. Each function has <code>function.json<\/code> describing its bindings.<\/p>\n<pre><code class=\"mono\">func init myapp --worker-runtime node\r\ncd myapp\r\nfunc new --name httpHello --template \"HTTP trigger\"<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-cyan\">\n<h3>6) When to Use<\/h3>\n<p>    Lightweight APIs, event processing, schedulers, glue code, ETL steps, webhooks. Not ideal for long CPU-bound tasks\u2014offload to containers\/jobs.\n  <\/p><\/div>\n<div class=\"card bg-indigo\">\n<h3>7) Pricing Basics<\/h3>\n<p>    Consumption charges = executions + GB-s + outbound. Premium = instance uptime + executions. Watch networking egress and storage transactions.\n  <\/p><\/div>\n<div class=\"card bg-emerald\">\n<h3>8) Cold Starts<\/h3>\n<p>    Cold start = first request spins up worker. Premium plan pre-warms to avoid. For HTTP on Consumption, use \u201cAlways On\u201d with APIM ping or warmers (non-critical).\n  <\/p><\/div>\n<p>  <!-- ===================== SECTION 2 ===================== --><\/p>\n<div class=\"section-title\">Section 2 \u2014 Triggers &amp; Bindings (with Snippets)<\/div>\n<div class=\"card bg-blue\">\n<h3>9) HTTP Trigger<\/h3>\n<p>    Quick APIs or webhooks. Auth levels: <code>anonymous<\/code>, <code>function<\/code>, <code>admin<\/code>.<\/p>\n<pre><code class=\"mono\">\/\/ JavaScript (index.js)\r\nmodule.exports = async function (context, req) {\r\n  const name = (req.query.name || (req.body && req.body.name) || \"world\");\r\n  context.res = { body: `Hello, ${name}!` };\r\n};\r\n\r\n\/\/ function.json (excerpt)\r\n{\r\n  \"bindings\":[\r\n    {\"authLevel\":\"function\",\"type\":\"httpTrigger\",\"direction\":\"in\",\"name\":\"req\",\"methods\":[\"get\",\"post\"]},\r\n    {\"type\":\"http\",\"direction\":\"out\",\"name\":\"res\"}\r\n  ]\r\n}<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-green\">\n<h3>10) Timer Trigger<\/h3>\n<p>    CRON schedules for cleanup or reports.<\/p>\n<pre><code class=\"mono\">{\r\n  \"schedule\": \"0 0 6 * * *\", \"type\":\"timerTrigger\",\"direction\":\"in\",\"name\":\"myTimer\"\r\n}<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-amber\">\n<h3>11) Queue Storage Trigger<\/h3>\n<p>    Fires on new messages; use poison queue for failed retries.<\/p>\n<pre><code class=\"mono\">{\r\n  \"type\":\"queueTrigger\",\"name\":\"msg\",\"queueName\":\"tasks\",\"connection\":\"AzureWebJobsStorage\",\"direction\":\"in\"\r\n}<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-violet\">\n<h3>12) Service Bus Trigger<\/h3>\n<p>    For enterprise messaging (queues\/topics).<\/p>\n<pre><code class=\"mono\">{\r\n  \"type\":\"serviceBusTrigger\",\"name\":\"sbMsg\",\"queueName\":\"orders\",\"connection\":\"ServiceBusConn\",\"direction\":\"in\"\r\n}<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-rose\">\n<h3>13) Event Grid Trigger<\/h3>\n<p>    React to resource events (Blob created, custom events) with durable delivery and retries.\n  <\/p><\/div>\n<div class=\"card bg-cyan\">\n<h3>14) Event Hubs Trigger<\/h3>\n<p>    High-throughput streaming ingestion; tune batch size &#038; checkpointing for throughput.\n  <\/p><\/div>\n<div class=\"card bg-indigo\">\n<h3>15) Blob Trigger<\/h3>\n<p>    ETL pipelines on file drops (e.g., convert images, parse CSV).\n  <\/p><\/div>\n<div class=\"card bg-emerald\">\n<h3>16) Cosmos DB Trigger<\/h3>\n<p>    React to inserts\/updates on a collection for projections\/denormalization.\n  <\/p><\/div>\n<div class=\"card bg-slate\">\n<h3>17) Output Bindings<\/h3>\n<p>    Write to queues\/blobs\/tables\/SignalR without SDK glue.<\/p>\n<pre><code class=\"mono\">{\r\n  \"bindings\":[\r\n    {\"type\":\"httpTrigger\",\"name\":\"req\",\"direction\":\"in\"},\r\n    {\"type\":\"queue\",\"name\":\"outMsg\",\"queueName\":\"tasks\",\"connection\":\"AzureWebJobsStorage\",\"direction\":\"out\"}\r\n  ]\r\n}<\/code><\/pre>\n<\/p><\/div>\n<p>  <!-- ===================== SECTION 3 ===================== --><\/p>\n<div class=\"section-title\">Section 3 \u2014 Local Dev &amp; Tooling<\/div>\n<div class=\"card bg-blue\">\n<h3>18) Core Tools &amp; Emulator<\/h3>\n<p>    Install Azure Functions Core Tools and Azurite (Storage emulator) for local triggers.<\/p>\n<pre><code class=\"mono\">npm i -g azure-functions-core-tools@4\r\nnpm i -g azurite\r\nazurite &   # start storage emulator\r\nfunc start  # run functions locally<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-green\">\n<h3>19) local.settings.json<\/h3>\n<p>    Local-only configuration for connection strings and app settings (not deployed).<\/p>\n<pre><code class=\"mono\">{\r\n  \"IsEncrypted\": false,\r\n  \"Values\": {\r\n    \"AzureWebJobsStorage\": \"UseDevelopmentStorage=true\",\r\n    \"FUNCTIONS_WORKER_RUNTIME\": \"node\"\r\n  }\r\n}<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-amber\">\n<h3>20) VS Code Extension<\/h3>\n<p>    Scaffolds functions, debugs breakpoints, deploys with one click. Pair with Azure CLI for auth.\n  <\/p><\/div>\n<div class=\"card bg-violet\">\n<h3>21) function.json &amp; host.json<\/h3>\n<p>    <code>function.json<\/code> defines bindings; <code>host.json<\/code> controls runtime (concurrency, logging, batching).<\/p>\n<pre><code class=\"mono\">{\r\n  \"version\":\"2.0\",\r\n  \"logging\": {\"applicationInsights\":{\"samplingSettings\":{\"isEnabled\":true,\"maxTelemetryItemsPerSecond\":5}}},\r\n  \"extensions\": {\"serviceBus\": {\"maxConcurrentCalls\": 16}}\r\n}<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-rose\">\n<h3>22) Python Example<\/h3>\n<pre><code class=\"mono\"># __init__.py\r\nimport logging\r\ndef main(req):\r\n    name = (req.params.get('name') or 'world')\r\n    return f\"Hello, {name}!\"<\/code><\/pre>\n<\/p><\/div>\n<p>  <!-- ===================== SECTION 4 ===================== --><\/p>\n<div class=\"section-title\">Section 4 \u2014 Deployment &amp; Config<\/div>\n<div class=\"card bg-cyan\">\n<h3>23) Zip Deploy + Run From Package<\/h3>\n<p>    Immutable deployments increase reliability.<\/p>\n<pre><code class=\"mono\">func azure functionapp publish my-func-app --typescript --publish-local-settings -i\r\n# or\r\naz functionapp deployment source config-zip -g rg -n my-func-app --src package.zip<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-indigo\">\n<h3>24) GitHub Actions<\/h3>\n<pre><code class=\"mono\"># .github\/workflows\/deploy.yml (Node)\r\n- uses: actions\/setup-node@v4\r\n- run: npm ci && npm run build\r\n- uses: Azure\/functions-action@v1\r\n  with:\r\n    app-name: my-func-app\r\n    package: '.'<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-emerald\">\n<h3>25) App Settings &amp; Key Vault<\/h3>\n<p>    Use Key Vault references (<code>@Microsoft.KeyVault(...)<\/code>) and managed identity; never hardcode secrets.\n  <\/div>\n<div class=\"card bg-slate\">\n<h3>26) Slots<\/h3>\n<p>    Staging slots allow safe swaps; mark connection strings as \u201cslot setting\u201d if they differ.\n  <\/p><\/div>\n<div class=\"card bg-blue\">\n<h3>27) Containerized Functions<\/h3>\n<p>    Package as a Linux container to control dependencies; supports Premium\/Dedicated.<\/p>\n<pre><code class=\"mono\">FROM mcr.microsoft.com\/azure-functions\/node:4-node18\r\nCOPY . \/home\/site\/wwwroot<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-green\">\n<h3>28) VNET Integration<\/h3>\n<p>    Required to reach private endpoints (databases, storage). Premium plan recommended for stable connections.\n  <\/p><\/div>\n<p>  <!-- ===================== SECTION 5 ===================== --><\/p>\n<div class=\"section-title\">Section 5 \u2014 Performance, Scaling &amp; Reliability<\/div>\n<div class=\"card bg-amber\">\n<h3>29) Concurrency &amp; Batching<\/h3>\n<p>    Tune Service Bus\/Event Hub batch sizes; use parallelism for CPU-light handlers; beware long CPU sections\u2014offload.\n  <\/p><\/div>\n<div class=\"card bg-violet\">\n<h3>30) Retries &amp; Poison<\/h3>\n<p>    Storage queues have poison queues; Service Bus has DLQ. Configure retry policies in <code>host.json<\/code> or bindings.\n  <\/div>\n<div class=\"card bg-rose\">\n<h3>31) Timeouts &amp; Memory<\/h3>\n<p>    Default timeout varies by plan (Consumption has limits). Use Premium for longer processing. Keep memory steady\u2014avoid big in-memory buffers.\n  <\/p><\/div>\n<div class=\"card bg-cyan\">\n<h3>32) Idempotency<\/h3>\n<p>    Make handlers safe to retry. Use dedupe IDs, ETags, or state checks to avoid duplicate side effects.\n  <\/p><\/div>\n<div class=\"card bg-indigo\">\n<h3>33) Parallel Fan-out<\/h3>\n<p>    For many independent tasks, queue messages and process concurrently. For orchestrations, consider Durable Functions.\n  <\/p><\/div>\n<p>  <!-- ===================== SECTION 6 ===================== --><\/p>\n<div class=\"section-title\">Section 6 \u2014 Security<\/div>\n<div class=\"card bg-emerald\">\n<h3>34) Auth Levels<\/h3>\n<p>    HTTP trigger <code>authLevel<\/code>: <b>anonymous<\/b>, <b>function<\/b> (requires key), <b>admin<\/b> (master key). Prefer Azure AD \/ APIM for production APIs.\n  <\/div>\n<div class=\"card bg-slate\">\n<h3>35) Azure AD Protection<\/h3>\n<p>    Enable \u201cEasy Auth\u201d (App Service Authentication) or front with APIM\/Front Door and validate JWT scopes\/roles.\n  <\/p><\/div>\n<div class=\"card bg-blue\">\n<h3>36) Managed Identity<\/h3>\n<p>    Access Storage, Key Vault, Cosmos DB without secrets via MSI and RBAC.<\/p>\n<pre><code class=\"mono\">az functionapp identity assign -g rg -n my-func-app\r\naz role assignment create --assignee &lt;principalId&gt; --role \"Storage Blob Data Reader\" --scope &lt;storage-scope&gt;<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-green\">\n<h3>37) Private Endpoints<\/h3>\n<p>    Lock down function ingress with Private Endpoints + Application Gateway\/Front Door for external publishing.\n  <\/p><\/div>\n<p>  <!-- ===================== SECTION 7 ===================== --><\/p>\n<div class=\"section-title\">Section 7 \u2014 Observability<\/div>\n<div class=\"card bg-amber\">\n<h3>38) Application Insights<\/h3>\n<p>    Built-in logging, metrics, live metrics, sampling. Correlate traces across services.<\/p>\n<pre><code class=\"mono\"># host.json logging sample above; also configure APPINSIGHTS_CONNECTIONSTRING<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-violet\">\n<h3>39) Structured Logs<\/h3>\n<p>    Use ILogger (C#) \/ <code>context.log<\/code> (JS) with consistent fields. Don\u2019t log secrets or large payloads.\n  <\/div>\n<div class=\"card bg-rose\">\n<h3>40) Alerts &amp; Dashboards<\/h3>\n<p>    Alerts on failure rate, function duration, 5xx, queue backlog. Pin charts in Azure Dashboard for on-call.\n  <\/p><\/div>\n<p>  <!-- ===================== SECTION 8 ===================== --><\/p>\n<div class=\"section-title\">Section 8 \u2014 Durable Functions (Orchestrations)<\/div>\n<div class=\"card bg-cyan\">\n<h3>41) What is Durable Functions?<\/h3>\n<p>    State orchestration on top of Functions. Patterns: function chaining, fan-out\/fan-in, async HTTP APIs, human interaction, sagas.\n  <\/p><\/div>\n<div class=\"card bg-indigo\">\n<h3>42) Orchestrator Constraints<\/h3>\n<p>    Orchestrators must be deterministic\u2014no random time.now or non-deterministic I\/O. Use <code>context.currentUtcDateTime<\/code> and activity functions.\n  <\/div>\n<div class=\"card bg-emerald\">\n<h3>43) Sample (JS)<\/h3>\n<pre><code class=\"mono\">\/\/ orchestration.js\r\nconst df = require(\"durable-functions\");\r\nmodule.exports = df.orchestrator(function* (context) {\r\n  const items = yield context.df.callActivity(\"GetItems\");\r\n  const results = yield context.df.callSubOrchestrator(\"ProcessItems\", items);\r\n  return results.length;\r\n});<\/code><\/pre>\n<\/p><\/div>\n<div class=\"card bg-slate\">\n<h3>44) Durable Entities<\/h3>\n<p>    Lightweight stateful objects (counters, carts). Access via signals; good for per-key coordination.\n  <\/p><\/div>\n<div class=\"card bg-blue\">\n<h3>45) Human Interaction<\/h3>\n<p>    External events pause orchestration until approval; combine with timeouts and compensating actions (saga).\n  <\/p><\/div>\n<p>  <!-- ===================== SECTION 9 ===================== --><\/p>\n<div class=\"section-title\">Section 9 \u2014 Patterns, Gotchas &amp; Interview Q&amp;A<\/div>\n<div class=\"card bg-green\">\n<h3>46) Pattern \u2014 API + Queue<\/h3>\n<p>    HTTP receives request \u2192 enqueue job \u2192 immediate 202 response \u2192 worker processes async \u2192 client polls status endpoint.\n  <\/p><\/div>\n<div class=\"card bg-amber\">\n<h3>47) Pattern \u2014 ETL on Blob<\/h3>\n<p>    Blob trigger parses file \u2192 writes cleaned data to Data Lake \u2192 Event Grid notifies downstream.\n  <\/p><\/div>\n<div class=\"card bg-violet\">\n<h3>48) Common Pitfall \u2014 Large Files<\/h3>\n<p>    Don\u2019t buffer whole files in memory. Stream to Storage\/Bus; use temp files on \/home if needed; consider durable patterns.\n  <\/p><\/div>\n<div class=\"card bg-rose\">\n<h3>49) Common Pitfall \u2014 Long Work<\/h3>\n<p>    Hitting timeout? Move to Durable, break into activities, or offload to containerized batch jobs.\n  <\/p><\/div>\n<div class=\"card bg-cyan\">\n<h3>50) Interview \u2014 Functions vs Logic Apps?<\/h3>\n<p>    <span class=\"q\">Answer:<\/span> Functions = code-first, flexible; Logic Apps = designer-first workflows &#038; connectors. Often used together.\n  <\/div>\n<div class=\"card bg-indigo\">\n<h3>51) Interview \u2014 Consumption vs Premium?<\/h3>\n<p>    <span class=\"q\">Answer:<\/span> Consumption is cheapest but can have cold start &#038; limits; Premium offers pre-warmed instances, VNET, longer timeouts.\n  <\/div>\n<div class=\"card bg-emerald\">\n<h3>52) Interview \u2014 Mitigate cold start?<\/h3>\n<p>    <span class=\"q\">Answer:<\/span> Premium pre-warmed, smaller bundles, keep warm pings (non-critical), avoid heavy startup, use DI &#038; lazy init.\n  <\/div>\n<div class=\"card bg-slate\">\n<h3>53) Interview \u2014 Ensuring idempotency?<\/h3>\n<p>    <span class=\"q\">Answer:<\/span> Use message IDs, de-dup tables, blob ETags, and transactional outbox; handle retries safely.\n  <\/div>\n<div class=\"card bg-blue\">\n<h3>54) Troubleshoot Failures<\/h3>\n<p>    Check App Insights traces, \u201cFunction execution\u201d logs, DLQs\/poison queues, Kudu console, and recent deployments for config drift.\n  <\/p><\/div>\n<div class=\"card bg-green\">\n<h3>55) Production Checklist<\/h3>\n<p>    CI\/CD with run-from-package, slots &#038; swaps, Key Vault refs, MSI + RBAC, private endpoints\/VNET, alerts &#038; dashboards, lifecycle docs &#038; runbooks.\n  <\/p><\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Azure Functions Pocket Book \u2014 Uplatz 55+ deep-dive flashcards \u2022 Single column \u2022 Triggers &amp; Bindings \u2022 Durable Functions \u2022 Dev\/Deploy \u2022 Performance &amp; Security \u2022 Interview Q&amp;A Cheat-friendly explanations <span class=\"readmore\"><a href=\"https:\/\/uplatz.com\/blog\/azure-functions-pocket-book\/\">Read More &#8230;<\/a><\/span><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2538,2462],"tags":[],"class_list":["post-4700","post","type-post","status-publish","format-standard","hentry","category-azure-functions","category-pocket-book"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Azure Functions Pocket Book | Uplatz Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/uplatz.com\/blog\/azure-functions-pocket-book\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Azure Functions Pocket Book | Uplatz Blog\" \/>\n<meta property=\"og:description\" content=\"Azure Functions Pocket Book \u2014 Uplatz 55+ deep-dive flashcards \u2022 Single column \u2022 Triggers &amp; Bindings \u2022 Durable Functions \u2022 Dev\/Deploy \u2022 Performance &amp; Security \u2022 Interview Q&amp;A Cheat-friendly explanations Read More ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/uplatz.com\/blog\/azure-functions-pocket-book\/\" \/>\n<meta property=\"og:site_name\" content=\"Uplatz Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Uplatz-1077816825610769\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-21T10:26:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-23T21:51:16+00:00\" \/>\n<meta name=\"author\" content=\"uplatzblog\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@uplatz_global\" \/>\n<meta name=\"twitter:site\" content=\"@uplatz_global\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"uplatzblog\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-functions-pocket-book\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-functions-pocket-book\\\/\"},\"author\":{\"name\":\"uplatzblog\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/person\\\/8ecae69a21d0757bdb2f776e67d2645e\"},\"headline\":\"Azure Functions Pocket Book\",\"datePublished\":\"2025-08-21T10:26:36+00:00\",\"dateModified\":\"2025-08-23T21:51:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-functions-pocket-book\\\/\"},\"wordCount\":958,\"publisher\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#organization\"},\"articleSection\":[\"Azure Functions\",\"Pocket Book\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-functions-pocket-book\\\/\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-functions-pocket-book\\\/\",\"name\":\"Azure Functions Pocket Book | Uplatz Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#website\"},\"datePublished\":\"2025-08-21T10:26:36+00:00\",\"dateModified\":\"2025-08-23T21:51:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-functions-pocket-book\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-functions-pocket-book\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/azure-functions-pocket-book\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Azure Functions Pocket Book\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/\",\"name\":\"Uplatz Blog\",\"description\":\"Uplatz is a global IT Training &amp; Consulting company\",\"publisher\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#organization\",\"name\":\"uplatz.com\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/11\\\/Uplatz-Logo-Copy-2.png\",\"contentUrl\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/11\\\/Uplatz-Logo-Copy-2.png\",\"width\":1280,\"height\":800,\"caption\":\"uplatz.com\"},\"image\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Uplatz-1077816825610769\\\/\",\"https:\\\/\\\/x.com\\\/uplatz_global\",\"https:\\\/\\\/www.instagram.com\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/7956715?trk=tyah&amp;amp;amp;amp;trkInfo=clickedVertical:company,clickedEntityId:7956715,idx:1-1-1,tarId:1464353969447,tas:uplatz\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/person\\\/8ecae69a21d0757bdb2f776e67d2645e\",\"name\":\"uplatzblog\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g\",\"caption\":\"uplatzblog\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Azure Functions Pocket Book | Uplatz Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/uplatz.com\/blog\/azure-functions-pocket-book\/","og_locale":"en_US","og_type":"article","og_title":"Azure Functions Pocket Book | Uplatz Blog","og_description":"Azure Functions Pocket Book \u2014 Uplatz 55+ deep-dive flashcards \u2022 Single column \u2022 Triggers &amp; Bindings \u2022 Durable Functions \u2022 Dev\/Deploy \u2022 Performance &amp; Security \u2022 Interview Q&amp;A Cheat-friendly explanations Read More ...","og_url":"https:\/\/uplatz.com\/blog\/azure-functions-pocket-book\/","og_site_name":"Uplatz Blog","article_publisher":"https:\/\/www.facebook.com\/Uplatz-1077816825610769\/","article_published_time":"2025-08-21T10:26:36+00:00","article_modified_time":"2025-08-23T21:51:16+00:00","author":"uplatzblog","twitter_card":"summary_large_image","twitter_creator":"@uplatz_global","twitter_site":"@uplatz_global","twitter_misc":{"Written by":"uplatzblog","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/uplatz.com\/blog\/azure-functions-pocket-book\/#article","isPartOf":{"@id":"https:\/\/uplatz.com\/blog\/azure-functions-pocket-book\/"},"author":{"name":"uplatzblog","@id":"https:\/\/uplatz.com\/blog\/#\/schema\/person\/8ecae69a21d0757bdb2f776e67d2645e"},"headline":"Azure Functions Pocket Book","datePublished":"2025-08-21T10:26:36+00:00","dateModified":"2025-08-23T21:51:16+00:00","mainEntityOfPage":{"@id":"https:\/\/uplatz.com\/blog\/azure-functions-pocket-book\/"},"wordCount":958,"publisher":{"@id":"https:\/\/uplatz.com\/blog\/#organization"},"articleSection":["Azure Functions","Pocket Book"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/uplatz.com\/blog\/azure-functions-pocket-book\/","url":"https:\/\/uplatz.com\/blog\/azure-functions-pocket-book\/","name":"Azure Functions Pocket Book | Uplatz Blog","isPartOf":{"@id":"https:\/\/uplatz.com\/blog\/#website"},"datePublished":"2025-08-21T10:26:36+00:00","dateModified":"2025-08-23T21:51:16+00:00","breadcrumb":{"@id":"https:\/\/uplatz.com\/blog\/azure-functions-pocket-book\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/uplatz.com\/blog\/azure-functions-pocket-book\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/uplatz.com\/blog\/azure-functions-pocket-book\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/uplatz.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Azure Functions Pocket Book"}]},{"@type":"WebSite","@id":"https:\/\/uplatz.com\/blog\/#website","url":"https:\/\/uplatz.com\/blog\/","name":"Uplatz Blog","description":"Uplatz is a global IT Training &amp; Consulting company","publisher":{"@id":"https:\/\/uplatz.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/uplatz.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/uplatz.com\/blog\/#organization","name":"uplatz.com","url":"https:\/\/uplatz.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/uplatz.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2016\/11\/Uplatz-Logo-Copy-2.png","contentUrl":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2016\/11\/Uplatz-Logo-Copy-2.png","width":1280,"height":800,"caption":"uplatz.com"},"image":{"@id":"https:\/\/uplatz.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Uplatz-1077816825610769\/","https:\/\/x.com\/uplatz_global","https:\/\/www.instagram.com\/","https:\/\/www.linkedin.com\/company\/7956715?trk=tyah&amp;amp;amp;amp;trkInfo=clickedVertical:company,clickedEntityId:7956715,idx:1-1-1,tarId:1464353969447,tas:uplatz"]},{"@type":"Person","@id":"https:\/\/uplatz.com\/blog\/#\/schema\/person\/8ecae69a21d0757bdb2f776e67d2645e","name":"uplatzblog","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g","caption":"uplatzblog"}}]}},"_links":{"self":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts\/4700","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/comments?post=4700"}],"version-history":[{"count":1,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts\/4700\/revisions"}],"predecessor-version":[{"id":4701,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts\/4700\/revisions\/4701"}],"wp:attachment":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/media?parent=4700"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/categories?post=4700"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/tags?post=4700"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}