terraform { required_providers { fission = { source = "nail/fission" version = "~> 0.1.0" } } } provider "fission" { kubeconfig_path = "/home/naeel/.kube/config" namespace = "default" } resource "fission_environment" "python" { name = "tf-auto-env" image = "ghcr.io/fission/python-env" version = 3 } # ok function resource "fission_package" "ok" { name = "tf-auto-ok-pkg" environment = fission_environment.python.name source_dir = "${path.module}/code/ok" code_hash = "v2" } resource "fission_function" "ok" { name = "tf-auto-ok-fn" environment = fission_environment.python.name package_name = fission_package.ok.name entrypoint = "main.main" } resource "fission_http_trigger" "ok" { name = "tf-auto-ok-route" function = fission_function.ok.name url = "/auto/ok" methods = ["GET"] } # echo function resource "fission_package" "echo" { name = "tf-auto-echo-pkg" environment = fission_environment.python.name source_dir = "${path.module}/code/echo" } resource "fission_function" "echo" { name = "tf-auto-echo-fn" environment = fission_environment.python.name package_name = fission_package.echo.name entrypoint = "main.main" } resource "fission_http_trigger" "echo" { name = "tf-auto-echo-route" function = fission_function.echo.name url = "/auto/echo" methods = ["GET"] } # error function resource "fission_package" "error" { name = "tf-auto-error-pkg" environment = fission_environment.python.name source_dir = "${path.module}/code/error" } resource "fission_function" "error" { name = "tf-auto-error-fn" environment = fission_environment.python.name package_name = fission_package.error.name entrypoint = "main.main" } resource "fission_http_trigger" "error" { name = "tf-auto-error-route" function = fission_function.error.name url = "/auto/error" methods = ["GET"] } # cpu function resource "fission_package" "cpu" { name = "tf-auto-cpu-pkg" environment = fission_environment.python.name source_dir = "${path.module}/code/cpu" } resource "fission_function" "cpu" { name = "tf-auto-cpu-fn" environment = fission_environment.python.name package_name = fission_package.cpu.name entrypoint = "main.main" } resource "fission_http_trigger" "cpu" { name = "tf-auto-cpu-route" function = fission_function.cpu.name url = "/auto/cpu" methods = ["GET"] } # slow function resource "fission_package" "slow" { name = "tf-auto-slow-pkg" environment = fission_environment.python.name source_dir = "${path.module}/code/slow" } resource "fission_function" "slow" { name = "tf-auto-slow-fn" environment = fission_environment.python.name package_name = fission_package.slow.name entrypoint = "main.main" } resource "fission_http_trigger" "slow" { name = "tf-auto-slow-route" function = fission_function.slow.name url = "/auto/slow" methods = ["GET"] } # --- BATCH 2 --- # jsonout: возвращает сложный JSON resource "fission_package" "jsonout" { name = "tf-auto-jsonout-pkg" environment = fission_environment.python.name source_dir = "${path.module}/code/jsonout" } resource "fission_function" "jsonout" { name = "tf-auto-jsonout-fn" environment = fission_environment.python.name package_name = fission_package.jsonout.name entrypoint = "main.main" } resource "fission_http_trigger" "jsonout" { name = "tf-auto-jsonout-route" function = fission_function.jsonout.name url = "/auto/jsonout" methods = ["GET"] } # recurse: рекурсивный Фибоначчи (нагрузка на стек) resource "fission_package" "recurse" { name = "tf-auto-recurse-pkg" environment = fission_environment.python.name source_dir = "${path.module}/code/recurse" } resource "fission_function" "recurse" { name = "tf-auto-recurse-fn" environment = fission_environment.python.name package_name = fission_package.recurse.name entrypoint = "main.main" } resource "fission_http_trigger" "recurse" { name = "tf-auto-recurse-route" function = fission_function.recurse.name url = "/auto/recurse" methods = ["GET"] } # bigdata: большой ответ (~45KB текста) resource "fission_package" "bigdata" { name = "tf-auto-bigdata-pkg" environment = fission_environment.python.name source_dir = "${path.module}/code/bigdata" } resource "fission_function" "bigdata" { name = "tf-auto-bigdata-fn" environment = fission_environment.python.name package_name = fission_package.bigdata.name entrypoint = "main.main" } resource "fission_http_trigger" "bigdata" { name = "tf-auto-bigdata-route" function = fission_function.bigdata.name url = "/auto/bigdata" methods = ["GET"] } # math: математические вычисления resource "fission_package" "math" { name = "tf-auto-math-pkg" environment = fission_environment.python.name source_dir = "${path.module}/code/math" } resource "fission_function" "math" { name = "tf-auto-math-fn" environment = fission_environment.python.name package_name = fission_package.math.name entrypoint = "main.main" } resource "fission_http_trigger" "math" { name = "tf-auto-math-route" function = fission_function.math.name url = "/auto/math" methods = ["GET"] } # timestamp: текущее время UTC resource "fission_package" "timestamp" { name = "tf-auto-timestamp-pkg" environment = fission_environment.python.name source_dir = "${path.module}/code/timestamp" } resource "fission_function" "timestamp" { name = "tf-auto-timestamp-fn" environment = fission_environment.python.name package_name = fission_package.timestamp.name entrypoint = "main.main" } resource "fission_http_trigger" "timestamp" { name = "tf-auto-timestamp-route" function = fission_function.timestamp.name url = "/auto/timestamp" methods = ["GET"] } # --- BATCH 3 --- # multiline: многострочный вывод с кириллицей resource "fission_package" "multiline" { name = "tf-auto-multiline-pkg" environment = fission_environment.python.name source_dir = "${path.module}/code/multiline" } resource "fission_function" "multiline" { name = "tf-auto-multiline-fn" environment = fission_environment.python.name package_name = fission_package.multiline.name entrypoint = "main.main" } resource "fission_http_trigger" "multiline" { name = "tf-auto-multiline-route" function = fission_function.multiline.name url = "/auto/multiline" methods = ["GET"] } # encoding: unicode/emoji/кириллица/китайский resource "fission_package" "encoding" { name = "tf-auto-encoding-pkg" environment = fission_environment.python.name source_dir = "${path.module}/code/encoding" } resource "fission_function" "encoding" { name = "tf-auto-encoding-fn" environment = fission_environment.python.name package_name = fission_package.encoding.name entrypoint = "main.main" } resource "fission_http_trigger" "encoding" { name = "tf-auto-encoding-route" function = fission_function.encoding.name url = "/auto/encoding" methods = ["GET"] } # nested: вложенные try/except resource "fission_package" "nested" { name = "tf-auto-nested-pkg" environment = fission_environment.python.name source_dir = "${path.module}/code/nested" } resource "fission_function" "nested" { name = "tf-auto-nested-fn" environment = fission_environment.python.name package_name = fission_package.nested.name entrypoint = "main.main" } resource "fission_http_trigger" "nested" { name = "tf-auto-nested-route" function = fission_function.nested.name url = "/auto/nested" methods = ["GET"] } # memory: аллокация памяти (500k элементов) resource "fission_package" "memory" { name = "tf-auto-memory-pkg" environment = fission_environment.python.name source_dir = "${path.module}/code/memory" } resource "fission_function" "memory" { name = "tf-auto-memory-fn" environment = fission_environment.python.name package_name = fission_package.memory.name entrypoint = "main.main" } resource "fission_http_trigger" "memory" { name = "tf-auto-memory-route" function = fission_function.memory.name url = "/auto/memory" methods = ["GET"] } # chain: хеш-цепочка (имитация блокчейна) resource "fission_package" "chain" { name = "tf-auto-chain-pkg" environment = fission_environment.python.name source_dir = "${path.module}/code/chain" } resource "fission_function" "chain" { name = "tf-auto-chain-fn" environment = fission_environment.python.name package_name = fission_package.chain.name entrypoint = "main.main" } resource "fission_http_trigger" "chain" { name = "tf-auto-chain-route" function = fission_function.chain.name url = "/auto/chain" methods = ["GET"] }