From 1e82289e81d0dff15e8e1fcbd4369b03987f45a6 Mon Sep 17 00:00:00 2001 From: Jason Hall Date: Sat, 12 Aug 2023 10:22:54 -0400 Subject: [PATCH] add cloudflare worker example Signed-off-by: Jason Hall --- .gitignore | 2 ++ cf-worker/main.tf | 54 +++++++++++++++++++++++++++++++++++++++++++++ cf-worker/script.js | 6 +++++ 3 files changed, 62 insertions(+) create mode 100644 cf-worker/main.tf create mode 100644 cf-worker/script.js diff --git a/.gitignore b/.gitignore index 7aaba9c..1a2d68d 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ terraform.tfstate.backup terraform.tfstate.*.backup .terraform.tfstate.lock.* .terraform.lock.hcl + +terraform.tfvars diff --git a/cf-worker/main.tf b/cf-worker/main.tf new file mode 100644 index 0000000..3605f49 --- /dev/null +++ b/cf-worker/main.tf @@ -0,0 +1,54 @@ +terraform { + required_providers { + cloudflare = { source = "cloudflare/cloudflare" } + } +} + +variable "name" { type = string } +variable "cloudflare_zone" { type = string } +variable "cloudflare_api_token" { type = string } +variable "cloudflare_account_id" { type = string } + +provider "cloudflare" { + api_token = var.cloudflare_api_token +} + +// TODO: need to manually enable the workers.dev route in the dashboard +// use cloudflare_worker_route instead to set up routing +resource "cloudflare_worker_script" "script" { + account_id = var.cloudflare_account_id + name = var.name + content = file("script.js") + + kv_namespace_binding { + name = "KV" + namespace_id = cloudflare_workers_kv_namespace.kv_ns.id + } +} + + +/* +resource "cloudflare_worker_route" "route" { + zone_id = data.cloudflare_zone.zone.id + pattern = "${var.name}.${var.cloudflare_zone}/*" + script_name = cloudflare_worker_script.script.name +} + +data "cloudflare_zone" "zone" { + name = var.cloudflare_zone +} +*/ + +resource "cloudflare_workers_kv_namespace" "kv_ns" { + account_id = var.cloudflare_account_id + title = "${var.name}-namespace" +} + +// Set a value. +resource "cloudflare_workers_kv" "kv" { + account_id = var.cloudflare_account_id + namespace_id = cloudflare_workers_kv_namespace.kv_ns.id + key = "foo" + value = "bar" +} + diff --git a/cf-worker/script.js b/cf-worker/script.js new file mode 100644 index 0000000..504078c --- /dev/null +++ b/cf-worker/script.js @@ -0,0 +1,6 @@ +addEventListener("fetch", (event) => { + console.log("Hello from the service worker!"); + let value = KV.get("foo"); + event.respondWith(new Response(value, + { headers: { "content-type": "text/plain" } })); +});