Categories
Tags
/ 2fa ab aboutme access-control access-management active-directory actix-web ad-blocking administration admission-control adr advanced-devops agile ai AI AI Agents AI Development ai-integration ai-translation airtable alerting amplitude amtd analysis analytics anomaly-detection ansible api API api-client api-design api-gateway api-management api-security app-control-for-business apparmor apple applescript application-security applications applocker arch-linux architecture architecture-patterns argocd asgi assemblyscript astro-ai async Async athena Attack-Mitigation attestation audio auth0 authentication Authentication authorization automation autoscaling aws AWS awslambda aya Aya azure azure-ad backend background-services backstage backup Backup bare-metal bash basics bcc behavioral-analysis benchmarking Best Practices best-practices bgp bind-mounts blacklist blog-platforms Blogging blue-green blue-team bluechi bochs borrowing bot-management Bot-Management boto3 bpftrace broadcom browser build build-configuration busybox c caddy calico canary career Career cdc CDN cdn centos certificate-authority certificates chartmuseum chatbot chatops check_wmi_plus choreography chrome ci-cd CI/CD cicd cilium circuit-breaker cis cis-benchmark cka Claude claude-3-opus claude-code cleanup cli cli-tools clickhouse cloud cloud-native cloud-providers cloud-security Cloud-Storage cloudflare Cloudflare cloudflared cloudrun cluster cluster-deployment cluster-health cluster-management cluster-setup cmd cni cocktails code management code-generation collaboration communication communication-patterns community compensation compliance compression computer-vision conference-translation configmaps configuration configuration-management consul container Container Orchestration container-management container-orchestration container-runtime container-security containerization Containerization containers Containers content-automation content-generation contextual-translation continuous-improvement contract-testing controller controller-manager cookiecutter cooking coredns coreos correlation cors cosmopolitan Cost Optimization cost-optimization Cost-Optimization cpp cqrs crd cri-o cronjob cronjobs cross-account cross-cloud Cross-Platform cryptography csharp css custom linux custom-decoders customization cybersec cybersecurity Cybersecurity d1-database D1-Database daemonsets dashboard dashboards data-analytics data-architecture data-channels data-consistency data-fetcher data-governance data-management data-masking data-migration data-prepper data-processing data-recovery database datasette dba ddos-protection DDoS-Protection debian debugging decoders deepl-voice deepseek-r1 defense defensive-security Demo deno dep deployment Deployment design-patterns desktop-development detection detection-accuracy Developer Tools developer-portal developer-portals development devops DevOps devops-culture devops-journey devsecops DevSecOps devtools devtron diagrams digitalocean disaster-recovery discord discovery disk-provisioning Distributed Systems distributed-security distributed-systems distributed-transactions distro distrobox django dkim dmarc dnf dns docker Docker document-processing documentation domain-administration domain-driven-design dotnet duckdb dx-operational-observability dynamodb ebpf eBPF ec2 ECS edge-ai edge-computing Edge-Database edge-devices edge-functions edge-security edr elastic-alternative elasticsearch electron elk-stack email email-automation embedded linux embedded-systems encryption endpoint-security Engineering enterprise Enterprise Enterprise Security enterprise-architecture enterprise-integration enterprise-security environment-variables envoy error-handling etcd ETL eureka event-driven event-driven-architecture event-sourcing event-streaming Example exif exploit-prevention exploitation falco Fargate fault-tolerance feature-flags federation fedora fedora-coreos ffmpeg file-integrity file-rule-levels file-transfer filebeat fips-203 firefox firewall fluentbit flux fly forensics full-stack functions fundamentals future-translation gainsaheb gcp gcs gemini-2.5 general gis git github github-actions gitlab gitops GitOps Global-Distribution gmail go golang google google-authenticator google-cloud google-sheets googlecloud governance gpt gpt-4o gpt3 grafana graph-api graphical interface graphql GraphQL group-policy grpc gui guide hacker-news ham-radio hardening hardware hardware-security hashicorp health-probes helm helm-charts heroku high-availability hirte history homebrew homelab hpa html http http3 https httpx hugo hybrid-cloud hybrid-quantum-classical iac iam icinga ics identity identity management identity-governance identity-management ignition imagemagick incident-response index index-management indexer industrial-iot industrial-security Infopercept infrastructure Infrastructure infrastructure-as-code ingress installation instrumentation integration integration-testing internet introduction intrusion-detection inventory Invinsense ios iot isa istio iterators jamstack jasmin java javascript JavaScript jenkins jest jinja jq json jsonpath jupyter jwt JWT k8s kafka kannel kaslr keepalive kernel Kernel keycloak KIND kiota kprobe kpti kubeadm kubectl kubernetes Kubernetes kustomize kyber labels lambda language-processing large-language-models lattice-cryptography launchd learning legacy-systems libvirt lightsail lightweight distro linkding linux Linux linux development linux from scratch linux kernel linux kernel compilation linux system linux-kernel linux-security liveness lkl llm LLM llm-translation llms log log-analysis log-ingestion log-management log-parsing logging logs low-latency lsm Machine Learning machine-learning machine-translation machinelearning macos macOS malware malware-analysis malware-detection malware-protection management manifest maps Markdown markdown master-keys mastodon mdm Media-Storage mediawiki memory-management memory-safety mermaid message-queue messaging metrics metrics-server MFA mfa micro-segmentation micromdm microservices Microservices microsoft microsoft-copilot microsoft-graph microsoft-kiota microwindows midjourney migration Migrations minimalistic os minio misc mitigation ml-kem mobile-device-management monitoring Monitoring morphisec mtls Multi-Agent Systems multi-cluster multi-tenancy multi-tenant multilingual-blogs multimodal-ai multipass musl n8n nagios Namespaces nano-x nats netdata netflix Network network-access network-correlation network-security networking Networking neural-machine-translation neural-networks neuvector nextjs-ai nfs nginx nlp no-code node node-affinity node-exporter Node.js nodejs noisy-neighbors nosql notifications npm oauth oauth2 OAuth2 object-storage Object-Storage objective-c observability observable observable-plot ocr offensive-security oidc open source openai openapi opensearch openssh openssl OpenSSL opentelemetry openvpn operating system operating-systems operators optimization oracle oracle23c orchestration organizational-charts ot-ics overture-maps owasp ownership OXDR P2P p2p package-management packaging packet-capture packet-processing pact pages pagination partitioning patterns pdf peer-to-peer performance Performance performance-optimization permissions persistentvolumeclaims persistentvolumes personalization php pihole pipeline pixelmator pixie PKI pki Platform Development platform-engineering playwright pluggy plugin plugins pmp pod-security podman pods polyglot-persistence post-quantum-cryptography postgresql powershell presenting pricing process-exporter processor production Production productivity programming project-management prometheus protocols proxy purpleair pyodide pypi pytest python qemu quadlet quadlets quality-assurance quantum-acceleration quantum-ai quantum-algorithms quantum-computing quantum-nlp quantum-resistant quarto quic R2 r2 r2-storage rabbitmq rate-limiting Rate-Limiting rbac RBAC rdp react readiness readthedocs real-time real-time-analytics real-time-translation red-team reddit reference remote-access ReplicaSet repository management resilience resilience4j resource-management resources REST rest-api restore risc-v rocky-linux roles rolling-updates rootkit rootless routing rpki rpm-ostree rsyslog rule-engine rule-options rules runtime-protection rust Rust s3 s3-compatible S3-Compatible safari safety-critical saga-pattern sandboxed-execution scalability sched_ext scheduler scheduling scim screen-sharing sdk-development sdk-generation sdlc seamlessm4t search search-engine secrets secrets-management secure-boot secure-coding security Security Security Platform security-analytics security-commands security-monitoring security-platform security-tools selenium selinux seo seo-optimization server-setup serverless Serverless service mesh service-accounts service-discovery service-mesh service-workers Services shell shell-configuration shell-scripting shellcode shot-scraper siem SIEM signaling simultaneous-interpretation single-node sinkhole site-speed slack smack smallstep smpp SMS sms-gateway smtp snapshot software development software-testing spatialite speech-translation spf sphinx spiffe spire spreadsheet spring-boot sql SQL sqlite SQLite squarespace sre ssh ssl SSL/TLS starship static-sites stepca storage storageclass streaming STUN svg swift sysadmin sysmon System Architecture system services system-administration system-calls system-design system-extension system-maintenance systemd systems-programming tailscale taints tcp team-collaboration telegram terminal terminal-services terraform tesseract testcontainers testing tetragon textract threading threat-detection threat-hunting threat-intelligence threat-modeling tiktok tinyemu tls TLS toast-notifications token-flow tokio Tokio tolerations tomcat tools tpm tracee tracing Traffic-Analysis troubleshooting trusted-execution tunnel tunneling tunnels turing TURN tutorial twitter typescript ubuntu udp ui uninstallation unisolation unix utilities upgrade uprobes usb-control use-cases user-experience user-session utm-stack valtown vault vega version control version-control Video video video-chat vim virtualization visualization vmware volumes vpn vpn-replacement vscode vulnerabilities vulnerability vulnerability-analysis vulnerability-detection vulnerability-scanning waf WAF wasi wasm wazuh Wazuh wdac web Web Development web-components web-development web-filtering web-infrastructure web-performance web-security Web-Security web-servers webassembly webauthn webhooks webrtc WebRTC websockets white-labeling wikipedia windows Windows Services windows-10-iot windows-api windows-monitoring windows-security winexe winrt wmi wordpress worker-nodes workers Workers workflow workload-identity xdp XDP XDR xdr xpc xprotect yaml youtube zeit-now zero-copy zero-day zero-trust zsh ztna
145 words
1 minute
Writing an Azure Function that serves all traffic to a subdomain
Writing an Azure Function that serves all traffic to a subdomain#
Azure Functions default to serving traffic from a path like /api/FunctionName - for example https://your-subdomain.azurewebsites.net/api/MyFunction.
If you want to serve an entire website through a single function (e.g. using Datasette) you need that function to we called for any traffic to that subdomain.
Here’s how to do that - to capture all traffic to any path under https://your-subdomain.azurewebsites.net/.
First add the following section to your host.json file:
1 "extensions": {2 "http": {3 "routePrefix": ""4 }5 }Then add "route": "{*route}" to the function.json file for the function that you would like to serve all traffic. Mine ended up looking like this:
1{2 "scriptFile": "__init__.py",3 "bindings": [4 {5 "authLevel": "Anonymous",6 "type": "httpTrigger",7 "direction": "in",8 "name": "req",9 "route": "{*route}",10 "methods": [11 "get",12 "post"13 ]14 },15 {16 "type": "http",17 "direction": "out",18 "name": "$return"19 }20 ]21}See https://github.com/simonw/azure-functions-datasette for an example that uses this pattern.
Writing an Azure Function that serves all traffic to a subdomain
https://mranv.pages.dev/posts/writing-an-azure-function-that-serves-all-traffic-to-a-subdomain/ Saving an in-memory SQLite database to a file in Python
Remember to commit when using datasette.execute_write_fn()