Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Comprehensive Cloudflare platform skill covering Workers, D1, R2, KV, AI, Durable Objects, and security.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/terraform/api.md
1# Terraform Data Sources Reference23Query existing Cloudflare resources to reference in your configurations.45## v5 Data Source Names67| v4 Name | v5 Name | Notes |8|---------|---------|-------|9| `cloudflare_record` | `cloudflare_dns_record` | |10| `cloudflare_worker_script` | `cloudflare_workers_script` | Note: plural |11| `cloudflare_access_*` | `cloudflare_zero_trust_*` | Access → Zero Trust |1213## Zone Data Sources1415```hcl16# Get zone by name17data "cloudflare_zone" "example" {18name = "example.com"19}2021# Use in resources22resource "cloudflare_dns_record" "www" {23zone_id = data.cloudflare_zone.example.id24name = "www"25# ...26}27```2829## Account Data Sources3031```hcl32# List all accounts33data "cloudflare_accounts" "main" {34name = "My Account"35}3637# Use account ID38resource "cloudflare_worker_script" "api" {39account_id = data.cloudflare_accounts.main.accounts[0].id40# ...41}42```4344## Worker Data Sources4546```hcl47# Get existing worker script (v5: cloudflare_workers_script)48data "cloudflare_workers_script" "existing" {49account_id = var.account_id50name = "existing-worker"51}5253# Reference in service bindings54resource "cloudflare_workers_script" "consumer" {55service_binding {56name = "UPSTREAM"57service = data.cloudflare_workers_script.existing.name58}59}60```6162## KV Data Sources6364```hcl65# Get KV namespace66data "cloudflare_workers_kv_namespace" "existing" {67account_id = var.account_id68namespace_id = "abc123"69}7071# Use in worker binding72resource "cloudflare_workers_script" "api" {73kv_namespace_binding {74name = "KV"75namespace_id = data.cloudflare_workers_kv_namespace.existing.id76}77}78```7980## Lists Data Source8182```hcl83# Get IP lists for WAF rules84data "cloudflare_list" "blocked_ips" {85account_id = var.account_id86name = "blocked_ips"87}88```8990## IP Ranges Data Source9192```hcl93# Get Cloudflare IP ranges (for firewall rules)94data "cloudflare_ip_ranges" "cloudflare" {}9596output "ipv4_cidrs" {97value = data.cloudflare_ip_ranges.cloudflare.ipv4_cidr_blocks98}99100output "ipv6_cidrs" {101value = data.cloudflare_ip_ranges.cloudflare.ipv6_cidr_blocks102}103104# Use in security group rules (AWS example)105resource "aws_security_group_rule" "allow_cloudflare" {106type = "ingress"107from_port = 443108to_port = 443109protocol = "tcp"110cidr_blocks = data.cloudflare_ip_ranges.cloudflare.ipv4_cidr_blocks111security_group_id = aws_security_group.web.id112}113```114115## Common Patterns116117### Import ID Formats118119| Resource | Import ID Format |120|----------|------------------|121| `cloudflare_zone` | `<zone-id>` |122| `cloudflare_dns_record` | `<zone-id>/<record-id>` |123| `cloudflare_workers_script` | `<account-id>/<script-name>` |124| `cloudflare_workers_kv_namespace` | `<account-id>/<namespace-id>` |125| `cloudflare_r2_bucket` | `<account-id>/<bucket-name>` |126| `cloudflare_d1_database` | `<account-id>/<database-id>` |127| `cloudflare_pages_project` | `<account-id>/<project-name>` |128129```bash130# Example: Import DNS record131terraform import cloudflare_dns_record.example <zone-id>/<record-id>132```133134### Reference Across Modules135136```hcl137# modules/worker/main.tf138data "cloudflare_zone" "main" {139name = var.domain140}141142resource "cloudflare_worker_route" "api" {143zone_id = data.cloudflare_zone.main.id144pattern = "api.${var.domain}/*"145script_name = cloudflare_worker_script.api.name146}147```148149### Output Important Values150151```hcl152output "zone_id" {153value = cloudflare_zone.main.id154description = "Zone ID for DNS management"155}156157output "worker_url" {158value = "https://${cloudflare_worker_domain.api.hostname}"159description = "Worker API endpoint"160}161162output "kv_namespace_id" {163value = cloudflare_workers_kv_namespace.app.id164sensitive = false165}166167output "name_servers" {168value = cloudflare_zone.main.name_servers169description = "Name servers for domain registration"170}171```172173## See Also174175- [README](./README.md) - Provider setup176- [Configuration Reference](./configuration.md) - All resource types177- [Patterns](./patterns.md) - Architecture patterns178- [Troubleshooting](./gotchas.md) - Common issues179