From 55a014f0343ac327f1a6c81972b10da2ac764da1 Mon Sep 17 00:00:00 2001 From: Kody Jackson Date: Mon, 17 Nov 2025 08:08:01 -0600 Subject: [PATCH] [Dash Routes] Update source (#26544) * [Dash Routes] Update source * update various routes and add manually defined file * bunch of route fixes + add commented out part of script for local auditing * Updates --- src/components/DashButton.astro | 19 +- .../dns/2025-09-16-DNSFW-Analytics-UI.mdx | 20 +- .../dash-routes/core-manually-defined.json | 2 + src/content/dash-routes/core.json | 957 +++++++++--------- .../zone-analytics.mdx | 89 +- .../docs/dns/dns-firewall/analytics.mdx | 25 +- src/content/docs/dns/dns-firewall/setup.mdx | 13 +- .../manage-members/dashboard-sso.mdx | 16 +- src/content/docs/images/get-started.mdx | 10 +- .../images/manage-images/blur-variants.mdx | 13 +- .../images/manage-images/create-variants.mdx | 19 +- .../images/manage-images/delete-images.mdx | 6 +- .../images/manage-images/delete-variants.mdx | 12 +- .../docs/images/manage-images/edit-images.mdx | 12 +- .../enable-flexible-variants.mdx | 10 +- .../images/manage-images/export-images.mdx | 6 +- .../serve-images/serve-private-images.mdx | 87 +- .../upload-images/sourcing-kit/edit.mdx | 23 +- .../upload-images/sourcing-kit/enable.mdx | 43 +- .../images/upload-images/upload-dashboard.mdx | 6 +- .../docs/pipelines/getting-started.mdx | 111 +- .../pipelines/pipelines/manage-pipelines.mdx | 2 +- .../docs/pipelines/sinks/manage-sinks.mdx | 2 +- .../docs/pipelines/streams/manage-streams.mdx | 2 +- src/content/docs/r2-sql/get-started.mdx | 112 +- .../r2-sql/tutorials/end-to-end-pipeline.mdx | 4 +- .../stream/edit-videos/video-clipping.mdx | 78 +- src/content/docs/stream/faq.mdx | 31 +- src/content/docs/stream/get-started.mdx | 130 +-- src/content/docs/stream/pricing.mdx | 4 +- .../uploading-videos/upload-video-file.mdx | 5 +- .../viewing-videos/using-own-player/index.mdx | 2 +- .../using-the-stream-player/index.mdx | 141 ++- .../docs/style-guide/components/index.mdx | 23 +- ...igure-cloudflare-and-heroku-over-https.mdx | 4 +- .../configuration/routing/custom-domains.mdx | 8 +- .../observability/metrics-and-analytics.mdx | 56 +- ...ube-thumbnails-with-workers-and-images.mdx | 12 +- .../load-custom-managed-component.mdx | 2 +- .../mconn/configure-connectors.mdx | 4 +- .../routing/mcn-magic-wan-on-ramps.mdx | 25 +- .../update-tunnel-health-checks-frequency.mdx | 4 +- 42 files changed, 1099 insertions(+), 1051 deletions(-) create mode 100644 src/content/dash-routes/core-manually-defined.json diff --git a/src/components/DashButton.astro b/src/components/DashButton.astro index 9e2f531524..33b39e9450 100644 --- a/src/components/DashButton.astro +++ b/src/components/DashButton.astro @@ -2,6 +2,7 @@ import { z } from "astro:schema"; import { LinkButton } from "@astrojs/starlight/components"; import CoreRoutes from "~/content/dash-routes/core.json"; +import CoreManuallyDefinedRoutes from "~/content/dash-routes/core-manually-defined.json"; import ZeroTrustRoutes from "~/content/dash-routes/zero-trust.json"; const props = z @@ -14,7 +15,9 @@ const props = z const { url, zeroTrust, buttonName } = props.parse(Astro.props); -const routes = zeroTrust ? ZeroTrustRoutes : CoreRoutes; +const allCoreRoutes = CoreRoutes.concat(CoreManuallyDefinedRoutes); + +const routes = zeroTrust ? ZeroTrustRoutes : allCoreRoutes; const route = routes.find((route) => route.deeplink === url); @@ -22,6 +25,20 @@ if (!route) { throw new Error(`[DashButton] No route found for ${url}`); } +/* +If working locally and wanting to catch multiple missing routes, update above to the following + +let route = routes.find((route) => route.deeplink === url); + +if (!route) { + console.warn(`[DashButton] No route found for ${url}`); + route = { + name: "Account home", + deeplink: "/?to=/:account/home", + }; +} +*/ + const name = buttonName ?? route.name; const baseUrl = zeroTrust ? "https://one.dash.cloudflare.com" diff --git a/src/content/changelog/dns/2025-09-16-DNSFW-Analytics-UI.mdx b/src/content/changelog/dns/2025-09-16-DNSFW-Analytics-UI.mdx index 4818fc2376..8c5f7de609 100644 --- a/src/content/changelog/dns/2025-09-16-DNSFW-Analytics-UI.mdx +++ b/src/content/changelog/dns/2025-09-16-DNSFW-Analytics-UI.mdx @@ -14,16 +14,16 @@ Access [GraphQL-powered DNS Firewall analytics](/dns/dns-firewall/analytics/) di ## Explore Four Interactive Panels -- **Query summary**: Describes trends over time, segmented by dimensions. -- **Query statistics**: Describes totals, cached/uncached queries, and processing/response times. -- **DNS queries by data center**: Describes global view and the top 10 data centers. -- **Top query statistics**: Shows a breakdown by key dimensions, with search and expand options (up to top 100 items). +- **Query summary**: Describes trends over time, segmented by dimensions. +- **Query statistics**: Describes totals, cached/uncached queries, and processing/response times. +- **DNS queries by data center**: Describes global view and the top 10 data centers. +- **Top query statistics**: Shows a breakdown by key dimensions, with search and expand options (up to top 100 items). -Additional features: +Additional features: -- Apply filters and time ranges once. Changes reflect across all panels. -- Filter by dimensions like query name, query type, cluster, data center, protocol (UDP/TCP), IP version, response code/reason, and more. -- Access up to 62 days of historical data with flexible intervals. +- Apply filters and time ranges once. Changes reflect across all panels. +- Filter by dimensions like query name, query type, cluster, data center, protocol (UDP/TCP), IP version, response code/reason, and more. +- Access up to 62 days of historical data with flexible intervals. ## Availability @@ -31,8 +31,8 @@ Available to all DNS Firewall customers as part of their existing subscription. ## Where to Find It -- In the Cloudflare dashboard, go to the **DNS Firewall** page. +- In the Cloudflare dashboard, go to the **DNS Firewall** page. - + - Refer to the [DNS Firewall Analytics](/dns/dns-firewall/analytics/) to learn more. diff --git a/src/content/dash-routes/core-manually-defined.json b/src/content/dash-routes/core-manually-defined.json new file mode 100644 index 0000000000..0d4f101c7a --- /dev/null +++ b/src/content/dash-routes/core-manually-defined.json @@ -0,0 +1,2 @@ +[ +] diff --git a/src/content/dash-routes/core.json b/src/content/dash-routes/core.json index 2e6afdfe6b..75e1808de5 100644 --- a/src/content/dash-routes/core.json +++ b/src/content/dash-routes/core.json @@ -4,8 +4,403 @@ "deeplink": "/?to=/:account/home" }, { - "name": "Discover", - "deeplink": "/?to=/:account/discover" + "name": "Log search", + "deeplink": "/?to=/:account/log-explorer/log-search", + "parent": ["Analytics & logs", "Log Explorer"] + }, + { + "name": "Custom dashboards", + "deeplink": "/?to=/:account/log-explorer/dashboards", + "parent": ["Analytics & logs", "Log Explorer"] + }, + { + "name": "Manage datasets", + "deeplink": "/?to=/:account/log-explorer/manage-sources", + "parent": ["Analytics & logs", "Log Explorer"] + }, + { + "name": "Account analytics", + "deeplink": "/?to=/:account/analytics", + "parent": ["Analytics & logs"] + }, + { + "name": "Web analytics", + "deeplink": "/?to=/:account/web-analytics", + "parent": ["Analytics & logs"] + }, + { + "name": "Trace", + "deeplink": "/?to=/:account/trace", + "parent": ["Analytics & logs"] + }, + { + "name": "Logpush", + "deeplink": "/?to=/:account/logs", + "parent": ["Analytics & logs"] + }, + { + "name": "Workers & Pages", + "deeplink": "/?to=/:account/workers-and-pages", + "parent": ["Compute & AI"] + }, + { + "name": "Observability", + "deeplink": "/?to=/:account/workers-and-pages/observability", + "parent": ["Compute & AI"] + }, + { + "name": "Workers for Platforms", + "deeplink": "/?to=/:account/workers-for-platforms", + "parent": ["Compute & AI"] + }, + { + "name": "Containers", + "deeplink": "/?to=/:account/workers/containers", + "parent": ["Compute & AI"] + }, + { + "name": "Durable Objects", + "deeplink": "/?to=/:account/workers/durable-objects", + "parent": ["Compute & AI"] + }, + { + "name": "Queues", + "deeplink": "/?to=/:account/workers/queues", + "parent": ["Compute & AI"] + }, + { + "name": "Workflows", + "deeplink": "/?to=/:account/workers/workflows", + "parent": ["Compute & AI"] + }, + { + "name": "Browser Rendering", + "deeplink": "/?to=/:account/workers/browser-rendering", + "parent": ["Compute & AI"] + }, + { + "name": "AI Search (AutoRAG)", + "deeplink": "/?to=/:account/ai/ai-search", + "parent": ["Compute & AI"] + }, + { + "name": "Workers AI", + "deeplink": "/?to=/:account/ai/workers-ai", + "parent": ["Compute & AI"] + }, + { + "name": "AI Gateway", + "deeplink": "/?to=/:account/ai/ai-gateway", + "parent": ["Compute & AI"] + }, + { + "name": "VPC", + "deeplink": "/?to=/:account/workers/vpc", + "parent": ["Compute & AI"] + }, + { + "name": "Workers plans", + "deeplink": "/?to=/:account/workers/plans", + "parent": ["Compute & AI"] + }, + { + "name": "Overview", + "deeplink": "/?to=/:account/r2/overview", + "parent": ["Storage & databases", "R2 object storage"] + }, + { + "name": "Data migration", + "deeplink": "/?to=/:account/r2/slurper", + "parent": ["Storage & databases", "R2 object storage"] + }, + { + "name": "Hyperdrive", + "deeplink": "/?to=/:account/workers/hyperdrive", + "parent": ["Storage & databases"] + }, + { + "name": "Workers KV", + "deeplink": "/?to=/:account/workers/kv/namespaces", + "parent": ["Storage & databases"] + }, + { + "name": "D1 SQL database", + "deeplink": "/?to=/:account/workers/d1", + "parent": ["Storage & databases"] + }, + { + "name": "Analytics Engine", + "deeplink": "/?to=/:account/workers/analytics-engine", + "parent": ["Storage & databases"] + }, + { + "name": "Pipelines", + "deeplink": "/?to=/:account/pipelines/overview", + "parent": ["Storage & databases", "Pipelines"] + }, + { + "name": "Streams", + "deeplink": "/?to=/:account/pipelines/streams", + "parent": ["Storage & databases", "Pipelines"] + }, + { + "name": "Sinks", + "deeplink": "/?to=/:account/pipelines/sinks", + "parent": ["Storage & databases", "Pipelines"] + }, + { + "name": "Vectorize", + "deeplink": "/?to=/:account/ai/vectorize", + "parent": ["Storage & databases"] + }, + { + "name": "Secrets Store", + "deeplink": "/?to=/:account/secrets-store", + "parent": ["Storage & databases"] + }, + { + "name": "Videos", + "deeplink": "/?to=/:account/stream/videos", + "parent": ["Media", "Stream"] + }, + { + "name": "Live inputs", + "deeplink": "/?to=/:account/stream/inputs", + "parent": ["Media", "Stream"] + }, + { + "name": "Transformations", + "deeplink": "/?to=/:account/stream/video-transformations", + "parent": ["Media", "Stream"] + }, + { + "name": "Analytics", + "deeplink": "/?to=/:account/stream/analytics", + "parent": ["Media", "Stream"] + }, + { + "name": "Transformations", + "deeplink": "/?to=/:account/images/transformations", + "parent": ["Media", "Images"] + }, + { + "name": "Hosted images", + "deeplink": "/?to=/:account/images/hosted", + "parent": ["Media", "Images"] + }, + { + "name": "RealtimeKit", + "deeplink": "/?to=/:account/realtime/kit", + "parent": ["Media", "Realtime"] + }, + { + "name": "TURN Server", + "deeplink": "/?to=/:account/realtime/turn", + "parent": ["Media", "Realtime"] + }, + { + "name": "Serverless SFU", + "deeplink": "/?to=/:account/realtime/sfu", + "parent": ["Media", "Realtime"] + }, + { + "name": "Security insights", + "deeplink": "/?to=/:account/security-center", + "parent": ["Application security"] + }, + { + "name": "Security analytics", + "deeplink": "/?to=/:account/security-center/analytics", + "parent": ["Application security"] + }, + { + "name": "Security events", + "deeplink": "/?to=/:account/security-center/events", + "parent": ["Application security"] + }, + { + "name": "WAF", + "deeplink": "/?to=/:account/application-security/waf", + "parent": ["Application security"] + }, + { + "name": "Investigate", + "deeplink": "/?to=/:account/security-center/investigate", + "parent": ["Application security"] + }, + { + "name": "Infrastructure", + "deeplink": "/?to=/:account/security-center/inventory", + "parent": ["Application security"] + }, + { + "name": "Threat intelligence", + "deeplink": "/?to=/:account/security-center/threat-intelligence", + "parent": ["Application security"] + }, + { + "name": "Brand protection", + "deeplink": "/?to=/:account/security-center/brand-protection", + "parent": ["Application security"] + }, + { + "name": "Security reports", + "deeplink": "/?to=/:account/security-center/reports", + "parent": ["Application security"] + }, + { + "name": "Turnstile", + "deeplink": "/?to=/:account/turnstile", + "parent": ["Application security"] + }, + { + "name": "Zero Trust", + "deeplink": "https://one.dash.cloudflare.com" + }, + { + "name": "Network analytics", + "deeplink": "/?to=/:account/network-analytics", + "parent": ["Networking", "Analytics"] + }, + { + "name": "Magic monitoring", + "deeplink": "/?to=/:account/network-monitoring", + "parent": ["Networking", "Analytics"] + }, + { + "name": "Configuration", + "deeplink": "/?to=/:account/magic-transit/configuration", + "parent": ["Networking", "Magic Transit"] + }, + { + "name": "Network health", + "deeplink": "/?to=/:account/magic-transit/tunnel-healthchecks", + "parent": ["Networking", "Magic Transit"] + }, + { + "name": "Packet captures", + "deeplink": "/?to=/:account/magic-transit/packet-captures/captures", + "parent": ["Networking", "Magic Transit"] + }, + { + "name": "Network overview", + "deeplink": "/?to=/:account/magic-wan/network", + "parent": ["Networking", "Magic WAN"] + }, + { + "name": "Connector on-ramps", + "deeplink": "/?to=/:account/magic-wan/mconn-onramp", + "parent": ["Networking", "Magic WAN"] + }, + { + "name": "Cloud on-ramps", + "deeplink": "/?to=/:account/magic-wan/cloud-onramp", + "parent": ["Networking", "Magic WAN"] + }, + { + "name": "Configuration", + "deeplink": "/?to=/:account/magic-wan/configuration", + "parent": ["Networking", "Magic WAN"] + }, + { + "name": "Network health", + "deeplink": "/?to=/:account/magic-wan/tunnel-healthchecks", + "parent": ["Networking", "Magic WAN"] + }, + { + "name": "Packet captures", + "deeplink": "/?to=/:account/magic-wan/packet-captures/captures", + "parent": ["Networking", "Magic WAN"] + }, + { + "name": "Magic Firewall", + "deeplink": "/?to=/:account/network-security/magic_firewall", + "parent": ["Networking"] + }, + { + "name": "DDoS Managed Rules", + "deeplink": "/?to=/:account/network-security/ddos", + "parent": ["Networking", "L3/4 DDoS protection"] + }, + { + "name": "Interconnects", + "deeplink": "/?to=/:account/interconnects", + "parent": ["Networking"] + }, + { + "name": "Cloud Integrations", + "deeplink": "/?to=/:account/mcn/integrations", + "parent": ["Networking"] + }, + { + "name": "Leased IPs", + "deeplink": "/?to=/:account/ip-addresses/leased-ips", + "parent": ["Networking", "IP addresses"] + }, + { + "name": "Address maps", + "deeplink": "/?to=/:account/ip-addresses/proxy-ips", + "parent": ["Networking", "IP addresses"] + }, + { + "name": "Internal DNS", + "deeplink": "/?to=/:account/internal-dns", + "parent": ["Networking"] + }, + { + "name": "Clusters", + "deeplink": "/?to=/:account/dns-firewall/clusters", + "parent": ["Networking", "DNS Firewall"] + }, + { + "name": "Analytics", + "deeplink": "/?to=/:account/dns-firewall/analytics", + "parent": ["Networking", "DNS Firewall"] + }, + { + "name": "Bulk redirects", + "deeplink": "/?to=/:account/bulk-redirects", + "parent": ["Delivery & performance"] + }, + { + "name": "Load Balancing", + "deeplink": "/?to=/:account/load-balancing", + "parent": ["Delivery & performance"] + }, + { + "name": "Tag setup", + "deeplink": "/?to=/:account/tag-management/zaraz", + "parent": ["Delivery & performance", "Web tag management"] + }, + { + "name": "Consent", + "deeplink": "/?to=/:account/tag-management/consent", + "parent": ["Delivery & performance", "Web tag management"] + }, + { + "name": "History", + "deeplink": "/?to=/:account/tag-management/history", + "parent": ["Delivery & performance", "Web tag management"] + }, + { + "name": "Monitoring", + "deeplink": "/?to=/:account/tag-management/monitoring", + "parent": ["Delivery & performance", "Web tag management"] + }, + { + "name": "Settings", + "deeplink": "/?to=/:account/tag-management/settings", + "parent": ["Delivery & performance", "Web tag management"] + }, + { + "name": "Zaraz plans", + "deeplink": "/?to=/:account/tag-management/plans", + "parent": ["Delivery & performance", "Web tag management"] + }, + { + "name": "Google Tag Gateway", + "deeplink": "/?to=/:account/tag-management/google-tag-gateway", + "parent": ["Delivery & performance", "Web tag management"] }, { "name": "Manage domains", @@ -22,479 +417,62 @@ "deeplink": "/?to=/:account/registrar/register", "parent": ["Domain registration"] }, - { - "name": "Log Explorer", - "deeplink": "/?to=/:account/log-explorer" - }, - { - "name": "Log search", - "deeplink": "/?to=/:account/log-explorer/log-search", - "parent": ["Log Explorer"] - }, - { - "name": "Custom dashboards", - "deeplink": "/?to=/:account/log-explorer/dashboards", - "parent": ["Log Explorer"] - }, - { - "name": "Manage datasets", - "deeplink": "/?to=/:account/log-explorer/manage-sources", - "parent": ["Log Explorer"] - }, - { - "name": "Account analytics", - "deeplink": "/?to=/:account/analytics", - "parent": ["Analytics & Logs"] - }, - { - "name": "Network analytics", - "deeplink": "/?to=/:account/network-analytics", - "parent": ["Analytics & Logs"] - }, - { - "name": "Web analytics", - "deeplink": "/?to=/:account/web-analytics", - "parent": ["Analytics & Logs"] - }, - { - "name": "Logpush", - "deeplink": "/?to=/:account/logs", - "parent": ["Analytics & Logs"] - }, - { - "name": "Carbon Impact Report", - "deeplink": "/?to=/:account/carbon", - "parent": ["Analytics & Logs"] - }, - { - "name": "Cloud on-ramps", - "deeplink": "/?to=/:account/magic-wan/cloud-onramp/list", - "parent": ["Magic Cloud Networking"] - }, - { - "name": "Address Space", - "deeplink": "/?to=/:account/magic-wan/configuration/magic_wan_address_space", - "parent": ["Magic Cloud Networking"] - }, - { - "name": "Cloud integrations", - "deeplink": "/?to=/:account/mcn/integrations", - "parent": ["Magic Cloud Networking"] - }, - { - "name": "Magic monitoring", - "deeplink": "/?to=/:account/network-monitoring", - "parent": ["Analytics & Logs"] - }, - { - "name": "Security insights", - "deeplink": "/?to=/:account/security-center", - "parent": ["Security Center"] - }, - { - "name": "Security analytics", - "deeplink": "/?to=/:account/security-center/analytics", - "parent": ["Security Center"] - }, - { - "name": "Security events", - "deeplink": "/?to=/:account/security-center/events", - "parent": ["Security Center"] - }, - { - "name": "Infrastructure", - "deeplink": "/?to=/:account/security-center/inventory", - "parent": ["Security Center"] - }, - { - "name": "Investigate", - "deeplink": "/?to=/:account/security-center/investigate", - "parent": ["Security Center"] - }, - { - "name": "Security reports", - "deeplink": "/?to=/:account/security-center/reports", - "parent": ["Security Center"] - }, - { - "name": "Brand Protection", - "deeplink": "/?to=/:account/security-center/brand-protection", - "parent": ["Security Center"] - }, - { - "name": "Threat intelligence", - "deeplink": "/?to=/:account/security-center/threat-intelligence", - "parent": ["Security Center"] - }, - { - "name": "Trace", - "deeplink": "/?to=/:account/trace" - }, - { - "name": "WAF", - "deeplink": "/?to=/:account/application-security/waf" - }, - { - "name": "Internal DNS", - "deeplink": "/?to=/:account/internal-dns" - }, - { - "name": "DNS Firewall", - "deeplink": "/?to=/:account/dns-firewall" - }, - { - "name": "Turnstile", - "deeplink": "/?to=/:account/turnstile" - }, - { - "name": "Load balancing", - "deeplink": "/?to=/:account/load-balancing" - }, - { - "name": "Interconnects", - "deeplink": "/?to=/:account/interconnects" - }, - { - "name": "Magic Transit", - "deeplink": "/?to=/:account/magic-transit" - }, - { - "name": "Configuration", - "deeplink": "/?to=/:account/magic-transit/configuration", - "parent": ["Magic Transit"] - }, - { - "name": "Network health", - "deeplink": "/?to=/:account/magic-transit/tunnel-healthchecks", - "parent": ["Magic Transit"] - }, - { - "name": "Packet captures", - "deeplink": "/?to=/:account/magic-transit/packet-captures/captures", - "parent": ["Magic Transit"] - }, - { - "name": "Magic Firewall", - "deeplink": "/?to=/:account/network-security/magic_firewall" - }, - { - "name": "DDoS Managed Rules", - "deeplink": "/?to=/:account/network-security/ddos", - "parent": ["L3/4 DDoS protection"] - }, - { - "name": "Address maps", - "deeplink": "/?to=/:account/ip-addresses/proxy-ips", - "parent": ["IP addresses"] - }, - { - "name": "Zero Trust", - "deeplink": "https://one.dash.cloudflare.com" - }, - { - "name": "Overview", - "deeplink": "/?to=/:account/magic-wan/overview", - "parent": ["Magic WAN"] - }, - { - "name": "Sites", - "deeplink": "/?to=/:account/magic-wan/sites", - "parent": ["Magic WAN"] - }, - { - "name": "Configuration", - "deeplink": "/?to=/:account/magic-wan/configuration", - "parent": ["Magic WAN"] - }, - { - "name": "Network health", - "deeplink": "/?to=/:account/magic-wan/tunnel-healthchecks", - "parent": ["Magic WAN"] - }, - { - "name": "Packet captures", - "deeplink": "/?to=/:account/magic-wan/packet-captures/captures", - "parent": ["Magic WAN"] - }, - { - "name": "Workers & Pages", - "deeplink": "/?to=/:account/workers-and-pages", - "parent": ["Compute (Workers)"] - }, - { - "name": "Durable Objects", - "deeplink": "/?to=/:account/workers/durable-objects", - "parent": ["Compute (Workers)"] - }, - { - "name": "Containers", - "deeplink": "/?to=/:account/workers/containers", - "parent": ["Compute (Workers)"] - }, - { - "name": "Observability", - "deeplink": "/?to=/:account/workers-and-pages/observability", - "parent": ["Compute (Workers)"] - }, - { - "name": "Workflows", - "deeplink": "/?to=/:account/workers/workflows", - "parent": ["Compute (Workers)"] - }, - { - "name": "Browser Rendering", - "deeplink": "/?to=/:account/workers/browser-rendering", - "parent": ["Compute (Workers)"] - }, - { - "name": "Workers plans", - "deeplink": "/?to=/:account/workers/plans", - "parent": ["Compute (Workers)"] - }, - { - "name": "Secrets Store", - "deeplink": "/?to=/:account/secrets-store" - }, - { - "name": "Workers for Platforms", - "deeplink": "/?to=/:account/workers-for-platforms" - }, - { - "name": "Workers KV", - "deeplink": "/?to=/:account/workers/kv/namespaces", - "parent": ["Storage & Databases"] - }, - { - "name": "D1 SQL database", - "deeplink": "/?to=/:account/workers/d1", - "parent": ["Storage & Databases"] - }, - { - "name": "Hyperdrive", - "deeplink": "/?to=/:account/workers/hyperdrive", - "parent": ["Storage & Databases"] - }, - { - "name": "Pipelines", - "deeplink": "/?to=/:account/pipelines", - "parent": ["Storage & Databases"] - }, - { - "name": "Queues", - "deeplink": "/?to=/:account/workers/queues", - "parent": ["Storage & Databases"] - }, - { - "name": "Analytics Engine", - "deeplink": "/?to=/:account/workers/analytics-engine", - "parent": ["Storage & Databases"] - }, - { - "name": "Overview", - "deeplink": "/?to=/:account/r2/overview", - "parent": ["R2 object storage"] - }, - { - "name": "Data migration", - "deeplink": "/?to=/:account/r2/slurper", - "parent": ["R2 object storage"] - }, - { - "name": "Workers AI", - "deeplink": "/?to=/:account/ai/workers-ai", - "parent": ["AI"] - }, - { - "name": "Vectorize", - "deeplink": "/?to=/:account/ai/vectorize", - "parent": ["AI"] - }, - { - "name": "AI Gateway", - "deeplink": "/?to=/:account/ai/ai-gateway", - "parent": ["AI"] - }, - { - "name": "AI Search", - "deeplink": "/?to=/:account/ai/ai-search", - "parent": ["AI"] - }, - { - "name": "Stream", - "deeplink": "/?to=/:account/stream" - }, - { - "name": "Videos", - "deeplink": "/?to=/:account/stream/videos", - "parent": ["Stream"] - }, - { - "name": "Live inputs", - "deeplink": "/?to=/:account/stream/inputs", - "parent": ["Stream"] - }, - { - "name": "Transformations", - "deeplink": "/?to=/:account/stream/video-transformations", - "parent": ["Stream"] - }, - { - "name": "Analytics", - "deeplink": "/?to=/:account/stream/analytics", - "parent": ["Stream"] - }, - { - "name": "Overview", - "deeplink": "/?to=/:account/images", - "parent": ["Images"] - }, - { - "name": "Variants", - "deeplink": "/?to=/:account/images/variants", - "parent": ["Images"] - }, - { - "name": "Keys", - "deeplink": "/?to=/:account/images/keys", - "parent": ["Images"] - }, - { - "name": "Sourcing kit", - "deeplink": "/?to=/:account/images/sourcing-kit", - "parent": ["Images"] - }, - { - "name": "Transformations", - "deeplink": "/?to=/:account/images/delivery-zones", - "parent": ["Images"] - }, - { - "name": "Realtime", - "deeplink": "/?to=/:account/realtime" - }, - { - "name": "Agents", - "deeplink": "/?to=/:account/realtime/agents", - "parent": ["Realtime"] - }, - { - "name": "RealtimeKit", - "deeplink": "/?to=/:account/realtime/kit", - "parent": ["Realtime"] - }, - { - "name": "TURN Server", - "deeplink": "/?to=/:account/realtime/turn", - "parent": ["Realtime"] - }, - { - "name": "Serverless SFU", - "deeplink": "/?to=/:account/realtime/sfu", - "parent": ["Realtime"] - }, - { - "name": "Tag management", - "deeplink": "/?to=/:account/tag-management" - }, - { - "name": "Tag setup", - "deeplink": "/?to=/:account/tag-management/zaraz", - "parent": ["Tag management"] - }, - { - "name": "Consent", - "deeplink": "/?to=/:account/tag-management/consent", - "parent": ["Tag management"] - }, - { - "name": "History", - "deeplink": "/?to=/:account/tag-management/history", - "parent": ["Tag management"] - }, - { - "name": "Monitoring", - "deeplink": "/?to=/:account/tag-management/monitoring", - "parent": ["Tag management"] - }, - { - "name": "Settings", - "deeplink": "/?to=/:account/tag-management/settings", - "parent": ["Tag management"] - }, - { - "name": "Zaraz plans", - "deeplink": "/?to=/:account/tag-management/plans", - "parent": ["Tag management"] - }, - { - "name": "Google Tag Gateway", - "deeplink": "/?to=/:account/tag-management/google-tag-gateway", - "parent": ["Tag management"] - }, { "name": "Members", "deeplink": "/?to=/:account/members", - "parent": ["Manage Account"] - }, - { - "name": "Members Settings", - "deeplink": "/?to=/:account/members/settings", - "parent": ["Manage Account Members Settings"] - }, - { - "name": "Account API tokens", - "deeplink": "/?to=/:account/api-tokens", - "parent": ["Manage Account"] - }, - { - "name": "Audit logs", - "deeplink": "/?to=/:account/audit-log", - "parent": ["Manage Account"] + "parent": ["Manage account"] }, { "name": "Billing", "deeplink": "/?to=/:account/billing", - "parent": ["Manage Account"] + "parent": ["Manage account"] }, { - "name": "Settings", - "deeplink": "/?to=/:account/configurations", - "parent": ["Manage Account"] + "name": "Account API tokens", + "deeplink": "/?to=/:account/api-tokens", + "parent": ["Manage account"] }, { - "name": "Abuse reports", - "deeplink": "/?to=/:account/abuse-reports", - "parent": ["Manage Account"] + "name": "Audit logs", + "deeplink": "/?to=/:account/audit-log", + "parent": ["Manage account"] + }, + { + "name": "Notifications", + "deeplink": "/?to=/:account/notifications", + "parent": ["Manage account"] }, { "name": "Blocked content", "deeplink": "/?to=/:account/blocked-content", - "parent": ["Manage Account"] + "parent": ["Manage account"] }, { - "name": "Notifications", - "deeplink": "/?to=/:account/notifications" + "name": "Abuse reports", + "deeplink": "/?to=/:account/abuse-reports", + "parent": ["Manage account"] }, { - "name": "Bulk redirects", - "deeplink": "/?to=/:account/bulk-redirects" + "name": "Carbon Impact Report", + "deeplink": "/?to=/:account/carbon", + "parent": ["Manage account"] }, { - "name": "Overview", - "deeplink": "/?to=/:account/domains/overview", - "parent": ["Domain management"] + "name": "Settings", + "deeplink": "/?to=/:account/configurations", + "parent": ["Manage account"] }, { "name": "Overview", "deeplink": "/?to=/:account/:zone/" }, { - "name": "AI Crawl Control", - "deeplink": "/?to=/:account/:zone/ai" + "name": "Recents", + "deeplink": "N/A" }, { - "name": "Log Explorer", - "deeplink": "/?to=/:account/:zone/log-explorer" + "name": "AI Crawl Control", + "deeplink": "/?to=/:account/:zone/ai" }, { "name": "Log search", @@ -511,58 +489,50 @@ "deeplink": "/?to=/:account/:zone/log-explorer/manage-sources", "parent": ["Log Explorer"] }, - { - "name": "Analytics & Logs", - "deeplink": "/?to=/:account/:zone/analytics" - }, { "name": "HTTP Traffic", "deeplink": "/?to=/:account/:zone/analytics/traffic", - "parent": ["Analytics & Logs"] + "parent": ["Analytics & logs"] }, { "name": "Web analytics", "deeplink": "/?to=/:account/:zone/analytics/web/overview", - "parent": ["Analytics & Logs"] + "parent": ["Analytics & logs"] }, { "name": "Security", "deeplink": "/?to=/:account/:zone/analytics/security", - "parent": ["Analytics & Logs"] + "parent": ["Analytics & logs"] }, { "name": "Performance", "deeplink": "/?to=/:account/:zone/analytics/performance", - "parent": ["Analytics & Logs"] + "parent": ["Analytics & logs"] }, { "name": "Edge Reachability", "deeplink": "/?to=/:account/:zone/analytics/edgeReachability", - "parent": ["Analytics & Logs"] + "parent": ["Analytics & logs"] }, { "name": "Workers", "deeplink": "/?to=/:account/:zone/analytics/workers", - "parent": ["Analytics & Logs"] + "parent": ["Analytics & logs"] }, { "name": "Logpush", "deeplink": "/?to=/:account/:zone/analytics/logs", - "parent": ["Analytics & Logs"] + "parent": ["Analytics & logs"] }, { "name": "Instant Logs", "deeplink": "/?to=/:account/:zone/analytics/instant-logs", - "parent": ["Analytics & Logs"] + "parent": ["Analytics & logs"] }, { "name": "Version Management", "deeplink": "/?to=/:account/:zone/versioning" }, - { - "name": "DNS", - "deeplink": "/?to=/:account/:zone/dns" - }, { "name": "Records", "deeplink": "/?to=/:account/:zone/dns/records", @@ -578,10 +548,6 @@ "deeplink": "/?to=/:account/:zone/dns/settings", "parent": ["DNS"] }, - { - "name": "Email", - "deeplink": "/?to=/:account/:zone/email" - }, { "name": "Email Routing", "deeplink": "/?to=/:account/:zone/email/routing", @@ -593,7 +559,7 @@ "parent": ["Email"] }, { - "name": "Email security", + "name": "Email Security", "deeplink": "/?to=/:account/:zone/email/security", "parent": ["Email"] }, @@ -631,10 +597,6 @@ "deeplink": "/?to=/:account/:zone/ssl-tls/custom-hostnames", "parent": ["SSL/TLS"] }, - { - "name": "Security", - "deeplink": "/?to=/:account/:zone/security" - }, { "name": "Overview", "deeplink": "/?to=/:account/:zone/security/overview", @@ -665,8 +627,14 @@ "deeplink": "/?to=/:account/:zone/access" }, { - "name": "Speed", - "deeplink": "/?to=/:account/:zone/speed" + "name": "Observatory", + "deeplink": "/?to=/:account/:zone/speed", + "parent": ["Speed"] + }, + { + "name": "Real user monitoring", + "deeplink": "/?to=/:account/:zone/speed/rum", + "parent": ["Speed"] }, { "name": "Synthetic monitoring", @@ -678,6 +646,11 @@ "deeplink": "/?to=/:account/:zone/speed/optimization", "parent": ["Speed"] }, + { + "name": "Smart Shield", + "deeplink": "/?to=/:account/:zone/speed/smart-shield", + "parent": ["Speed"] + }, { "name": "Overview", "deeplink": "/?to=/:account/:zone/caching", @@ -707,10 +680,6 @@ "name": "Workers Routes", "deeplink": "/?to=/:account/:zone/workers" }, - { - "name": "Rules", - "deeplink": "/?to=/:account/:zone/rules" - }, { "name": "Overview", "deeplink": "/?to=/:account/:zone/rules/overview", @@ -755,7 +724,7 @@ "parent": ["Traffic"] }, { - "name": "Load balancing", + "name": "Load Balancing", "deeplink": "/?to=/:account/:zone/traffic/load-balancing", "parent": ["Traffic"] }, @@ -786,5 +755,37 @@ { "name": "Web3", "deeplink": "/?to=/:account/:zone/web3" + }, + { + "name": "Configurations", + "deeplink": "/profile/managed-profile" + }, + { + "name": "API Tokens", + "deeplink": "/profile/api-tokens" + }, + { + "name": "Active sessions", + "deeplink": "/profile/sessions" + }, + { + "name": "Organizations", + "deeplink": "/organizations" + }, + { + "name": "Accounts", + "deeplink": "/" + }, + { + "name": "Websites", + "deeplink": "/zones" + }, + { + "name": "My Profile", + "deeplink": "/profile" + }, + { + "name": "Tenants", + "deeplink": "/partners/tenant" } ] diff --git a/src/content/docs/analytics/account-and-zone-analytics/zone-analytics.mdx b/src/content/docs/analytics/account-and-zone-analytics/zone-analytics.mdx index 5de099936b..6ac3f79a77 100644 --- a/src/content/docs/analytics/account-and-zone-analytics/zone-analytics.mdx +++ b/src/content/docs/analytics/account-and-zone-analytics/zone-analytics.mdx @@ -4,11 +4,9 @@ source: https://support.cloudflare.com/hc/en-us/articles/360037684251-Understand title: Zone Analytics sidebar: order: 1 - --- -import { Badge, DashButton } from "~/components"; - +import { Badge, DashButton } from "~/components"; The Cloudflare zone analytics is a major component of the overall Cloudflare Analytics product line.  Specifically, this app gives you access to a wide range of metrics, collected at the website or domain level. @@ -20,24 +18,24 @@ You can also understand the characteristics of the data that Cloudflare captures and processes. ::: -*** +--- ## View your website analytics To view metrics for your website, in the Cloudflare dashboard, go to the **Analytis & Logs** page. - + -Once it loads, you can find tabs for **Traffic**, **Security**, **Performance**, **DNS**, **Workers**, and **Logs** (Enterprise domains only). To understand the various metrics available, refer to *Review your website metrics* below. +Once it loads, you can find tabs for **Traffic**, **Security**, **Performance**, **DNS**, **Workers**, and **Logs** (Enterprise domains only). To understand the various metrics available, refer to _Review your website metrics_ below. -*** +--- ## Review your website metrics This section outlines the metrics available under each Analytics app tab. Before proceeding, note that each tab may contain: -* One or more panels to further categorize the underlying metrics. -* A dropdown (on the panel's top right) to filter metrics for a specific time period. The time period you can select may vary based on the Cloudflare plan that your domain is associated with. +- One or more panels to further categorize the underlying metrics. +- A dropdown (on the panel's top right) to filter metrics for a specific time period. The time period you can select may vary based on the Cloudflare plan that your domain is associated with. Below is a summary of each Analytics app tab. @@ -47,8 +45,8 @@ Below is a summary of each Analytics app tab. These metrics include legitimate user requests as well as crawlers and threats. The HTTP Traffic tab features the following panels:  -* **Web Traffic** - Displays metrics for *Requests*, *Bandwidth*, and *Unique Visitors*. If you are using Cloudflare Workers, subrequests data will not be visible in zone Traffic Analytics. Instead, you can find subrequests analytics under the **Workers & Pages** tab in the **Overview** section. Refer to [Worker Analytics](/analytics/account-and-zone-analytics/analytics-with-workers/#worker-analytics) for more information. -* **Web Traffic Requests by Country** - Is an interactive map that breaks down the number of requests by country.  This panel also includes a data table for **Top Traffic Countries / Regions** that display the countries with the most number of requests (up to five, if the data exists). +- **Web Traffic** - Displays metrics for _Requests_, _Bandwidth_, and _Unique Visitors_. If you are using Cloudflare Workers, subrequests data will not be visible in zone Traffic Analytics. Instead, you can find subrequests analytics under the **Workers & Pages** tab in the **Overview** section. Refer to [Worker Analytics](/analytics/account-and-zone-analytics/analytics-with-workers/#worker-analytics) for more information. +- **Web Traffic Requests by Country** - Is an interactive map that breaks down the number of requests by country.  This panel also includes a data table for **Top Traffic Countries / Regions** that display the countries with the most number of requests (up to five, if the data exists). #### Pro, Business, or Enterprise plan @@ -60,40 +58,41 @@ and Enterprise plans. Analytics are based on Cloudflare's edge logs, with no need for third party scripts or trackers. The HTTP Traffic tab features the following metrics: -* **Requests** - An HTTP request. A typical page view requires many requests. If you are using Cloudflare Workers, subrequests data will not be visible in zone HTTP Traffic Analytics. Instead, you can find subrequests analytics under the **Workers & Pages** tab in the **Overview** section. Refer to [Worker Analytics](/analytics/account-and-zone-analytics/analytics-with-workers/#worker-analytics) for more information. -* **Data Transfer** - Total HTTP data transferred in responses. -* **Page views** - A page view is defined as a successful HTTP response with a content-type of HTML. -* **Visits** - A visit is defined as a [page view](#page-views) that originated from a different website, or direct link. Cloudflare checks where the HTTP referer does not match the hostname. One visit can consist of multiple page views. -* **API Requests** - An HTTP request for API data. +- **Requests** - An HTTP request. A typical page view requires many requests. If you are using Cloudflare Workers, subrequests data will not be visible in zone HTTP Traffic Analytics. Instead, you can find subrequests analytics under the **Workers & Pages** tab in the **Overview** section. Refer to [Worker Analytics](/analytics/account-and-zone-analytics/analytics-with-workers/#worker-analytics) for more information. +- **Data Transfer** - Total HTTP data transferred in responses. +- **Page views** - A page view is defined as a successful + HTTP response with a content-type of HTML. +- **Visits** - A visit is defined as a [page view](#page-views) that originated from a different website, or direct link. Cloudflare checks where the HTTP referer does not match the hostname. One visit can consist of multiple page views. +- **API Requests** - An HTTP request for API data. To receive more detailed metrics, **Add filter**. You can also filter each metric by: -* Cache status -* Data center -* Source ASN -* Country -* Source device type -* Source IP -* Referer host -* Host -* HTTP method -* HTTP version -* Path -* Query string -* Content type -* Edge status code -* Origin status code -* Security Action -* Security Source -* Source browser -* Source operating system -* Source user agent -* X-Requested-With header +- Cache status +- Data center +- Source ASN +- Country +- Source device type +- Source IP +- Referer host +- Host +- HTTP method +- HTTP version +- Path +- Query string +- Content type +- Edge status code +- Origin status code +- Security Action +- Security Source +- Source browser +- Source operating system +- Source user agent +- X-Requested-With header In addition, the following filters are available to Enterprise [Bot Management](/bots/get-started/bot-management/) customers only. -* Source JA4 fingerprint -* Source JA3 fingerprint +- Source JA4 fingerprint +- Source JA3 fingerprint To change the time period, use the dropdown menu on the right-hand side above the graph. You can also drag to zoom on the graph. @@ -101,17 +100,17 @@ To change the time period, use the dropdown menu on the right-hand side above th For this tab, the number and type of charts may vary based on existing data and customer plan. Most of the metrics in this tab come from the Cloudflare Firewall app. The panels available include: -* **Threats** - Displays a data summary and an area chart showing threats against the site. -* **Threats by Country** - Is an interactive map highlighting the countries where threats originated. It also includes data tables with statistics on **Top Threat Countries / Regions** and **Top Crawlers / Bots.** -* **Rate Limiting** (add-on service) - Features a line chart highlighting matching and blocked requests, based on rate limits.  To learn more, consult [Rate Limiting Analytics](/waf/reference/legacy/old-rate-limiting/#analytics). -* **Overview** - Displays a set of pie charts for: **Total Threats Stopped**, **Traffic Served Over SSL**, and **Types of Threats Mitigated**. If available, the expandable **Details** link display a table with numerical data. +- **Threats** - Displays a data summary and an area chart showing threats against the site. +- **Threats by Country** - Is an interactive map highlighting the countries where threats originated. It also includes data tables with statistics on **Top Threat Countries / Regions** and **Top Crawlers / Bots.** +- **Rate Limiting** (add-on service) - Features a line chart highlighting matching and blocked requests, based on rate limits.  To learn more, consult [Rate Limiting Analytics](/waf/reference/legacy/old-rate-limiting/#analytics). +- **Overview** - Displays a set of pie charts for: **Total Threats Stopped**, **Traffic Served Over SSL**, and **Types of Threats Mitigated**. If available, the expandable **Details** link display a table with numerical data. ### Performance The metrics aggregated under this tab span multiple Cloudflare services.  The panels available include: -* **Origin Performance (Argo)** (add-on service) - Displays metrics related to response time between the Cloudflare edge network and origin servers for the last 48 hours.  For additional details, refer to [Argo Analytics](/argo-smart-routing/analytics/). -* **Overview** - Displays a set of pie charts for: **Client HTTP Version Used**, **Bandwidth Saved**, and **Content Type Breakdown**. If available, the expandable **Details** link display a table with numerical data. +- **Origin Performance (Argo)** (add-on service) - Displays metrics related to response time between the Cloudflare edge network and origin servers for the last 48 hours.  For additional details, refer to [Argo Analytics](/argo-smart-routing/analytics/). +- **Overview** - Displays a set of pie charts for: **Client HTTP Version Used**, **Bandwidth Saved**, and **Content Type Breakdown**. If available, the expandable **Details** link display a table with numerical data. ### Workers diff --git a/src/content/docs/dns/dns-firewall/analytics.mdx b/src/content/docs/dns/dns-firewall/analytics.mdx index 2c4b4acd64..993f3b5b1e 100644 --- a/src/content/docs/dns/dns-firewall/analytics.mdx +++ b/src/content/docs/dns/dns-firewall/analytics.mdx @@ -3,7 +3,6 @@ pcx_content_type: navigation title: Analytics and logs sidebar: order: 3 - --- import { Badge, FeatureTable, Details, DashButton } from "~/components"; @@ -22,11 +21,9 @@ The historical data available covers 62 days and the maximum time interval you c For a quick summary, view your DNS Firewall analytics on the dashboard. The DNS analytics dashboard contains [four main panels](#panels). The filters and time frame that you specify at the top of the page apply to all of them. -1. In the Cloudflare dashboard, go to the **DNS Firewall** page. +In the Cloudflare dashboard, go to the **DNS Firewall Analytics** page. - - -2. Go to **Analytics**. + #### Available dimensions @@ -52,9 +49,16 @@ The filters and time frame that you specify at the top of the page apply to all - **Query statistics**: an overview of query metrics. Namely, **Total queries**, **Cached queries**, **Uncached queries**, and **Stale cache queries**. -
Processing time refers to the total time taken to handle a query within DNS Firewall, meaning cached queries served directly from Cloudflare's servers. For uncached queries, the metric used is response time, which considers the time to get the answers from your upstream nameservers. The processing and response times are displayed in milliseconds.
+
+ {" "} + Processing time refers to the total time taken to handle a query within DNS + Firewall, meaning cached queries served directly from Cloudflare's servers. + For uncached queries, the metric used is response time, which considers the + time to get the answers from your upstream nameservers. The processing and + response times are displayed in milliseconds. +
-
Aside from the average for both processing and response times, `p90` values show you the maximum time that 90% of queries took to resolve. For example, if the p90 is 1 millisecond, it means 90% of the queries were resolved in 1 millisecond or less.
+
Aside from the average for both processing and response times, `p90` values show you the maximum time that 90% of queries took to resolve. For example, if the p90 is 1 millisecond, it means 90% of the queries were resolved in 1 millisecond or less.
- **DNS queries by data center**: a map indicating which Cloudflare data centers have handled DNS queries to your account. You can also find a list of the top ten results and quickly filter for or exclude a certain data center from the results by hovering over it and selecting **Filter** or **Exclude**. @@ -66,8 +70,8 @@ Use the [GraphQL API](/analytics/graphql-api/) to access DNS Firewall analytics. The DNS Firewall analytics has two [schemas](/analytics/graphql-api/getting-started/querying-basics/): -* `dnsFirewallAnalyticsAdaptive`: Retrieve information about individual DNS Firewall queries. -* `dnsFirewallAnalyticsAdaptiveGroups`: Get reports on aggregate information only. +- `dnsFirewallAnalyticsAdaptive`: Retrieve information about individual DNS Firewall queries. +- `dnsFirewallAnalyticsAdaptiveGroups`: Get reports on aggregate information only. ### API @@ -98,4 +102,5 @@ The following table provides a description for each of the values that might be | `unknown` | There was an unknown error. | [^1]: the total time taken to handle a query within DNS Firewall. -[^2]: the time it takes when an answer is not cached and Cloudflare has to get the answer from your upstream nameservers. \ No newline at end of file + +[^2]: the time it takes when an answer is not cached and Cloudflare has to get the answer from your upstream nameservers. diff --git a/src/content/docs/dns/dns-firewall/setup.mdx b/src/content/docs/dns/dns-firewall/setup.mdx index 48ebc01c4b..f2dd2d74ce 100644 --- a/src/content/docs/dns/dns-firewall/setup.mdx +++ b/src/content/docs/dns/dns-firewall/setup.mdx @@ -26,19 +26,18 @@ Prior to setting up DNS Firewall, you need: -1. In the Cloudflare dashboard, go to the **DNS Firewall** page. +1. In the Cloudflare dashboard, go to the **DNS Firewall Clusters** page. - + -2. Go to **Clusters**. -3. Select **Add Firewall Cluster**. -4. Fill out the required fields, including: +2. Select **Add Firewall Cluster**. +3. Fill out the required fields, including: - **IP Addresses**: The upstream IPv4 and/or IPv6 addresses of your authoritative nameservers. - **Minimum Cache TTL**: Recommended setting of **30 seconds**. - **Maximum Cache TTL**: Recommended setting of **4 hours**. Larger values increase the cache hit ratio, but also increase the time required for DNS changes to propagate. - **ANY queries**: Recommended setting is **Off** because these are often used as part of DDoS attacks. Also refer to this [blog post](https://blog.cloudflare.com/rfc8482-saying-goodbye-to-any/). -5. Click **Continue**. -6. On the following screen, save the values for **Your new DNS Firewall IP Addresses**. +4. Click **Continue**. +5. On the following screen, save the values for **Your new DNS Firewall IP Addresses**. :::note[Note:] diff --git a/src/content/docs/fundamentals/manage-members/dashboard-sso.mdx b/src/content/docs/fundamentals/manage-members/dashboard-sso.mdx index 9ed4181412..ab01a31f67 100644 --- a/src/content/docs/fundamentals/manage-members/dashboard-sso.mdx +++ b/src/content/docs/fundamentals/manage-members/dashboard-sso.mdx @@ -49,7 +49,7 @@ You must create an [Account API token](/fundamentals/api/get-started/create-toke 1. Once you have configured an IdP in Cloudflare One, go to the **Members** page to manage SSO connectors. - + 2. If step 1 was successful, a button to add a new SSO domain will be present. Select the button to begin the process of adding a new SSO domain. @@ -285,11 +285,12 @@ Before disabling SSO, make sure you have access to your Cloudflare user email. T 1. Navigate to the **Members** page. - + -2. Select the actions menu for the SSO connector in the list and select **Disable**. +2. Go to **Settings**. +3. Select the actions menu for the SSO connector in the list and select **Disable**. -3. Type the domain of the connector and click confirm to complete the disable action. +4. Type the domain of the connector and click confirm to complete the disable action. @@ -361,10 +362,11 @@ Cloudflare does not allow you to change your t 1. Navigate to the **Members** page. - + -2. Disable all SSO connectors. -3. Delete all SSO connectors. +2. Go to **Settings**. +3. Disable all SSO connectors. +4. Delete all SSO connectors. diff --git a/src/content/docs/images/get-started.mdx b/src/content/docs/images/get-started.mdx index f5ab074576..bafca6ecb0 100644 --- a/src/content/docs/images/get-started.mdx +++ b/src/content/docs/images/get-started.mdx @@ -3,8 +3,8 @@ pcx_content_type: get-started title: Getting started sidebar: order: 2 - --- + import { DashButton } from "~/components"; In this guide, you will get started with Cloudflare Images and make your first API request. @@ -33,25 +33,21 @@ Cloudflare will automatically cache every transformed image on our global networ To enable transformations on your zone: -1. In the Cloudflare dashboard, go to the **Transformations** page. +1. In the Cloudflare dashboard, go to the **Transformations** page. - + 2. Go to the specific zone where you want to enable transformations. 3. Select **Enable for zone**. This will allow you to optimize and deliver remote images. :::note - With **Resize images from any origin** unchecked, only the initial URL passed will be checked. Any redirect returned will be followed, including if it leaves the zone, and the resulting image will be transformed. - ::: :::note - If you are using transformations in a Worker, you need to include the appropriate logic in your Worker code to prevent resizing images from any origin. Unchecking this option in the dash does not apply to transformation requests coming from Cloudflare Workers. - ::: diff --git a/src/content/docs/images/manage-images/blur-variants.mdx b/src/content/docs/images/manage-images/blur-variants.mdx index c3acbffa2f..1a26cf89df 100644 --- a/src/content/docs/images/manage-images/blur-variants.mdx +++ b/src/content/docs/images/manage-images/blur-variants.mdx @@ -3,8 +3,8 @@ pcx_content_type: how-to title: Apply blur sidebar: order: 12 - --- + import { DashButton } from "~/components"; You can apply blur to image variants by creating a specific variant for this effect first or by editing a previously created variant. Note that you cannot blur an SVG file. @@ -13,12 +13,13 @@ Refer to [Resize images](/images/manage-images/create-variants/) for help creati To blur an image: -1. In the Cloudflare dashboard, got to the **Variants** page. +1. In the Cloudflare dashboard, got to the **Hosted Images** page. - + -2. Find the variant you want to blur and select **Edit** > **Customization Options**. -3. Use the slider to adjust the blurring effect. You can use the preview image to see how strong the blurring effect will be. -4. Select **Save**. +2. Select the **Delivery** tab. +3. Find the variant you want to blur and select **Edit** > **Customization Options**. +4. Use the slider to adjust the blurring effect. You can use the preview image to see how strong the blurring effect will be. +5. Select **Save**. The image should now display the blurred effect. diff --git a/src/content/docs/images/manage-images/create-variants.mdx b/src/content/docs/images/manage-images/create-variants.mdx index 176e7b06d7..49e776d98b 100644 --- a/src/content/docs/images/manage-images/create-variants.mdx +++ b/src/content/docs/images/manage-images/create-variants.mdx @@ -3,8 +3,8 @@ pcx_content_type: how-to title: Create variants sidebar: order: 10 - --- + import { DashButton } from "~/components"; Variants let you specify how images should be resized for different use cases. By default, images are served with a `public` variant, but you can create up to 100 variants to fit your needs. Follow these steps to create a variant. @@ -15,13 +15,14 @@ Cloudflare Images can deliver SVG files but will not resize them because it is a Resize via the Cloudflare dashboard. ::: -1. In the Cloudflare dashboard, go to the **Images > Variants** page. +1. In the Cloudflare dashboard, got to the **Hosted Images** page. - + -2. Select **Create variant**. -2. Name your variant and select **Create**. -3. Define variables for your new variant, such as resizing options, type of fit, and specific metadata options. +2. Select the **Delivery** tab. +3. Select **Create variant**. +4. Name your variant and select **Create**. +5. Define variables for your new variant, such as resizing options, type of fit, and specific metadata options. ## Resize via the API @@ -50,9 +51,9 @@ The `Fit` property describes how the width and height dimensions should be inter Variants allow you to choose what to do with your image’s metadata information. From the **Metadata** dropdown, choose: -* Strip all metadata -* Strip all metadata except copyright -* Keep all metadata +- Strip all metadata +- Strip all metadata except copyright +- Keep all metadata ## Public access diff --git a/src/content/docs/images/manage-images/delete-images.mdx b/src/content/docs/images/manage-images/delete-images.mdx index 835bc7870e..798dc624a4 100644 --- a/src/content/docs/images/manage-images/delete-images.mdx +++ b/src/content/docs/images/manage-images/delete-images.mdx @@ -3,17 +3,17 @@ pcx_content_type: how-to title: Delete images sidebar: order: 17 - --- + import { DashButton } from "~/components"; You can delete an image from the Cloudflare Images storage using the dashboard or the API. ## Delete images via the Cloudflare dashboard -1. In the Cloudflare dashboard, go to **Images** page. +1. In the Cloudflare dashboard, go to **Transformations** page. - + 2. Find the image you want to remove and select **Delete**. 3. (Optional) To delete more than one image, select the checkbox next to the images you want to delete and then **Delete selected**. diff --git a/src/content/docs/images/manage-images/delete-variants.mdx b/src/content/docs/images/manage-images/delete-variants.mdx index 8abd6244d3..dad2bafbf5 100644 --- a/src/content/docs/images/manage-images/delete-variants.mdx +++ b/src/content/docs/images/manage-images/delete-variants.mdx @@ -3,27 +3,27 @@ pcx_content_type: how-to title: Delete variants sidebar: order: 13 - --- + import { DashButton } from "~/components"; You can delete variants via the Images dashboard or API. The only variant you cannot delete is public. :::caution - Deleting a variant is a global action that will affect other images that contain that variant. - ::: ## Delete variants via the Cloudflare dashboard -1. In the Cloudflare dashboard, go to the **Variants** page. +1. In the Cloudflare dashboard, got to the **Hosted Images** page. - + -2. Find the variant you want to remove and select **Delete**. +2. Select the **Delivery** tab. + +3. Find the variant you want to remove and select **Delete**. ## Delete variants via the API diff --git a/src/content/docs/images/manage-images/edit-images.mdx b/src/content/docs/images/manage-images/edit-images.mdx index 34aa7e8da6..a6c9802644 100644 --- a/src/content/docs/images/manage-images/edit-images.mdx +++ b/src/content/docs/images/manage-images/edit-images.mdx @@ -3,20 +3,20 @@ pcx_content_type: how-to title: Edit images sidebar: order: 14 - --- + import { DashButton } from "~/components"; The Edit option provides you available options to modify a specific image. After choosing to edit an image, you can: -* Require signed URLs to use with that particular image. -* Use a cURL command you can use as an example to access the image. -* Use fully-formed URLs for all the variants configured in your account. +- Require signed URLs to use with that particular image. +- Use a cURL command you can use as an example to access the image. +- Use fully-formed URLs for all the variants configured in your account. To edit an image: -1. In the Cloudflare dashboard, go to the **Images** page. +1. In the Cloudflare dashboard, go to the **Transformations** page. - + 2. Locate the image you want to modify and select **Edit**. diff --git a/src/content/docs/images/manage-images/enable-flexible-variants.mdx b/src/content/docs/images/manage-images/enable-flexible-variants.mdx index 6e4daf547a..821e8c274b 100644 --- a/src/content/docs/images/manage-images/enable-flexible-variants.mdx +++ b/src/content/docs/images/manage-images/enable-flexible-variants.mdx @@ -3,19 +3,21 @@ pcx_content_type: how-to title: Enable flexible variants sidebar: order: 11 - --- + import { DashButton } from "~/components"; Flexible variants allow you to create variants with dynamic resizing which can provide more options than regular variants allow. This option is not enabled by default. ## Enable flexible variants via the Cloudflare dashboard -1. In the Cloudflare dashboard, go to the **Variants** page. +1. In the Cloudflare dashboard, got to the **Hosted Images** page. - + -2. Enable **Flexible variants**. +2. Select the **Delivery** tab. + +3. Enable **Flexible variants**. ## Enable flexible variants via the API diff --git a/src/content/docs/images/manage-images/export-images.mdx b/src/content/docs/images/manage-images/export-images.mdx index 61193ca755..cdf6de1b14 100644 --- a/src/content/docs/images/manage-images/export-images.mdx +++ b/src/content/docs/images/manage-images/export-images.mdx @@ -3,17 +3,17 @@ pcx_content_type: how-to title: Export images sidebar: order: 16 - --- + import { DashButton } from "~/components"; Cloudflare Images supports image exports via the Cloudflare dashboard and API which allows you to get the original version of your image. ## Export images via the Cloudflare dashboard -1. In the Cloudflare dashboard, go to the **Images** page. +1. In the Cloudflare dashboard, go to the **Transformations** page. - + 2. Find the image or images you want to export. 3. To export a single image, select **Export** from its menu. To export several images, select the checkbox next to each image and then select **Export selected**. diff --git a/src/content/docs/images/manage-images/serve-images/serve-private-images.mdx b/src/content/docs/images/manage-images/serve-images/serve-private-images.mdx index e61cefc53b..4ab52fbb43 100644 --- a/src/content/docs/images/manage-images/serve-images/serve-private-images.mdx +++ b/src/content/docs/images/manage-images/serve-images/serve-private-images.mdx @@ -5,15 +5,16 @@ sidebar: order: 23 --- -import { TypeScriptExample,DashButton } from "~/components"; +import { TypeScriptExample, DashButton } from "~/components"; You can serve private images by using signed URL tokens. When an image requires a signed URL, the image cannot be accessed without a token unless it is being requested for a variant set to always allow public access. -1. In the Cloudflare dashboard, go to the **Keys** page. +1. In the Cloudflare dashboard, go to the **Hosted Images** page. - + -2. Copy your key and use it to generate an expiring tokenized URL. +2. Select **Keys**. +3. Copy your key and use it to generate an expiring tokenized URL. :::note @@ -26,54 +27,62 @@ The example below uses a Worker that takes in a regular URL without a signed tok ```ts -const KEY = 'YOUR_KEY_FROM_IMAGES_DASHBOARD'; +const KEY = "YOUR_KEY_FROM_IMAGES_DASHBOARD"; const EXPIRATION = 60 * 60 * 24; // 1 day -const bufferToHex = buffer => - [...new Uint8Array(buffer)].map(x => x.toString(16).padStart(2, '0')).join(''); +const bufferToHex = (buffer) => + [...new Uint8Array(buffer)] + .map((x) => x.toString(16).padStart(2, "0")) + .join(""); async function generateSignedUrl(url) { - // `url` is a full imagedelivery.net URL - // e.g. https://imagedelivery.net/cheeW4oKsx5ljh8e8BoL2A/bc27a117-9509-446b-8c69-c81bfeac0a01/mobile + // `url` is a full imagedelivery.net URL + // e.g. https://imagedelivery.net/cheeW4oKsx5ljh8e8BoL2A/bc27a117-9509-446b-8c69-c81bfeac0a01/mobile - const encoder = new TextEncoder(); - const secretKeyData = encoder.encode(KEY); - const key = await crypto.subtle.importKey( - 'raw', - secretKeyData, - { name: 'HMAC', hash: 'SHA-256' }, - false, - ['sign'] - ); + const encoder = new TextEncoder(); + const secretKeyData = encoder.encode(KEY); + const key = await crypto.subtle.importKey( + "raw", + secretKeyData, + { name: "HMAC", hash: "SHA-256" }, + false, + ["sign"], + ); - // Attach the expiration value to the `url` - const expiry = Math.floor(Date.now() / 1000) + EXPIRATION; - url.searchParams.set('exp', expiry); - // `url` now looks like - // https://imagedelivery.net/cheeW4oKsx5ljh8e8BoL2A/bc27a117-9509-446b-8c69-c81bfeac0a01/mobile?exp=1631289275 + // Attach the expiration value to the `url` + const expiry = Math.floor(Date.now() / 1000) + EXPIRATION; + url.searchParams.set("exp", expiry); + // `url` now looks like + // https://imagedelivery.net/cheeW4oKsx5ljh8e8BoL2A/bc27a117-9509-446b-8c69-c81bfeac0a01/mobile?exp=1631289275 - const stringToSign = url.pathname + '?' + url.searchParams.toString(); - // for example, /cheeW4oKsx5ljh8e8BoL2A/bc27a117-9509-446b-8c69-c81bfeac0a01/mobile?exp=1631289275 + const stringToSign = url.pathname + "?" + url.searchParams.toString(); + // for example, /cheeW4oKsx5ljh8e8BoL2A/bc27a117-9509-446b-8c69-c81bfeac0a01/mobile?exp=1631289275 - // Generate the signature - const mac = await crypto.subtle.sign('HMAC', key, encoder.encode(stringToSign)); - const sig = bufferToHex(new Uint8Array(mac).buffer); + // Generate the signature + const mac = await crypto.subtle.sign( + "HMAC", + key, + encoder.encode(stringToSign), + ); + const sig = bufferToHex(new Uint8Array(mac).buffer); - // And attach it to the `url` - url.searchParams.set('sig', sig); + // And attach it to the `url` + url.searchParams.set("sig", sig); - return new Response(url); + return new Response(url); } export default { - async fetch(request, env, ctx): Promise { - const url = new URL(event.request.url); - const imageDeliveryURL = new URL( - url.pathname.slice(1).replace('https:/imagedelivery.net', 'https://imagedelivery.net') - ); - return generateSignedUrl(imageDeliveryURL); - }, + async fetch(request, env, ctx): Promise { + const url = new URL(event.request.url); + const imageDeliveryURL = new URL( + url.pathname + .slice(1) + .replace("https:/imagedelivery.net", "https://imagedelivery.net"), + ); + return generateSignedUrl(imageDeliveryURL); + }, } satisfies ExportedHandler; ``` - \ No newline at end of file + diff --git a/src/content/docs/images/upload-images/sourcing-kit/edit.mdx b/src/content/docs/images/upload-images/sourcing-kit/edit.mdx index 5e88c0f794..8642c328f0 100644 --- a/src/content/docs/images/upload-images/sourcing-kit/edit.mdx +++ b/src/content/docs/images/upload-images/sourcing-kit/edit.mdx @@ -3,8 +3,8 @@ pcx_content_type: how-to title: Edit sources sidebar: order: 2 - --- + import { DashButton } from "~/components"; The Sourcing Kit main page has a list of all the import jobs and sources you have defined. This is where you can edit details for your sources or abort running import jobs. @@ -13,21 +13,24 @@ The Sourcing Kit main page has a list of all the import jobs and sources you hav You can learn more about your sources by selecting the **Sources** tab on the Sourcing Kit dashboard. Use this option to rename or delete your sources. -1. In the Cloudflare dashboard, go to the **Sourcing Kit** page. +1. In the Cloudflare dashboard, go to the **Hosted Images** page. - + -2. Select **Sources** and choose the source you want to change. -3. In this page you have the option to rename or delete your source. Select **Rename source** or **Delete source** depending on what you want to do. +2. Select **Sourcing Kit**. +3. Select **Sources** and choose the source you want to change. +4. In this page you have the option to rename or delete your source. Select **Rename source** or **Delete source** depending on what you want to do. ## Abort import jobs While Cloudflare Images is still running a job to import images into your account, you can abort it before it finishes. -1. In the Cloudflare dashboard, go to the **Sourcing Kit** page. +1. In the Cloudflare dashboard, go to the **Hosted Images** page. - + -2. In **Imports** select the import job you want to abort. -3. The next page shows you a summary of the import. Select **Abort**. -4. Confirm that you want to abort your import job by selecting **Abort** on the dialog box. +2. Select **Sourcing Kit**. + +3. In **Imports** select the import job you want to abort. +4. The next page shows you a summary of the import. Select **Abort**. +5. Confirm that you want to abort your import job by selecting **Abort** on the dialog box. diff --git a/src/content/docs/images/upload-images/sourcing-kit/enable.mdx b/src/content/docs/images/upload-images/sourcing-kit/enable.mdx index a74f0cdf26..fda0a6e286 100644 --- a/src/content/docs/images/upload-images/sourcing-kit/enable.mdx +++ b/src/content/docs/images/upload-images/sourcing-kit/enable.mdx @@ -3,27 +3,28 @@ pcx_content_type: how-to title: Enable Sourcing Kit sidebar: order: 1 - --- + import { DashButton } from "~/components"; Enabling Sourcing Kit will set it up with the necessary information to start importing images from your Amazon S3 account. ## Create your first import job -1. In the Cloudflare dashboard, go to the **Sourcing Kit** page. +1. In the Cloudflare dashboard, go to the **Hosted Images** page. - + -2. Select **Import images** to create an import job. -3. In **Source name** give your source an appropriate name. -4. In **Amazon S3 bucket information** enter the S3's bucket name where your images are stored. -5. In **Required credentials**, enter your Amazon S3 credentials. This is required to connect Cloudflare Images to your source and import your images. Refer to [Credentials](/images/upload-images/sourcing-kit/credentials/) to learn more about how to set up credentials. -6. Select **Next**. -7. In **Basic rules** define the Amazon S3 path to import your images from, and the path you want to copy your images to in your Cloudflare Images account. This is optional, and you can leave these fields blank. -8. On the same page, in **Overwrite images**, you need to choose what happens when the files in your source change. The recommended action is to copy the new images and overwrite the old ones on your Cloudflare Images account. You can also choose to skip the import, and keep what you already have on your Cloudflare Images account. -9. Select **Next**. -10. Review and confirm the information regarding the import job you created. Select **Import images** to start importing images from your source. +2. Select **Sourcing Kit**. +3. Select **Import images** to create an import job. +4. In **Source name** give your source an appropriate name. +5. In **Amazon S3 bucket information** enter the S3's bucket name where your images are stored. +6. In **Required credentials**, enter your Amazon S3 credentials. This is required to connect Cloudflare Images to your source and import your images. Refer to [Credentials](/images/upload-images/sourcing-kit/credentials/) to learn more about how to set up credentials. +7. Select **Next**. +8. In **Basic rules** define the Amazon S3 path to import your images from, and the path you want to copy your images to in your Cloudflare Images account. This is optional, and you can leave these fields blank. +9. On the same page, in **Overwrite images**, you need to choose what happens when the files in your source change. The recommended action is to copy the new images and overwrite the old ones on your Cloudflare Images account. You can also choose to skip the import, and keep what you already have on your Cloudflare Images account. +10. Select **Next**. +11. Review and confirm the information regarding the import job you created. Select **Import images** to start importing images from your source. Your import job is now created. You can review the job status on the Sourcing Kit main page. It will show you information such as how many objects it found, how many images were imported, and any errors that might have occurred. @@ -34,11 +35,13 @@ Sourcing Kit will warn you when you are about to reach the limit for your plan s ## Define a new source -1. In the Cloudflare dashboard, go to the **Source Kit** page. +1. In the Cloudflare dashboard, go to the **Hosted Images** page. - + -2. Select **Import images** > **Define a new source**. +2. Select **Sourcing Kit**. + +3. Select **Import images** > **Define a new source**. Repeat steps 4-11 in [Create your first import job](#create-your-first-import-job) to finish setting up your new source. @@ -46,12 +49,14 @@ Repeat steps 4-11 in [Create your first import job](#create-your-first-import-jo You can have many import jobs from the same or different sources. If you select an existing source to create a new import job, you will not need to enter your credentials again. -1. In the Cloudflare dashboard, go to the **Sourcing Kit** page. +1. In the Cloudflare dashboard, go to the **Hosted Images** page. - + -2. Select **Import images**. -3. Choose from one of the sources already configured. +2. Select **Sourcing Kit**. + +3. Select **Import images**. +4. Choose from one of the sources already configured. Repeat steps 8-11 in [Create your first import job](#create-your-first-import-job) to finish setting up your new import job. diff --git a/src/content/docs/images/upload-images/upload-dashboard.mdx b/src/content/docs/images/upload-images/upload-dashboard.mdx index 0df0303057..fc719c9e4a 100644 --- a/src/content/docs/images/upload-images/upload-dashboard.mdx +++ b/src/content/docs/images/upload-images/upload-dashboard.mdx @@ -3,17 +3,17 @@ pcx_content_type: how-to title: Upload via dashboard sidebar: order: 2 - --- + import { DashButton } from "~/components"; Before you upload an image, check the list of [supported formats and dimensions](/images/upload-images/#supported-image-formats) to confirm your image will be accepted. To upload an image from the Cloudflare dashboard: -1. In the Cloudflare dashboard, go to the **Images** page. +1. In the Cloudflare dashboard, go to the **Transformations** page. - + 2. Drag and drop your image into the **Quick Upload** section. Alternatively, you can select **Drop images here** or browse to select your image locally. 3. After the upload finishes, your image appears in the list of files. diff --git a/src/content/docs/pipelines/getting-started.mdx b/src/content/docs/pipelines/getting-started.mdx index 63e5039645..ef61452e04 100644 --- a/src/content/docs/pipelines/getting-started.mdx +++ b/src/content/docs/pipelines/getting-started.mdx @@ -36,15 +36,15 @@ This guide will instruct you through: 1. If not already logged in, run: - ``` - npx wrangler login - ``` + ``` + npx wrangler login + ``` 2. Create an R2 bucket: - ``` - npx wrangler r2 bucket create pipelines-tutorial - ``` + ``` + npx wrangler r2 bucket create pipelines-tutorial + ``` @@ -60,8 +60,9 @@ This guide will instruct you through: 3. Enter the bucket name: pipelines-tutorial 4. Select **Create bucket**. + - + ## 2. Enable R2 Data Catalog @@ -89,8 +90,9 @@ When you run this command, take note of the "Warehouse" and "Catalog URI". You w 3. Switch to the **Settings** tab, scroll down to **R2 Data Catalog**, and select **Enable**. 4. Once enabled, note the **Catalog URI** and **Warehouse name**. + - + ## 3. Create an API token @@ -127,30 +129,31 @@ This token also includes the R2 SQL Read permission, which allows you to query y First, create a schema file that defines your ecommerce data structure: **Create `schema.json`:** + ```json { - "fields": [ - { - "name": "user_id", - "type": "string", - "required": true - }, - { - "name": "event_type", - "type": "string", - "required": true - }, - { - "name": "product_id", - "type": "string", - "required": false - }, - { - "name": "amount", - "type": "float64", - "required": false - } - ] + "fields": [ + { + "name": "user_id", + "type": "string", + "required": true + }, + { + "name": "event_type", + "type": "string", + "required": true + }, + { + "name": "product_id", + "type": "string", + "required": false + }, + { + "name": "amount", + "type": "float64", + "required": false + } + ] } ``` @@ -193,7 +196,7 @@ After setup completes, note the HTTP endpoint URL displayed in the final output. 1. In the Cloudflare dashboard, go to **Pipelines** > **Pipelines**. - + 2. Select **Create Pipeline**. @@ -208,28 +211,28 @@ After setup completes, note the HTTP endpoint URL displayed in the final output. - Copy in the schema: ```json { - "fields": [ - { - "name": "user_id", - "type": "string", - "required": true - }, - { - "name": "event_type", - "type": "string", - "required": true - }, - { - "name": "product_id", - "type": "string", - "required": false - }, - { - "name": "amount", - "type": "f64", - "required": false - } - ] + "fields": [ + { + "name": "user_id", + "type": "string", + "required": true + }, + { + "name": "event_type", + "type": "string", + "required": true + }, + { + "name": "product_id", + "type": "string", + "required": false + }, + { + "name": "amount", + "type": "f64", + "required": false + } + ] } ``` - Select **Next** @@ -255,6 +258,7 @@ After setup completes, note the HTTP endpoint URL displayed in the final output. - Select **Create Pipeline** 8. After pipeline creation, note the **Stream ID** for the next step. + @@ -300,6 +304,7 @@ Replace `{stream-id}` with your actual stream endpoint from the pipeline setup. 3. You should see Iceberg metadata files and data files created by your pipeline. Note: If you aren't seeing any files in your bucket, try waiting a couple of minutes and trying again. 4. The data is organized in the Apache Iceberg format with metadata tracking table versions. + ## 7. Query your data using R2 SQL diff --git a/src/content/docs/pipelines/pipelines/manage-pipelines.mdx b/src/content/docs/pipelines/pipelines/manage-pipelines.mdx index 50d42ac3d1..a27f56745e 100644 --- a/src/content/docs/pipelines/pipelines/manage-pipelines.mdx +++ b/src/content/docs/pipelines/pipelines/manage-pipelines.mdx @@ -23,7 +23,7 @@ Pipelines execute SQL statements that define how data flows from streams to sink 1. In the Cloudflare dashboard, go to the **Pipelines** page. - + 2. Select **Create Pipeline** to launch the pipeline creation wizard. 3. Follow the wizard to configure your stream, sink, and SQL transformation. diff --git a/src/content/docs/pipelines/sinks/manage-sinks.mdx b/src/content/docs/pipelines/sinks/manage-sinks.mdx index ae503d38df..c2c1a41920 100644 --- a/src/content/docs/pipelines/sinks/manage-sinks.mdx +++ b/src/content/docs/pipelines/sinks/manage-sinks.mdx @@ -23,7 +23,7 @@ Sinks are made available to pipelines as SQL tables using the sink name (e.g., ` 1. In the Cloudflare dashboard, go to the **Pipelines** page. - + 2. Select **Create Pipeline** to launch the pipeline creation wizard. 3. Complete the wizard to create your sink along with the associated stream and pipeline. diff --git a/src/content/docs/pipelines/streams/manage-streams.mdx b/src/content/docs/pipelines/streams/manage-streams.mdx index 87968fddd0..0c7fff2d44 100644 --- a/src/content/docs/pipelines/streams/manage-streams.mdx +++ b/src/content/docs/pipelines/streams/manage-streams.mdx @@ -23,7 +23,7 @@ Streams are made available to pipelines as SQL tables using the stream name (e.g 1. In the Cloudflare dashboard, go to the **Pipelines** page. - + 2. Select **Create Pipeline** to launch the pipeline creation wizard. 3. Complete the wizard to create your stream along with the associated sink and pipeline. diff --git a/src/content/docs/r2-sql/get-started.mdx b/src/content/docs/r2-sql/get-started.mdx index ce957c85c4..b0f809a79d 100644 --- a/src/content/docs/r2-sql/get-started.mdx +++ b/src/content/docs/r2-sql/get-started.mdx @@ -36,15 +36,15 @@ This guide will instruct you through: 1. If not already logged in, run: - ``` - npx wrangler login - ``` + ``` + npx wrangler login + ``` 2. Create an R2 bucket: - ``` - npx wrangler r2 bucket create pipelines-tutorial - ``` + ``` + npx wrangler r2 bucket create pipelines-tutorial + ``` @@ -60,8 +60,9 @@ This guide will instruct you through: 3. Enter the bucket name: pipelines-tutorial 4. Select **Create bucket**. + - + ## 2. Enable R2 Data Catalog @@ -89,8 +90,9 @@ When you run this command, take note of the "Warehouse" and "Catalog URI". You w 3. Switch to the **Settings** tab, scroll down to **R2 Data Catalog**, and select **Enable**. 4. Once enabled, note the **Catalog URI** and **Warehouse name**. + - + ## 3. Create an API token @@ -127,30 +129,31 @@ This token also includes the R2 SQL Read permission, which allows you to query y First, create a schema file that defines your ecommerce data structure: **Create `schema.json`:** + ```json { - "fields": [ - { - "name": "user_id", - "type": "string", - "required": true - }, - { - "name": "event_type", - "type": "string", - "required": true - }, - { - "name": "product_id", - "type": "string", - "required": false - }, - { - "name": "amount", - "type": "float64", - "required": false - } - ] + "fields": [ + { + "name": "user_id", + "type": "string", + "required": true + }, + { + "name": "event_type", + "type": "string", + "required": true + }, + { + "name": "product_id", + "type": "string", + "required": false + }, + { + "name": "amount", + "type": "float64", + "required": false + } + ] } ``` @@ -193,7 +196,7 @@ After setup completes, note the HTTP endpoint URL displayed in the final output. 1. In the Cloudflare dashboard, go to **Pipelines** > **Pipelines**. - + 2. Select **Create Pipeline**. @@ -208,28 +211,28 @@ After setup completes, note the HTTP endpoint URL displayed in the final output. - Copy in the schema: ```json { - "fields": [ - { - "name": "user_id", - "type": "string", - "required": true - }, - { - "name": "event_type", - "type": "string", - "required": true - }, - { - "name": "product_id", - "type": "string", - "required": false - }, - { - "name": "amount", - "type": "f64", - "required": false - } - ] + "fields": [ + { + "name": "user_id", + "type": "string", + "required": true + }, + { + "name": "event_type", + "type": "string", + "required": true + }, + { + "name": "product_id", + "type": "string", + "required": false + }, + { + "name": "amount", + "type": "f64", + "required": false + } + ] } ``` - Select **Next** @@ -255,6 +258,7 @@ After setup completes, note the HTTP endpoint URL displayed in the final output. - Select **Create Pipeline** 8. After pipeline creation, note the **Stream ID** for the next step. + @@ -300,6 +304,7 @@ Replace `{stream-id}` with your actual stream endpoint from the pipeline setup. 3. You should see Iceberg metadata files and data files created by your pipeline. Note: If you aren't seeing any files in your bucket, try waiting a couple of minutes and trying again. 4. The data is organized in the Apache Iceberg format with metadata tracking table versions. + ## 7. Query your data using R2 SQL @@ -337,6 +342,7 @@ Replace `YOUR_WAREHOUSE_NAME` with the warehouse name from step 2. You can also query this table with any engine that supports Apache Iceberg. To learn more about connecting other engines to R2 Data Catalog, refer to [Connect to Iceberg engines](/r2/data-catalog/config-examples/). ## Learn more + :::note -Copy the `warehouse` (ACCOUNTID_BUCKETNAME) and paste it in the `export` below. We will use it later in the tutorial. +Copy the `warehouse` (ACCOUNTID_BUCKETNAME) and paste it in the `export` below. We will use it later in the tutorial. ::: ```bash @@ -285,7 +285,7 @@ npx wrangler pipelines create raw_events_pipeline \ 1. In the Cloudflare dashboard, go to **Pipelines** > **Pipelines**. - + 2. Select **Create Pipeline**. diff --git a/src/content/docs/stream/edit-videos/video-clipping.mdx b/src/content/docs/stream/edit-videos/video-clipping.mdx index af01951a94..4dfe973a6b 100644 --- a/src/content/docs/stream/edit-videos/video-clipping.mdx +++ b/src/content/docs/stream/edit-videos/video-clipping.mdx @@ -1,8 +1,8 @@ --- pcx_content_type: how-to title: Clip videos - --- + import { DashButton } from "~/components"; With video clipping, also referred to as "trimming" or changing the length of the video, you can change the start and end points of a video so viewers only see a specific "clip" of the video. For example, if you have a 20 minute video but only want to share a five minute clip from the middle of the video, you can clip the video to remove the content before and after the five minute clip. @@ -11,10 +11,8 @@ Refer to the [Video clipping API documentation](/api/resources/stream/subresourc :::note[Note:] - Clipping works differently for live streams and recordings. For more information, refer to [Live instant clipping](/stream/stream-live/live-instant-clipping/). - ::: ## Prerequisites @@ -27,23 +25,21 @@ To clip your video, determine the start and end times you want to use from the e :::note - Clipped videos will not inherit the `scheduledDeletion` date. To set the deletion date, you must clip the video first and then set the deletion date. - ::: ```json title="Required parameters" { - "clippedFromVideoUID": "0ea62994907491cf9ebefb0a34c1e2c6", - "startTimeSeconds": 20, - "endTimeSeconds": 40 + "clippedFromVideoUID": "0ea62994907491cf9ebefb0a34c1e2c6", + "startTimeSeconds": 20, + "endTimeSeconds": 40 } ``` -* **`clippedFromVideoUID`**: The unique identifier for the video used to create the new, clipped video. -* **`startTimeSeconds`**: The timestamp from the existing video that indicates when the new video begins. -* **`endTimeSeconds`**: The timestamp from the existing video that indicates when the new video ends.

+- **`clippedFromVideoUID`**: The unique identifier for the video used to create the new, clipped video. +- **`startTimeSeconds`**: The timestamp from the existing video that indicates when the new video begins. +- **`endTimeSeconds`**: The timestamp from the existing video that indicates when the new video ends.

```bash title="Example: Clip a video" {5,6,7} curl --location --request POST 'https://api.cloudflare.com/client/v4/accounts//stream/clip' \ @@ -58,7 +54,7 @@ curl --location --request POST 'https://api.cloudflare.com/client/v4/accounts/ + While the clipped video processes, the video status response displays **Queued**. When the clipping process is complete, the video status changes to **Ready** and displays the new name of the clipped video and the new duration. @@ -70,12 +66,12 @@ When you clip a video, you can also specify a new name for the clipped video. In ```json title="Example: Specify a custom name" {6} { - "clippedFromVideoUID": "0ea62994907491cf9ebefb0a34c1e2c6", - "startTimeSeconds": 10, - "endTimeSeconds": 15, - "meta": { - "name": "overriding-filename-clip.mp4" - } + "clippedFromVideoUID": "0ea62994907491cf9ebefb0a34c1e2c6", + "startTimeSeconds": 10, + "endTimeSeconds": 15, + "meta": { + "name": "overriding-filename-clip.mp4" + } } ``` @@ -87,15 +83,15 @@ You can also add a custom watermark to your video. For more information on water ```json title="Example: Clip a video, set a new video name, and apply a watermark" {5,6,9} { - "clippedFromVideoUID": "0ea62994907491cf9ebefb0a34c1e2c6", - "startTimeSeconds": 10, - "endTimeSeconds": 15, - "watermark": { - "uid": "4babd675387c3d927f58c41c761978fe" - }, - "meta": { - "name": "overriding-filename-clip.mp4" - } + "clippedFromVideoUID": "0ea62994907491cf9ebefb0a34c1e2c6", + "startTimeSeconds": 10, + "endTimeSeconds": 15, + "watermark": { + "uid": "4babd675387c3d927f58c41c761978fe" + }, + "meta": { + "name": "overriding-filename-clip.mp4" + } } ``` @@ -105,13 +101,13 @@ When clipping a video, you can make a video private and accessible only to certa ```json title="Example: Clip a video and require signed URLs" {5} { - "clippedFromVideoUID": "0ea62994907491cf9ebefb0a34c1e2c6", - "startTimeSeconds": 10, - "endTimeSeconds": 15, - "requireSignedURLs": true, - "meta": { - "name": "signed-urls-demo.mp4" - } + "clippedFromVideoUID": "0ea62994907491cf9ebefb0a34c1e2c6", + "startTimeSeconds": 10, + "endTimeSeconds": 15, + "requireSignedURLs": true, + "meta": { + "name": "signed-urls-demo.mp4" + } } ``` @@ -123,12 +119,12 @@ You can also specify a thumbnail image for your video using a percentage value. ```json title="Example: Clip a video with a thumbnail generated at the 50% mark" {5} { - "clippedFromVideoUID": "0ea62994907491cf9ebefb0a34c1e2c6", - "startTimeSeconds": 10, - "endTimeSeconds": 15, - "thumbnailTimestampPct": 0.5, - "meta": { - "name": "thumbnail_percentage.mp4" - } + "clippedFromVideoUID": "0ea62994907491cf9ebefb0a34c1e2c6", + "startTimeSeconds": 10, + "endTimeSeconds": 15, + "thumbnailTimestampPct": 0.5, + "meta": { + "name": "thumbnail_percentage.mp4" + } } ``` diff --git a/src/content/docs/stream/faq.mdx b/src/content/docs/stream/faq.mdx index f00d17eb84..50f60f6668 100644 --- a/src/content/docs/stream/faq.mdx +++ b/src/content/docs/stream/faq.mdx @@ -6,10 +6,9 @@ sidebar: head: - tag: title content: Frequently asked questions about Cloudflare Stream - --- -import { GlossaryTooltip, DashButton } from "~/components" +import { GlossaryTooltip, DashButton } from "~/components"; ## Stream @@ -19,23 +18,21 @@ Cloudflare decides on which bitrate, resolution, and codec is best for you. We d ### Can I download original video files from Stream? -You cannot download the *exact* input file that you uploaded. However, depending on your use case, you can use the [Downloadable Videos](/stream/viewing-videos/download-videos/) feature to get encoded MP4s for use cases like offline viewing. +You cannot download the _exact_ input file that you uploaded. However, depending on your use case, you can use the [Downloadable Videos](/stream/viewing-videos/download-videos/) feature to get encoded MP4s for use cases like offline viewing. ### Is there a limit to the amount of videos I can upload? -* By default, a video upload can be at most 30 GB. +- By default, a video upload can be at most 30 GB. -* By default, you can have up to 120 videos queued or being encoded simultaneously. Videos in the `ready` status are playable but may still be encoding certain quality levels until the `pctComplete` reaches 100. Videos in the `error`, `ready`, or `pendingupload` state do not count toward this limit. If you need the concurrency limit raised, [contact Cloudflare support](/support/contacting-cloudflare-support/) explaining your use case and why you would like the limit raised. +- By default, you can have up to 120 videos queued or being encoded simultaneously. Videos in the `ready` status are playable but may still be encoding certain quality levels until the `pctComplete` reaches 100. Videos in the `error`, `ready`, or `pendingupload` state do not count toward this limit. If you need the concurrency limit raised, [contact Cloudflare support](/support/contacting-cloudflare-support/) explaining your use case and why you would like the limit raised. :::note - The limit to the number of videos only applies to videos being uploaded to Cloudflare Stream. This limit is not related to the number of end users streaming videos. - ::: -* An account cannot upload videos if the total video duration exceeds the video storage capacity purchased. +- An account cannot upload videos if the total video duration exceeds the video storage capacity purchased. Limits apply to Direct Creator Uploads at the time of upload URL creation. @@ -79,10 +76,8 @@ You can embed the Stream player on the following platforms: :::note[Note] - Cloudflare Stream is not available on Chromium, as Chromium does not support H.264 videos. - ::: @@ -100,13 +95,13 @@ Cloudflare Stream is not available on Chromium, as Chromium does not support H.2 If you are producing a brand new file for Cloudflare Stream, we recommend you use the following settings: -* MP4 containers, AAC audio codec, H264 video codec, 30 or below frames per second -* moov atom should be at the front of the file (Fast Start) -* H264 progressive scan (no interlacing) -* H264 high profile -* Closed GOP -* Content should be encoded and uploaded in the same frame rate it was recorded -* Mono or Stereo audio (Stream will mix audio tracks with more than 2 channels down to stereo) +- MP4 containers, AAC audio codec, H264 video codec, 30 or below frames per second +- moov atom should be at the front of the file (Fast Start) +- H264 progressive scan (no interlacing) +- H264 high profile +- Closed GOP +- Content should be encoded and uploaded in the same frame rate it was recorded +- Mono or Stereo audio (Stream will mix audio tracks with more than 2 channels down to stereo) Below are bitrate recommendations for encoding new videos for Stream: @@ -149,7 +144,7 @@ Content-Security-Policy: connect-src 'self' *.videodelivery.net *.cloudflarestre To ensure **only** videos from **your** Cloudflare Stream account can be played on your website, replace `*` in `*.cloudflarestream.com` and `*.videodelivery.net` in the examples above with `customer-`, replacing `` with your unique customer code. To find your unique customer code in the Cloudflare dashboard, go to the **Stream** page. - + This code is unique to your Cloudflare Account. diff --git a/src/content/docs/stream/get-started.mdx b/src/content/docs/stream/get-started.mdx index 118cff9032..8df8693f5b 100644 --- a/src/content/docs/stream/get-started.mdx +++ b/src/content/docs/stream/get-started.mdx @@ -3,10 +3,9 @@ pcx_content_type: get-started title: Get started sidebar: order: 2 - --- -import { DashButton } from "~/components"; +import { DashButton } from "~/components"; :::note[Media Transformations is now GA:] @@ -14,8 +13,8 @@ Billing for Media Transformations will begin on November 1st, 2025. ::: -* [Upload your first video](/stream/get-started#upload-your-first-video) -* [Start your first live stream](/stream/get-started#start-your-first-live-stream) +- [Upload your first video](/stream/get-started#upload-your-first-video) +- [Start your first live stream](/stream/get-started#start-your-first-live-stream) ## Upload your first video @@ -23,7 +22,7 @@ Billing for Media Transformations will begin on November 1st, 2025. You can upload videos using the API or directly on the **Stream** page of the Cloudflare dashboard. - + To use the API, replace the `API_TOKEN` and `ACCOUNT_ID` values with your credentials in the example below. @@ -49,25 +48,25 @@ https://api.cloudflare.com/client/v4/accounts//stream/ ```json title="Response" {6} { - "result": { - "uid": "6b9e68b07dfee8cc2d116e4c51d6a957", - "preview": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/watch", - "thumbnail": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/thumbnails/thumbnail.jpg", - "readyToStream": true, - "status": { - "state": "ready" - }, - "meta": { - "downloaded-from": "https://storage.googleapis.com/stream-example-bucket/video.mp4", - "name": "My First Stream Video" - }, - "created": "2020-10-16T20:20:17.872170843Z", - "size": 9032701, - //... - }, - "success": true, - "errors": [], - "messages": [] + "result": { + "uid": "6b9e68b07dfee8cc2d116e4c51d6a957", + "preview": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/watch", + "thumbnail": "https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/thumbnails/thumbnail.jpg", + "readyToStream": true, + "status": { + "state": "ready" + }, + "meta": { + "downloaded-from": "https://storage.googleapis.com/stream-example-bucket/video.mp4", + "name": "My First Stream Video" + }, + "created": "2020-10-16T20:20:17.872170843Z", + "size": 9032701 + //... + }, + "success": true, + "errors": [], + "messages": [] } ``` @@ -79,33 +78,35 @@ To play video on your website with the [Stream Player](/stream/viewing-videos/us ```html ``` The embed code above can also be found on the **Stream** page of the Cloudflare dashboard. - +
-
- -
+
+ +
### Next steps -* [Edit your video](/stream/edit-videos/) and add captions or watermarks -* [Customize the Stream player](/stream/viewing-videos/using-the-stream-player/) +- [Edit your video](/stream/edit-videos/) and add captions or watermarks +- [Customize the Stream player](/stream/viewing-videos/using-the-stream-player/) ## Start your first live stream @@ -126,22 +127,22 @@ https://api.cloudflare.com/client/v4/accounts//stream/live_inputs ```json title="Response" { - "uid": "f256e6ea9341d51eea64c9454659e576", - "rtmps": { - "url": "rtmps://live.cloudflare.com:443/live/", - "streamKey": "MTQ0MTcjM3MjI1NDE3ODIyNTI1MjYyMjE4NTI2ODI1NDcxMzUyMzcf256e6ea9351d51eea64c9454659e576" - }, - "created": "2021-09-23T05:05:53.451415Z", - "modified": "2021-09-23T05:05:53.451415Z", - "meta": { - "name": "test stream" - }, - "status": null, - "recording": { - "mode": "automatic", - "requireSignedURLs": false, - "allowedOrigins": null - } + "uid": "f256e6ea9341d51eea64c9454659e576", + "rtmps": { + "url": "rtmps://live.cloudflare.com:443/live/", + "streamKey": "MTQ0MTcjM3MjI1NDE3ODIyNTI1MjYyMjE4NTI2ODI1NDcxMzUyMzcf256e6ea9351d51eea64c9454659e576" + }, + "created": "2021-09-23T05:05:53.451415Z", + "modified": "2021-09-23T05:05:53.451415Z", + "meta": { + "name": "test stream" + }, + "status": null, + "recording": { + "mode": "automatic", + "requireSignedURLs": false, + "allowedOrigins": null + } } ``` @@ -157,22 +158,23 @@ To play the live stream you just started on your website with the [Stream Player ```html ``` The embed code above can also be found on the **Stream** page of the Cloudflare dashboard. - + ### Next steps -* [Secure your stream](/stream/viewing-videos/securing-your-stream/) -* [View live viewer counts](/stream/getting-analytics/live-viewer-count/) +- [Secure your stream](/stream/viewing-videos/securing-your-stream/) +- [View live viewer counts](/stream/getting-analytics/live-viewer-count/) ## Accessibility considerations diff --git a/src/content/docs/stream/pricing.mdx b/src/content/docs/stream/pricing.mdx index c43ffce492..9aee31b83c 100644 --- a/src/content/docs/stream/pricing.mdx +++ b/src/content/docs/stream/pricing.mdx @@ -4,6 +4,7 @@ title: Pricing sidebar: order: 30 --- + import { DashButton } from "~/components"; :::note[Media Transformations is now GA:] @@ -27,7 +28,7 @@ Ingress (sending your content to us) and encoding are always free. Bandwidth is Storage is a prepaid pricing dimension purchased in increments of $5 per 1,000 minutes stored, regardless of file size. You can check how much storage you have and how much you have used on the **Stream** page of the Cloudflare dashboard. - + Storage is consumed by: @@ -54,6 +55,7 @@ Enterprise customers _may_ continue to upload new content beyond their contracte ### Minutes of video delivered Delivery is a post-paid, usage-based pricing dimension billed at $1 per 1,000 minutes delivered. You can check how much delivery you have used on the **Billing** page or the Stream **Analytics** page of the Cloudflare dashboard. + diff --git a/src/content/docs/stream/uploading-videos/upload-video-file.mdx b/src/content/docs/stream/uploading-videos/upload-video-file.mdx index 77550da369..8c0049ba7e 100644 --- a/src/content/docs/stream/uploading-videos/upload-video-file.mdx +++ b/src/content/docs/stream/uploading-videos/upload-video-file.mdx @@ -3,8 +3,8 @@ pcx_content_type: how-to title: Basic video uploads sidebar: order: 2 - --- + import { DashButton } from "~/components"; ## Basic Uploads @@ -15,7 +15,7 @@ For files smaller than 200 MB, you can use simple form-based uploads. 1. In the Cloudflare dashboard, go to the **Stream** page. - + 2. Drag and drop your video into the **Quick upload** area. You can also click to browse for the file on your machine. @@ -35,4 +35,3 @@ https://api.cloudflare.com/client/v4/accounts/{account_id}/stream :::note Note that cURL's `--form` flag automatically configures the `content-type` header and maps `my-video.mp4` to a form input called `file`. ::: - diff --git a/src/content/docs/stream/viewing-videos/using-own-player/index.mdx b/src/content/docs/stream/viewing-videos/using-own-player/index.mdx index 7e212da804..7caca836c4 100644 --- a/src/content/docs/stream/viewing-videos/using-own-player/index.mdx +++ b/src/content/docs/stream/viewing-videos/using-own-player/index.mdx @@ -41,7 +41,7 @@ https://customer-.cloudflarestream.com//manifest/video.m3u8?protocol= 1. In the Cloudflare dashboard, go to the **Stream** page. - + 2. From the list of videos, locate your video and select it. 3. From the **Settings** tab, locate the **HLS Manifest URL** and **Dash Manifest URL**. diff --git a/src/content/docs/stream/viewing-videos/using-the-stream-player/index.mdx b/src/content/docs/stream/viewing-videos/using-the-stream-player/index.mdx index 23d07331b5..887efb29a2 100644 --- a/src/content/docs/stream/viewing-videos/using-the-stream-player/index.mdx +++ b/src/content/docs/stream/viewing-videos/using-the-stream-player/index.mdx @@ -3,42 +3,41 @@ pcx_content_type: reference title: Use the Stream Player sidebar: order: 2 - --- -import { InlineBadge, DashButton } from "~/components" +import { InlineBadge, DashButton } from "~/components"; Cloudflare provides a customizable web player that can play both on-demand and live video, and requires zero additional engineering work.
-
- -
+
+ +
To add the Stream Player to a web page, you can either: -* Generate an embed code on the **Stream** page of the Cloudflare dashboard for a specific video or live input. +- Generate an embed code on the **Stream** page of the Cloudflare dashboard for a specific video or live input. - + -* Use the code example below, replacing `` with the video UID (or [signed token](/stream/viewing-videos/securing-your-stream/)) and `` with the your unique customer code, which can be found in the Stream Dashboard. +- Use the code example below, replacing `` with the video UID (or [signed token](/stream/viewing-videos/securing-your-stream/)) and `` with the your unique customer code, which can be found in the Stream Dashboard. ```html ``` @@ -52,12 +51,12 @@ Changing the `height` and `width` attributes on the `iframe` will change the pix ```html ``` @@ -68,12 +67,12 @@ To make an iframe responsive, it needs styles to enforce an aspect ratio by sett ```html
- +
``` @@ -83,9 +82,8 @@ Player options are configured with querystring parameters in the iframe's `src` `https://customer-.cloudflarestream.com//iframe?autoplay=true&muted=true` -* `autoplay` default: `false` - - * If the autoplay flag is included as a querystring parameter, the player will attempt to autoplay the video. If you don't want the video to autoplay, don't include the autoplay flag at all (instead of setting it to `autoplay=false`.) Note that mobile browsers generally do not support this attribute, the user must tap the screen to begin video playback. Please consider mobile users or users with Internet usage limits as some users don't have unlimited Internet access before using this attribute. +- `autoplay` default: `false` + - If the autoplay flag is included as a querystring parameter, the player will attempt to autoplay the video. If you don't want the video to autoplay, don't include the autoplay flag at all (instead of setting it to `autoplay=false`.) Note that mobile browsers generally do not support this attribute, the user must tap the screen to begin video playback. Please consider mobile users or users with Internet usage limits as some users don't have unlimited Internet access before using this attribute. :::caution @@ -93,42 +91,35 @@ Player options are configured with querystring parameters in the iframe's `src` ::: -* `controls` default: `true` +- `controls` default: `true` + - Shows video controls such as buttons for play/pause, volume controls. - * Shows video controls such as buttons for play/pause, volume controls. - -* `defaultTextTrack` - - * Will initialize the player with the specified language code's text track enabled. The value should be the BCP-47 language code that was used to [upload the text track](/stream/edit-videos/adding-captions/). If the specified language code has no captions available, the player will behave as though no language code had been provided. +- `defaultTextTrack` + - Will initialize the player with the specified language code's text track enabled. The value should be the BCP-47 language code that was used to [upload the text track](/stream/edit-videos/adding-captions/). If the specified language code has no captions available, the player will behave as though no language code had been provided. :::caution - This will *only* work once during initialization. Beyond that point the user has full control over their text track settings. + This will _only_ work once during initialization. Beyond that point the user has full control over their text track settings. ::: -* `letterboxColor` - - * Any valid [CSS color value](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value) provided will be applied to the letterboxing/pillarboxing of the player's UI. This can be set to `transparent` to avoid letterboxing/pillarboxing when not in fullscreen mode. +- `letterboxColor` + - Any valid [CSS color value](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value) provided will be applied to the letterboxing/pillarboxing of the player's UI. This can be set to `transparent` to avoid letterboxing/pillarboxing when not in fullscreen mode. :::note - - **Note:** Like all query string parameters, this value *must* be URI encoded. For example, the color value `hsl(120 80% 95%)` can be encoded using JavaScript's `encodeURIComponent()` function to `hsl(120%2080%25%2095%25)`. + **Note:** Like all query string parameters, this value _must_ be URI encoded. For example, the color value `hsl(120 80% 95%)` can be encoded using JavaScript's `encodeURIComponent()` function to `hsl(120%2080%25%2095%25)`. ::: -* `loop` default: `false` +- `loop` default: `false` + - If enabled the player will automatically seek back to the start upon reaching the end of the video. - * If enabled the player will automatically seek back to the start upon reaching the end of the video. +- `muted` default: `false` + - If set, the audio will be initially silenced. -* `muted` default: `false` - - * If set, the audio will be initially silenced. - -* `preload` default: `none` - - * This enumerated option is intended to provide a hint to the browser about what the author thinks will lead to the best user experience. You may specify the value `preload="auto"` to preload the beginning of the video. Not including the option or using `preload="metadata"` will just load the metadata needed to start video playback when requested. +- `preload` default: `none` + - This enumerated option is intended to provide a hint to the browser about what the author thinks will lead to the best user experience. You may specify the value `preload="auto"` to preload the beginning of the video. Not including the option or using `preload="metadata"` will just load the metadata needed to start video playback when requested. :::note @@ -136,40 +127,32 @@ Player options are configured with querystring parameters in the iframe's `src` ::: -* `poster` defaults to the first frame of the video - - * A URL for an image to be shown before the video is started or while the video is downloading. If this attribute isn't specified, a thumbnail image of the video is shown. +- `poster` defaults to the first frame of the video + - A URL for an image to be shown before the video is started or while the video is downloading. If this attribute isn't specified, a thumbnail image of the video is shown. :::note - **Note:** Like all query string parameters, this value *must* be URI encoded. For example, the thumbnail at `https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/thumbnails/thumbnail.jpg?time=1s&height=270` can be encoded using JavaScript's `encodeURIComponent()` function to `https%3A%2F%2Fcustomer-f33zs165nr7gyfy4.cloudflarestream.com%2F6b9e68b07dfee8cc2d116e4c51d6a957%2Fthumbnails%2Fthumbnail.jpg%3Ftime%3D1s%26height%3D600`. + **Note:** Like all query string parameters, this value _must_ be URI encoded. For example, the thumbnail at `https://customer-f33zs165nr7gyfy4.cloudflarestream.com/6b9e68b07dfee8cc2d116e4c51d6a957/thumbnails/thumbnail.jpg?time=1s&height=270` can be encoded using JavaScript's `encodeURIComponent()` function to `https%3A%2F%2Fcustomer-f33zs165nr7gyfy4.cloudflarestream.com%2F6b9e68b07dfee8cc2d116e4c51d6a957%2Fthumbnails%2Fthumbnail.jpg%3Ftime%3D1s%26height%3D600`. ::: -* `primaryColor` - - * Any valid [CSS color value](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value) provided will be applied to certain elements of the player's UI. +- `primaryColor` + - Any valid [CSS color value](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value) provided will be applied to certain elements of the player's UI. :::note - - **Note:** Like all query string parameters, this value *must* be URI encoded. For example, the color value `hsl(120 80% 95%)` can be encoded using JavaScript's `encodeURIComponent()` function to `hsl(120%2080%25%2095%25)`. + **Note:** Like all query string parameters, this value _must_ be URI encoded. For example, the color value `hsl(120 80% 95%)` can be encoded using JavaScript's `encodeURIComponent()` function to `hsl(120%2080%25%2095%25)`. ::: -* `src` - - * The video id from the video you've uploaded to Cloudflare Stream should be included here. - -* `startTime` - - * A timestamp that specifies the time when playback begins. If a plain number is used such as `?startTime=123`, it will be interpreted as `123` seconds. More human readable timestamps can also be used, such as `?startTime=1h12m27s` for `1 hour, 12 minutes, and 27 seconds`. - -* `ad-url` - - * The Stream Player supports VAST Tags to insert ads such as prerolls. If you have a VAST tag URI, you can pass it to the Stream Player by setting the `ad-url` parameter. The URI must be encoded using a function like JavaScript's `encodeURIComponent()`. +- `src` + - The video id from the video you've uploaded to Cloudflare Stream should be included here. +- `startTime` + - A timestamp that specifies the time when playback begins. If a plain number is used such as `?startTime=123`, it will be interpreted as `123` seconds. More human readable timestamps can also be used, such as `?startTime=1h12m27s` for `1 hour, 12 minutes, and 27 seconds`. +- `ad-url` + - The Stream Player supports VAST Tags to insert ads such as prerolls. If you have a VAST tag URI, you can pass it to the Stream Player by setting the `ad-url` parameter. The URI must be encoded using a function like JavaScript's `encodeURIComponent()`. ## Debug Info @@ -179,8 +162,8 @@ The Stream player Debug menu can be shown and hidden using the key combination ` After a live stream ends, a recording is automatically generated and available within 60 seconds. To ensure successful video viewing and playback, keep the following in mind: -* If a live stream ends while a viewer is watching, viewers should wait 60 seconds and then reload the player to view the recording of the live stream. -* After a live stream ends, you can check the status of the recording via the API. When the video state is `ready`, you can use one of the manifest URLs to stream the recording. +- If a live stream ends while a viewer is watching, viewers should wait 60 seconds and then reload the player to view the recording of the live stream. +- After a live stream ends, you can check the status of the recording via the API. When the video state is `ready`, you can use one of the manifest URLs to stream the recording. While the recording of the live stream is generating, the video may report as `not-found` or `not-started`. diff --git a/src/content/docs/style-guide/components/index.mdx b/src/content/docs/style-guide/components/index.mdx index 9a1ba54121..8e4f43c7b0 100644 --- a/src/content/docs/style-guide/components/index.mdx +++ b/src/content/docs/style-guide/components/index.mdx @@ -1,8 +1,9 @@ --- title: Components sidebar: - order: 2 + order: 2 --- + import { Details } from "~/components"; When you are [contributing to the Cloudflare Docs](/style-guide/contributions/), you can use our custom components to add additional formatting, such as buttons, tabs, and collapsible sections. @@ -19,6 +20,8 @@ To add a component to a page: ```mdx import { COMPONENT_NAME } from "~/components"; + + ; ``` For example, if you were to add [the `DashButton` component](/style-guide/components/dash-button/) to the [Images getting started page](/images/get-started/), the top of the MDX file corresponding to that page would look like the following: @@ -29,28 +32,30 @@ To add a component to a page: title: Getting started sidebar: order: 2 - --- import { DashButton } from "~/components"; + + ; ``` 2. Add the component to the page by adding this text anywhere on the page you want the component to appear: ```mdx - + ``` For example, if you were to add the `DashButton` component to some steps in the [Images getting started page](/images/get-started/), here is how the MDX file would look: - ```mdx + ```mdx 1. In the Cloudflare dashboard, go to the **Transformations** page. - + 2. Go to the specific zone where you want to enable transformations. - ``` -
- ![DashButton component example](~/assets/images/style-guide/ui-elements/dashbutton-example.png) -
\ No newline at end of file + +
+ ![DashButton component + example](~/assets/images/style-guide/ui-elements/dashbutton-example.png) +
diff --git a/src/content/docs/support/third-party-software/others/configure-cloudflare-and-heroku-over-https.mdx b/src/content/docs/support/third-party-software/others/configure-cloudflare-and-heroku-over-https.mdx index f9055194ee..62320c7ba7 100644 --- a/src/content/docs/support/third-party-software/others/configure-cloudflare-and-heroku-over-https.mdx +++ b/src/content/docs/support/third-party-software/others/configure-cloudflare-and-heroku-over-https.mdx @@ -26,9 +26,9 @@ Below, you will need to add DNS records for a subdomain and the apex domain (als ### Step 2a - Add a subdomain -In the Cloudflare dashboard, go to the **DNS** page. +In the Cloudflare dashboard, go to the **DNS Records** page. - + Add a 'www' *CNAME* record that points to the custom domain (also known as *DNS target*) that you obtained in Step 1 above for your subdomain. diff --git a/src/content/docs/workers/configuration/routing/custom-domains.mdx b/src/content/docs/workers/configuration/routing/custom-domains.mdx index abd35d3dce..ab78943264 100644 --- a/src/content/docs/workers/configuration/routing/custom-domains.mdx +++ b/src/content/docs/workers/configuration/routing/custom-domains.mdx @@ -156,9 +156,9 @@ If you are currently invoking a Worker using a [route](/workers/configuration/ro To migrate the route `example.com/*`: -1. In the Cloudflare dashboard, go to the **DNS** page for your domain. +1. In the Cloudflare dashboard, go to the **DNS Records** page for your domain. - + 2. Delete the CNAME record for `example.com`. 3. Go to **Account Home** > **Workers & Pages**. @@ -172,9 +172,9 @@ To migrate the route `example.com/*`: To migrate the route `example.com/*` in your [Wrangler configuration file](/workers/wrangler/configuration/): -1. In the Cloudflare dashboard, go to the **DNS** page for your domain. +1. In the Cloudflare dashboard, go to the **DNS Records** page for your domain. - + 2. Delete the CNAME record for `example.com`. 3. Add the following to your Wrangler file: diff --git a/src/content/docs/workers/observability/metrics-and-analytics.mdx b/src/content/docs/workers/observability/metrics-and-analytics.mdx index 8c3ef44ea5..4137a810ea 100644 --- a/src/content/docs/workers/observability/metrics-and-analytics.mdx +++ b/src/content/docs/workers/observability/metrics-and-analytics.mdx @@ -6,10 +6,9 @@ sidebar: head: [] description: Diagnose issues with Workers metrics, and review request data for a zone with Workers analytics. - --- -import { GlossaryTooltip, DashButton, Steps } from "~/components" +import { GlossaryTooltip, DashButton, Steps } from "~/components"; There are two graphical sources of information about your Workers traffic at a given time: Workers metrics and zone-based Workers analytics. @@ -24,9 +23,10 @@ Workers metrics aggregate request data for an individual Worker (if your Worker 1. In the Cloudflare dashboard, go to the **Workers & Pages** page. - + 2. In **Overview**, select your Worker to view its metrics. + There are two metrics that can help you understand the health of your Worker in a given moment: requests success and error metrics, and invocation statuses. @@ -35,9 +35,9 @@ There are two metrics that can help you understand the health of your Worker in The first graph shows historical request counts from the Workers runtime broken down into successful requests, errored requests, and subrequests. -* **Total**: All incoming requests registered by a Worker. Requests blocked by [WAF](https://www.cloudflare.com/waf/) or other security features will not count. -* **Success**: Requests that returned a Success or Client Disconnected invocation status. -* **Errors**: Requests that returned a Script Threw Exception, Exceeded Resources, or Internal Error invocation status — refer to [Invocation Statuses](/workers/observability/metrics-and-analytics/#invocation-statuses) for a breakdown of where your errors are coming from. +- **Total**: All incoming requests registered by a Worker. Requests blocked by [WAF](https://www.cloudflare.com/waf/) or other security features will not count. +- **Success**: Requests that returned a Success or Client Disconnected invocation status. +- **Errors**: Requests that returned a Script Threw Exception, Exceeded Resources, or Internal Error invocation status — refer to [Invocation Statuses](/workers/observability/metrics-and-analytics/#invocation-statuses) for a breakdown of where your errors are coming from. Request traffic data may display a drop off near the last few minutes displayed in the graph for time ranges less than six hours. This does not reflect a drop in traffic, but a slight delay in aggregation and metrics delivery. @@ -45,13 +45,26 @@ Request traffic data may display a drop off near the last few minutes displayed Subrequests are requests triggered by calling `fetch` from within a Worker. A subrequest that throws an uncaught error will not be counted. -* **Total**: All subrequests triggered by calling `fetch` from within a Worker. -* **Cached**: The number of cached responses returned. -* **Uncached**: The number of uncached responses returned. +- **Total**: All subrequests triggered by calling `fetch` from within a Worker. +- **Cached**: The number of cached responses returned. +- **Uncached**: The number of uncached responses returned. ### Wall time per execution -Wall time represents the elapsed time in milliseconds between the start of a Worker invocation, and when the Workers runtime determines that no more JavaScript needs to run. Specifically, wall time per execution chart measures the wall time that the JavaScript context remained open — including time spent waiting on I/O, and time spent executing in your Worker's [`waitUntil()`](/workers/runtime-apis/context/#waituntil) handler. Wall time is not the same as the time it takes your Worker to send the final byte of a response back to the client - wall time can be higher, if tasks within `waitUntil()` are still running after the response has been sent, or it can be lower. For example, when returning a response with a large body, the Workers runtime can, in some cases, determine that no more JavaScript needs to run, and closes the JavaScript context before all the bytes have passed through and been sent. +Wall time represents +the elapsed time in milliseconds between the start of a Worker invocation, and +when the Workers runtime determines that no more JavaScript needs to run. +Specifically, wall time per execution chart measures the wall time that the +JavaScript context remained open — including time spent waiting on I/O, and time +spent executing in your Worker's +[`waitUntil()`](/workers/runtime-apis/context/#waituntil) handler. Wall time is +not the same as the time it takes your Worker to send the final byte of a +response back to the client - wall time can be higher, if tasks within +`waitUntil()` are still running after the response has been sent, or it can be +lower. For example, when returning a response with a large body, the Workers +runtime can, in some cases, determine that no more JavaScript needs to run, and +closes the JavaScript context before all the bytes have passed through and been +sent. The Wall Time per execution chart shows historical wall time data broken down into relevant quantiles using [reservoir sampling](https://en.wikipedia.org/wiki/Reservoir_sampling). Learn more about [interpreting quantiles](https://www.statisticshowto.com/quantile-definition-find-easy-steps/). @@ -70,17 +83,16 @@ To review invocation statuses: 1. In the Cloudflare dashboard, go to the **Workers & Pages** page. - + 2. Select your Worker. -4. Find the **Summary** graph in **Metrics**. -5. Select **Errors**. +3. Find the **Summary** graph in **Metrics**. +4. Select **Errors**. + Worker invocation statuses indicate whether a Worker executed successfully or failed to generate a response in the Workers runtime. Invocation statuses differ from HTTP status codes. In some cases, a Worker invocation succeeds but does not generate a successful HTTP status because of another error encountered outside of the Workers runtime. Some invocation statuses result in a [Workers error code](/workers/observability/errors/#error-pages-generated-by-workers) being returned to the client. - - | Invocation status | Definition | Workers error code | GraphQL field | | ---------------------- | ---------------------------------------------------------------------------- | ------------------ | ---------------------- | | Success | Worker executed successfully | | `success` | @@ -89,8 +101,6 @@ Worker invocation statuses indicate whether a Worker executed successfully or fa | Exceeded resources¹ | Worker exceeded runtime limits | 1102, 1027 | `exceededResources` | | Internal error² | Workers runtime encountered an error | | `internalError` | - - ¹ The Exceeded Resources status may appear when the Worker exceeds a [runtime limit](/workers/platform/limits/#request-limits). The most common cause is excessive CPU time, but is also caused by a Worker exceeding startup time or free tier limits. ² The Internal Error status may appear when the Workers runtime fails to process a request due to an internal failure in our system. These errors are not caused by any issue with the Worker code nor any resource limit. While requests with Internal Error status are rare, some may appear during normal operation. These requests are not counted towards usage for billing purposes. If you notice an elevated rate of requests with Internal Error status, review [www.cloudflarestatus.com](https://www.cloudflarestatus.com/). @@ -115,13 +125,9 @@ Zone analytics aggregate request data for all Workers assigned to any [routes](/ To review zone metrics: - -1. In the Cloudflare dashboard, go to the **Analytics & Logs** page for your zone. +In the Cloudflare dashboard, go to the **Workers Analytics** page for your zone. - - -2. Select **Workers**. - + Zone data can be scoped by time range within the last 30 days. The dashboard includes charts and information described below. @@ -129,8 +135,8 @@ Zone data can be scoped by time range within the last 30 days. The dashboard inc This chart shows subrequests — requests triggered by calling `fetch` from within a Worker — broken down by cache status. -* **Uncached**: Requests answered directly by your origin server or other servers responding to subrequests. -* **Cached**: Requests answered by Cloudflare’s [cache](https://www.cloudflare.com/learning/cdn/what-is-caching/). As Cloudflare caches more of your content, it accelerates content delivery and reduces load on your origin. +- **Uncached**: Requests answered directly by your origin server or other servers responding to subrequests. +- **Cached**: Requests answered by Cloudflare’s [cache](https://www.cloudflare.com/learning/cdn/what-is-caching/). As Cloudflare caches more of your content, it accelerates content delivery and reduces load on your origin. ### Bandwidth diff --git a/src/content/docs/workers/tutorials/generate-youtube-thumbnails-with-workers-and-images.mdx b/src/content/docs/workers/tutorials/generate-youtube-thumbnails-with-workers-and-images.mdx index 1af393460a..1ba48737e4 100644 --- a/src/content/docs/workers/tutorials/generate-youtube-thumbnails-with-workers-and-images.mdx +++ b/src/content/docs/workers/tutorials/generate-youtube-thumbnails-with-workers-and-images.mdx @@ -11,7 +11,12 @@ description: >- This tutorial explains how to programmatically generate a custom YouTube thumbnail using Cloudflare Workers. You may want to customize the thumbnail's design, call-to-actions and images used to encourage more viewers to watch your video. --- -import { Render, PackageManagers, WranglerConfig, DashButton } from "~/components"; +import { + Render, + PackageManagers, + WranglerConfig, + DashButton, +} from "~/components"; In this tutorial, you will learn how to programmatically generate a custom YouTube thumbnail using Cloudflare Workers and Cloudflare Image Resizing. You may want to generate a custom YouTube thumbnail to customize the thumbnail's design, call-to-actions and images used to encourage more viewers to watch your video. @@ -38,9 +43,10 @@ Cloudflare Images allows you to store, resize, optimize and deliver images in a ### Upload with the dashboard To upload an image using the Cloudflare dashboard: -1. In the Cloudflare dashboard, go to the **Images** page. - +1. In the Cloudflare dashboard, go to the **Transformations** page. + + 2. Use **Quick Upload** to either drag and drop an image or click to browse and choose a file from your local files. 3. After the image is uploaded, view it using the generated URL. diff --git a/src/content/docs/zaraz/advanced/load-custom-managed-component.mdx b/src/content/docs/zaraz/advanced/load-custom-managed-component.mdx index 1739380084..4f225d16bc 100644 --- a/src/content/docs/zaraz/advanced/load-custom-managed-component.mdx +++ b/src/content/docs/zaraz/advanced/load-custom-managed-component.mdx @@ -57,7 +57,7 @@ As with regular tools, it is recommended that you [create the triggers](/zaraz/c 1. In the Cloudflare dashboard, go to the **Tag setup** page. - + 2. Select **Tools Configuration** > [**Third-party tools**](https://dash.cloudflare.com/?to=/:account/:zone/zaraz/tools-config/tools/catalog). 3. Select **Add new tool** and choose **Custom Managed Component** from the tools library page. Select **Continue** to confirm your selection. 4. In **Select Custom MC**, choose a Custom Managed Component that you have deployed to your account, such as `custom-mc-my-new-counter-mc`. Select **Continue**. diff --git a/src/content/partials/networking-services/mconn/configure-connectors.mdx b/src/content/partials/networking-services/mconn/configure-connectors.mdx index 7f47fa650e..c6771dad9c 100644 --- a/src/content/partials/networking-services/mconn/configure-connectors.mdx +++ b/src/content/partials/networking-services/mconn/configure-connectors.mdx @@ -865,11 +865,11 @@ To check the IPsec tunnels and static routes created by your { props.magicWord = <> - + ) diff --git a/src/content/partials/networking-services/routing/mcn-magic-wan-on-ramps.mdx b/src/content/partials/networking-services/routing/mcn-magic-wan-on-ramps.mdx index 5e69ecd1a9..0727df92ea 100644 --- a/src/content/partials/networking-services/routing/mcn-magic-wan-on-ramps.mdx +++ b/src/content/partials/networking-services/routing/mcn-magic-wan-on-ramps.mdx @@ -37,7 +37,7 @@ Choose this option if you have a single virtual private cloud (VPC) in your clou 1. In the Cloudflare dashboard, go to **Cloud on-ramps**. - + 2. Select **Add new on-ramp**. 3. Go to **Connect an existing VPC to Cloudflare** > **Select**. @@ -73,7 +73,7 @@ When you configure a hub on-ramp, Cloudflare always manages the VPN tunnel betwe 1. In the Cloudflare dashboard, go to **Cloud on-ramps**. - + 2. Select **Add new on-ramp**. 3. Go to **Connect an existing hub to Cloudflare** > **Select**. @@ -103,7 +103,7 @@ You have successfully created your Magic WAN on-ramp. However, on-ramp creation 1. In the Cloudflare dashboard, go to **Cloud on-ramps**. - + 2. Select **Add new on-ramp**. 3. Go to **Create a new hub & connect it to Cloudflare** > **Select**. @@ -153,7 +153,7 @@ Do not deploy the on-ramp using both Cloudflare and Terraform. If you plan to de 1. In the Cloudflare dashboard, go to **Cloud on-ramps**. - + 2. Select **Add new on-ramp** and begin the **Create a Magic WAN cloud on-ramp** workflow as normal. 3. After the **Configure route propagation** step, select **View download options** instead of selecting **Continue**. @@ -165,7 +165,7 @@ Do not deploy the on-ramp using both Cloudflare and Terraform. If you plan to de 1. In the Cloudflare dashboard, go to **Cloud on-ramps**. - + 2. Select the three dots for the on-ramp you want to download > **Download as Terraform**. @@ -181,7 +181,7 @@ After setting up your on-ramps, you need to update your network security groups 1. In the Cloudflare dashboard, go to **Cloud on-ramps**. - + 2. Select the on-ramp you want to edit. 3. Select **Edit** in the side panel. @@ -197,7 +197,7 @@ After setting up your on-ramps, you need to update your network security groups 1. In the Cloudflare dashboard, go to **Cloud on-ramps**. - + 2. Select the on-ramp you want to delete. 3. Select **Edit** in the side panel. @@ -218,12 +218,13 @@ By default, Cloudflare installs the following summarized routes in your cloud ro To override the defaults with custom prefixes: -1. In the Cloudflare dashboard, go to **Address Space**. +1. In the Cloudflare dashboard, go to **Configuration**. - + -2. Delete the prefixes, and enter your custom ones. -3. When you are finished, select **Save changes**. +2. Select **Address Space**. +3. Delete the prefixes, and enter your custom ones. +4. When you are finished, select **Save changes**. To install a default route to send all traffic to Magic WAN, enter `0.0.0.0/0` (on Azure, enter `0.0.0.0/1` and `128.0.0.0/1`). @@ -235,7 +236,7 @@ You can view estimated costs associated with your cloud resources in the Cloudfl 1. In the Cloudflare dashboard, go to **Cloud on-ramps**. - + 2. Find the cloud on-ramp for which you want to check the estimated costs. 3. Select the three dots > **Associated Resources**. diff --git a/src/content/partials/networking-services/tunnel-health/update-tunnel-health-checks-frequency.mdx b/src/content/partials/networking-services/tunnel-health/update-tunnel-health-checks-frequency.mdx index 5f05b993d7..629f51132a 100644 --- a/src/content/partials/networking-services/tunnel-health/update-tunnel-health-checks-frequency.mdx +++ b/src/content/partials/networking-services/tunnel-health/update-tunnel-health-checks-frequency.mdx @@ -77,12 +77,12 @@ Below is an example of how to adjust tunnel health check frequency to `low`. Not <> - +