- 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
60 lines
2.6 KiB
Terraform
60 lines
2.6 KiB
Terraform
# ──────────────────────────────────────────────────────────────────────────────
|
|
# Async layer: notifier (ruby) + report-daily (go)
|
|
#
|
|
# Обе функции depends_on order-create — запускаются ПАРАЛЛЕЛЬНО между собой,
|
|
# но только после того как order-create (Go) задеплоен.
|
|
# Моделируют async side-effects после создания заказа.
|
|
# ──────────────────────────────────────────────────────────────────────────────
|
|
|
|
# ─── notifier ─────────────────────────────────────────────────────────────────
|
|
|
|
resource "fission_package" "notifier" {
|
|
name = "ecom-notifier-pkg"
|
|
environment = fission_environment.ruby.name
|
|
source_dir = "${path.module}/code/ruby-notifier"
|
|
|
|
depends_on = [fission_http_trigger.order_create]
|
|
}
|
|
|
|
resource "fission_function" "notifier" {
|
|
name = "ecom-notifier"
|
|
environment = fission_environment.ruby.name
|
|
package_name = fission_package.notifier.name
|
|
entrypoint = "handler"
|
|
}
|
|
|
|
resource "fission_http_trigger" "notifier" {
|
|
name = "ecom-notifier-route"
|
|
function = fission_function.notifier.name
|
|
url = "/ecom/notify"
|
|
methods = ["POST"]
|
|
}
|
|
|
|
# ─── report-daily (Go) ────────────────────────────────────────────────────────
|
|
# Второй Go-пакет — использует тот же ecom-go-env.
|
|
# Билдится параллельно с notifier, но после order-create.
|
|
|
|
resource "fission_package" "report_daily" {
|
|
name = "ecom-report-daily-pkg"
|
|
environment = fission_environment.go.name
|
|
source_dir = "${path.module}/code/go-report"
|
|
deploy_type = "source"
|
|
build_command = "build"
|
|
|
|
depends_on = [fission_http_trigger.order_create]
|
|
}
|
|
|
|
resource "fission_function" "report_daily" {
|
|
name = "ecom-report-daily"
|
|
environment = fission_environment.go.name
|
|
package_name = fission_package.report_daily.name
|
|
entrypoint = "Handler"
|
|
}
|
|
|
|
resource "fission_http_trigger" "report_daily" {
|
|
name = "ecom-report-daily-route"
|
|
function = fission_function.report_daily.name
|
|
url = "/ecom/reports/daily"
|
|
methods = ["GET"]
|
|
}
|