- examples/big-suite: E-Commerce 10 functions, 6 layers, real depends_on - provider: nodejs packages now wrapped in ESM zip (buildJSDeployZip) - provider: loadPackageLiteral reads raw file, nodejs zip via source_dir - all 10 functions verified working: python/node/ruby/go runtimes
62 lines
2.8 KiB
Terraform
62 lines
2.8 KiB
Terraform
# ──────────────────────────────────────────────────────────────────────────────
|
|
# Checkout layer: payment-validate (node) → order-create (go)
|
|
#
|
|
# payment-validate — depends_on cart-service
|
|
# order-create — depends_on payment-validate
|
|
# Go builder не запускается пока checkout chain не готов.
|
|
# Самый долгий шаг (~40s на сборку) — намеренно в конце.
|
|
# ──────────────────────────────────────────────────────────────────────────────
|
|
|
|
# ─── payment-validate ─────────────────────────────────────────────────────────
|
|
|
|
resource "fission_package" "payment_validate" {
|
|
name = "ecom-payment-validate-pkg"
|
|
environment = fission_environment.node.name
|
|
source_dir = "${path.module}/code/node-payment"
|
|
|
|
depends_on = [fission_http_trigger.cart_service]
|
|
}
|
|
|
|
resource "fission_function" "payment_validate" {
|
|
name = "ecom-payment-validate"
|
|
environment = fission_environment.node.name
|
|
package_name = fission_package.payment_validate.name
|
|
entrypoint = "main"
|
|
}
|
|
|
|
resource "fission_http_trigger" "payment_validate" {
|
|
name = "ecom-payment-validate-route"
|
|
function = fission_function.payment_validate.name
|
|
url = "/ecom/payment/validate"
|
|
methods = ["POST"]
|
|
}
|
|
|
|
# ─── order-create (Go) ────────────────────────────────────────────────────────
|
|
# Go builder pipeline: source zip → go-builder → .so плагин
|
|
# Намеренно в самом конце — запускать тяжёлый builder только когда весь
|
|
# checkout chain гарантированно развёрнут
|
|
|
|
resource "fission_package" "order_create" {
|
|
name = "ecom-order-create-pkg"
|
|
environment = fission_environment.go.name
|
|
source_dir = "${path.module}/code/go-order"
|
|
deploy_type = "source"
|
|
build_command = "build"
|
|
|
|
depends_on = [fission_http_trigger.payment_validate]
|
|
}
|
|
|
|
resource "fission_function" "order_create" {
|
|
name = "ecom-order-create"
|
|
environment = fission_environment.go.name
|
|
package_name = fission_package.order_create.name
|
|
entrypoint = "Handler"
|
|
}
|
|
|
|
resource "fission_http_trigger" "order_create" {
|
|
name = "ecom-order-create-route"
|
|
function = fission_function.order_create.name
|
|
url = "/ecom/orders"
|
|
methods = ["POST"]
|
|
}
|