Files
fission-console/examples/big-suite/functions_services.tf
T
Naeel 01df1498d6 feat: big-suite terraform example + provider nodejs zip fix
- 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
2026-04-20 11:38:45 +03:00

86 lines
3.5 KiB
Terraform

# ──────────────────────────────────────────────────────────────────────────────
# Services layer: user-get, product-catalog, cart-service
#
# user-get — depends_on auth-check (нужно что auth маршрут доступен)
# product-catalog — depends_on rate-limiter
# cart-service — depends_on ОБОИХ: user-get + product-catalog
# (cart нужны оба сервиса — деплой только когда оба готовы)
# ──────────────────────────────────────────────────────────────────────────────
# ─── user-get ─────────────────────────────────────────────────────────────────
resource "fission_package" "user_get" {
name = "ecom-user-get-pkg"
environment = fission_environment.python.name
source_dir = "${path.module}/code/python-user"
depends_on = [fission_http_trigger.auth_check]
}
resource "fission_function" "user_get" {
name = "ecom-user-get"
environment = fission_environment.python.name
package_name = fission_package.user_get.name
entrypoint = "main.main"
}
resource "fission_http_trigger" "user_get" {
name = "ecom-user-get-route"
function = fission_function.user_get.name
url = "/ecom/users"
methods = ["GET"]
}
# ─── product-catalog ──────────────────────────────────────────────────────────
resource "fission_package" "product_catalog" {
name = "ecom-product-catalog-pkg"
environment = fission_environment.ruby.name
source_dir = "${path.module}/code/ruby-product"
depends_on = [fission_http_trigger.rate_limiter]
}
resource "fission_function" "product_catalog" {
name = "ecom-product-catalog"
environment = fission_environment.ruby.name
package_name = fission_package.product_catalog.name
entrypoint = "handler"
}
resource "fission_http_trigger" "product_catalog" {
name = "ecom-product-catalog-route"
function = fission_function.product_catalog.name
url = "/ecom/products"
methods = ["GET"]
}
# ─── cart-service ─────────────────────────────────────────────────────────────
# user-get и product-catalog деплоятся ПАРАЛЛЕЛЬНО,
# cart ждёт пока ОБА готовы
resource "fission_package" "cart_service" {
name = "ecom-cart-service-pkg"
environment = fission_environment.python.name
source_dir = "${path.module}/code/python-cart"
depends_on = [
fission_http_trigger.user_get,
fission_http_trigger.product_catalog,
]
}
resource "fission_function" "cart_service" {
name = "ecom-cart-service"
environment = fission_environment.python.name
package_name = fission_package.cart_service.name
entrypoint = "main.main"
}
resource "fission_http_trigger" "cart_service" {
name = "ecom-cart-service-route"
function = fission_function.cart_service.name
url = "/ecom/cart"
methods = ["GET", "POST", "DELETE"]
}