mcpField
B
b2c-ecdn

b2c-ecdn

github.com/salesforcecommercecloudCloud & DevOps5790 installsUpdated today
Repository

About b2c-ecdn

A skill for Salesforce B2C Commerce operators using the b2c CLI to manage eCDN zones, certificates, cache, and security settings, with examples for traffic rules and configuration.

Key features

  1. 01List and create CDN zones
  2. 02Manage certificates and validate hostnames
  3. 03Purge cache by path or tag
  4. 04Configure rate limits and security
  5. 05Adjust speed optimization settings

Use cases

  1. 01Create a storefront CDN zone
  2. 02Purge cache for selected paths
  3. 03Set rate limits on checkout paths
  4. 04Update HTTPS and TLS settings

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/salesforcecommercecloud/b2c-developer-tooling --skill b2c-ecdn

After installing, type/b2c-ecdnin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

evals/
trigger-evals.json
references/
ADVANCED.md
SECURITY.md

Details

From the project README

B2C eCDN Skill

Use the b2c CLI plugin to manage eCDN (embedded Content Delivery Network) zones, certificates, security settings, and more.

To investigate edge traffic before changing rules (bots, abuse, edge 403/429 spikes, SCAPI/SLAS abuse; which sources matter, who runs them, which rules cover them), use the b2c-ops:b2c-edge-traffic-triage runbook (MCP: skill://b2c-ops/b2c-edge-traffic-triage/SKILL.md).

Tip: If b2c is not installed globally, use npx @salesforce/b2c-cli instead (e.g., npx @salesforce/b2c-cli ecdn zones list).

Configuration

Values like tenantId, clientId, and clientSecret resolve from dw.json / SFCC_* env vars / the active instance / configuration plugins. Examples below show minimal usage; add flags only to override configured values — passing --client-id/--client-secret/--tenant-id is usually unnecessary. If a required value is missing, the CLI emits an actionable error pointing at the flag, env var, and config key.

Run b2c setup inspect to see the resolved configuration and which source provided each value (--json for scripting; secrets stay masked by default). For precedence rules and troubleshooting, see the b2c-cli:b2c-config skill.

Prerequisites

  • OAuth credentials with sfcc.cdn-zones scope (read operations)
  • OAuth credentials with sfcc.cdn-zones.rw scope (write operations)
  • Tenant ID for your B2C Commerce organization (from config or --tenant-id)

Examples

List CDN Zones
# list all CDN zones for the configured tenant (pages through every zone)
b2c ecdn zones list

# JSON output
b2c ecdn zones list --json

# target a different tenant than the active config
b2c ecdn zones list --tenant-id zzxy_prd
Create a Storefront Zone
# create a new storefront zone
b2c ecdn zones create --domain-name example.com
Purge Cache
# purge cache for specific paths
b2c ecdn cache purge --zone my-zone --path /products --path /categories

# purge by cache tags
b2c ecdn cache purge --zone my-zone --tag product-123 --tag category-456
Manage Certificates
# list certificates for a zone
b2c ecdn certificates list --zone my-zone

# add a new certificate
b2c ecdn certificates add --zone my-zone --hostname www.example.com --type custom --certificate-file ./cert.pem --private-key-file ./key.pem

# validate a custom hostname
b2c ecdn certificates validate --zone my-zone --custom-hostname-id abc123
Manage Rate Limiting Rules
# list rate limiting rules
b2c ecdn rate-limit list --zone my-zone

# create a rate limiting rule
b2c ecdn rate-limit create --zone my-zone --description "Rate limit /checkout" --expression '(http.request.uri.path matches "^/checkout")' --characteristics cf.unique_visitor_id --action block --period 60 --requests-per-period 50 --mitigation-timeout 600

# get a rule
b2c ecdn rate-limit get --zone my-zone --rule-id 2c0fc9fa937b11eaa1b71c4d701ab86e

# update a rule
b2c ecdn rate-limit update --zone my-zone --rule-id 2c0fc9fa937b11eaa1b71c4d701ab86e --requests-per-period 100

# delete a rule
b2c ecdn rate-limit delete --zone my-zone --rule-id 2c0fc9fa937b11eaa1b71c4d701ab86e --force
Security Settings
# get security settings
b2c ecdn security get --zone my-zone

# update security settings
b2c ecdn security update --zone my-zone --security-level medium --always-use-https --tls13
Speed Settings
# get speed optimization settings
b2c ecdn speed get --zone my-zone

# update speed settings
b2c ecdn speed update --zone my-zone --brotli on --http3 on --webp on

Additional Topics

For less commonly used eCDN features, see the reference files:

  • SECURITY.md — WAF (v1 and v2), custom firewall rules, rate limiting, and Page Shield (CSP policies, script detection, notification webhooks)
  • ADVANCED.md — Logpush jobs, MRT routing rules, mTLS certificates, cipher suite configuration, and origin header modification

Configuration Overrides

The tenant ID can be overridden via flag or environment variable:

  • --tenant-id / SFCC_TENANT_ID / tenantId in dw.json

The --zone flag accepts either:

  • Zone ID (32-character hex string)
  • Zone name (human-readable, case-insensitive lookup across all zones in the org, including beyond the first 25)
Pitfalls
  • Forbidden = feature unavailable on that zone, or a --zone ID not in this org.
  • waf groups / waf rules (WAF v1) typically fail with Not Found (zones on WAF v2); use waf rulesets.
  • firewall create --actions log (or --enabled false) stages a rule without enforcing it; switch to managed_challenge/block after review.
SCAPI (API) Zone

zones list includes <realm>.api.commercecloud.salesforce.com (BM labels it <shortCode>.api...). It fronts SCAPI/SLAS traffic, including headless storefronts.

  • Supported: firewall, rate-limit.
  • Forbidden (platform-managed, not a scope problem): security, speed, waf rulesets, certificates, cipher-suites, mrt-rules, page-shield, logpush, origin-headers.
  • Shared by every instance in the realm (dev/stg/prd). Scope each rule to one instance by org ID in the path, e.g. (http.request.uri.path contains "/organizations/f_ecom_zzxy_prd/") and .... An unscoped rule applies to all instances.
OAuth Scopes
OperationRequired Scope
Read operationssfcc.cdn-zones
Write operationssfcc.cdn-zones.rw
More Commands

See b2c ecdn --help for a full list of available commands and options in the ecdn topic.

Comments

Markdown supported