@stacksjs/ts-cloud 0.12.1 → 0.12.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/dist/aws/index.js +1 -1
  2. package/dist/bin/chunk-0zwknfwp.js +1 -0
  3. package/dist/bin/chunk-3aph4c1w.js +2 -0
  4. package/dist/bin/{chunk-5bhx3bsa.js → chunk-4q6tad44.js} +121 -121
  5. package/dist/bin/chunk-5nkqza92.js +1 -0
  6. package/dist/bin/chunk-64vczwwt.js +1 -0
  7. package/dist/bin/chunk-6tfwm33r.js +6 -0
  8. package/dist/bin/chunk-71t1gmsq.js +1 -0
  9. package/dist/bin/chunk-7g2ahkse.js +1 -0
  10. package/dist/bin/chunk-7zhgmp1s.js +3 -0
  11. package/dist/bin/chunk-82mj52xr.js +141 -0
  12. package/dist/bin/chunk-8ewncfce.js +37 -0
  13. package/dist/bin/chunk-9a88fp00.js +2 -0
  14. package/dist/bin/chunk-9kf0np8j.js +44 -0
  15. package/dist/bin/chunk-9rb23kz9.js +1 -0
  16. package/dist/bin/chunk-a7w13qfm.js +2 -0
  17. package/dist/bin/chunk-b4wt9jcg.js +60 -0
  18. package/dist/bin/chunk-btsyjhk7.js +92 -0
  19. package/dist/bin/chunk-c0bdafbx.js +2 -0
  20. package/dist/bin/chunk-cd0ps58j.js +1 -0
  21. package/dist/bin/chunk-cxt74wsj.js +1 -0
  22. package/dist/bin/chunk-d7ke90zt.js +2 -0
  23. package/dist/bin/chunk-djg4zyqk.js +1 -0
  24. package/dist/bin/chunk-dkaz333b.js +1 -0
  25. package/dist/bin/chunk-dkf4qsp2.js +1 -0
  26. package/dist/bin/{chunk-scqmd4qv.js → chunk-dz1ec589.js} +30 -30
  27. package/dist/bin/chunk-e2bybahr.js +3 -0
  28. package/dist/bin/chunk-e5ab5twy.js +50 -0
  29. package/dist/bin/chunk-edvvx3hg.js +1 -0
  30. package/dist/bin/chunk-ehc63fvs.js +2 -0
  31. package/dist/bin/chunk-f06c5np9.js +1 -0
  32. package/dist/bin/chunk-gq8794k6.js +1 -0
  33. package/dist/bin/chunk-hq9x489e.js +70 -0
  34. package/dist/bin/chunk-ja1vjdn1.js +6 -0
  35. package/dist/bin/chunk-k3120rx6.js +1 -0
  36. package/dist/bin/chunk-kg61p5hw.js +3 -0
  37. package/dist/bin/chunk-mcr0r4at.js +2 -0
  38. package/dist/bin/chunk-mfrf9q4b.js +2 -0
  39. package/dist/bin/chunk-my3ewh3a.js +34 -0
  40. package/dist/bin/chunk-nw3d4k52.js +1 -0
  41. package/dist/bin/chunk-p70bc9yr.js +1 -0
  42. package/dist/bin/chunk-pp2m8q55.js +512 -0
  43. package/dist/bin/chunk-q5cmfpzt.js +1 -0
  44. package/dist/bin/chunk-rtecnmts.js +4 -0
  45. package/dist/bin/chunk-s2grgcpy.js +590 -0
  46. package/dist/bin/chunk-s4yzes15.js +2 -0
  47. package/dist/bin/chunk-sj5csg49.js +2 -0
  48. package/dist/bin/chunk-tfbs8k8v.js +111 -0
  49. package/dist/bin/chunk-tvz9c388.js +1 -0
  50. package/dist/bin/{chunk-9vdc7adf.js → chunk-w32xv8n4.js} +6 -6
  51. package/dist/bin/chunk-x6f61g36.js +9 -0
  52. package/dist/bin/chunk-xhwqpgwq.js +2 -0
  53. package/dist/bin/chunk-xk08030d.js +6 -0
  54. package/dist/bin/chunk-xkfrqqcs.js +1 -0
  55. package/dist/bin/chunk-y1h63vpm.js +1 -0
  56. package/dist/bin/chunk-zdt2rjk6.js +1 -0
  57. package/dist/bin/chunk-zh2d4704.js +1 -0
  58. package/dist/bin/chunk-zpe64t4r.js +1 -0
  59. package/dist/bin/cli.js +435 -444
  60. package/dist/bin/dashboard-server.js +1 -1
  61. package/dist/{chunk-rr1yaj55.js → chunk-13qjvbqh.js} +1 -1
  62. package/dist/chunk-152he7m3.js +92 -0
  63. package/dist/chunk-1qdne0bf.js +1 -0
  64. package/dist/chunk-3mgj3hrh.js +5 -0
  65. package/dist/chunk-3nmm7cap.js +704 -0
  66. package/dist/chunk-6kpbveb8.js +5 -0
  67. package/dist/chunk-73ztr55z.js +2 -0
  68. package/dist/{chunk-y1dh3znq.js → chunk-86ss83s2.js} +52 -52
  69. package/dist/chunk-a84gmpyh.js +1 -0
  70. package/dist/chunk-aj025v2s.js +4 -0
  71. package/dist/chunk-by2bwzk6.js +141 -0
  72. package/dist/chunk-h42zck7h.js +60 -0
  73. package/dist/chunk-hn40z11p.js +37 -0
  74. package/dist/{chunk-6xcbfs2r.js → chunk-jm5mg890.js} +111 -111
  75. package/dist/chunk-m8fs0233.js +34 -0
  76. package/dist/chunk-mz0dk78z.js +6 -0
  77. package/dist/chunk-n514hj0z.js +450 -0
  78. package/dist/chunk-nms5q44e.js +1 -0
  79. package/dist/chunk-qm32ytbr.js +1 -0
  80. package/dist/chunk-t0xgmhd6.js +114 -0
  81. package/dist/chunk-t3t9ymec.js +1 -0
  82. package/dist/chunk-tz9myq9a.js +2 -0
  83. package/dist/chunk-wavjkdb8.js +2 -0
  84. package/dist/chunk-x3hay61c.js +44 -0
  85. package/dist/chunk-xcj8zfmg.js +2 -0
  86. package/dist/chunk-y2v22hkv.js +1 -0
  87. package/dist/chunk-y4xkj2f1.js +50 -0
  88. package/dist/deploy/index.js +1 -1
  89. package/dist/dns/index.js +1 -1
  90. package/dist/drivers/index.js +1 -1
  91. package/dist/drivers/shared/deploy-script.d.ts +85 -0
  92. package/dist/index.js +90 -90
  93. package/dist/protection/index.js +1 -1
  94. package/dist/push/index.js +1 -1
  95. package/dist/spend/index.js +1 -1
  96. package/dist/ui/404.html +2 -2
  97. package/dist/ui/_stx/{router.fa5bc4dc.js → router.229f89ab.js} +1 -1
  98. package/dist/ui/_stx/runtime.dbee66d1.js +1 -0
  99. package/dist/ui/accept-invitation.html +2 -2
  100. package/dist/ui/access-denied.html +1 -1
  101. package/dist/ui/account/automation.html +6 -6
  102. package/dist/ui/account/security.html +2 -2
  103. package/dist/ui/applications/compose.html +6 -6
  104. package/dist/ui/applications/new.html +2 -2
  105. package/dist/ui/data/backups.html +80 -80
  106. package/dist/ui/data/services.html +78 -78
  107. package/dist/ui/data/volumes.html +50 -50
  108. package/dist/ui/index.html +50 -50
  109. package/dist/ui/infrastructure/topology.html +118 -118
  110. package/dist/ui/integrations.html +1 -1
  111. package/dist/ui/operations/alerts.html +48 -48
  112. package/dist/ui/operations/configuration.html +5 -5
  113. package/dist/ui/operations/jobs.html +75 -75
  114. package/dist/ui/operations/maintenance.html +6 -6
  115. package/dist/ui/operations/observability.html +82 -82
  116. package/dist/ui/operations/previews.html +6 -6
  117. package/dist/ui/operations/queue.html +6 -6
  118. package/dist/ui/operations/regions.html +6 -6
  119. package/dist/ui/operations/releases.html +6 -6
  120. package/dist/ui/operations/spend.html +54 -54
  121. package/dist/ui/operations/workloads.html +104 -104
  122. package/dist/ui/security.html +1 -1
  123. package/dist/ui/server/actions.html +56 -56
  124. package/dist/ui/server/activity.html +2 -2
  125. package/dist/ui/server/capacity.html +6 -6
  126. package/dist/ui/server/database.html +105 -105
  127. package/dist/ui/server/deployments.html +50 -50
  128. package/dist/ui/server/diagnostics.html +2 -2
  129. package/dist/ui/server/firewall.html +76 -76
  130. package/dist/ui/server/fleet.html +34 -34
  131. package/dist/ui/server/logs.html +24 -24
  132. package/dist/ui/server/metrics.html +112 -112
  133. package/dist/ui/server/security.html +2 -2
  134. package/dist/ui/server/services.html +27 -27
  135. package/dist/ui/server/sites.html +120 -120
  136. package/dist/ui/server/ssh-keys.html +52 -52
  137. package/dist/ui/server/team.html +144 -144
  138. package/dist/ui/server/terminal.html +15 -15
  139. package/dist/ui/serverless/alarms.html +52 -52
  140. package/dist/ui/serverless/assets.html +28 -28
  141. package/dist/ui/serverless/cost.html +2 -2
  142. package/dist/ui/serverless/data.html +36 -36
  143. package/dist/ui/serverless/deployments.html +28 -28
  144. package/dist/ui/serverless/firewall.html +2 -2
  145. package/dist/ui/serverless/functions.html +40 -40
  146. package/dist/ui/serverless/logs.html +23 -23
  147. package/dist/ui/serverless/metrics.html +2 -2
  148. package/dist/ui/serverless/queues.html +48 -48
  149. package/dist/ui/serverless/secrets.html +52 -52
  150. package/dist/ui/serverless/traces.html +6 -6
  151. package/dist/ui/serverless.html +53 -53
  152. package/dist/ui-src/src/charts.ts +4644 -16118
  153. package/dist/ui-src/src/topology.ts +2 -2
  154. package/package.json +6 -6
  155. package/dist/bin/chunk-0rtn6q5x.js +0 -3
  156. package/dist/bin/chunk-258ehp9s.js +0 -1
  157. package/dist/bin/chunk-2yctv06c.js +0 -1
  158. package/dist/bin/chunk-3276rveh.js +0 -37
  159. package/dist/bin/chunk-3m665jwp.js +0 -70
  160. package/dist/bin/chunk-3s2p9vxj.js +0 -1
  161. package/dist/bin/chunk-4esma5m9.js +0 -1
  162. package/dist/bin/chunk-4n0j3n3b.js +0 -2
  163. package/dist/bin/chunk-54bqchag.js +0 -92
  164. package/dist/bin/chunk-5zagqd20.js +0 -1
  165. package/dist/bin/chunk-7hw2js5h.js +0 -512
  166. package/dist/bin/chunk-8h1qr6x4.js +0 -50
  167. package/dist/bin/chunk-a1dd6sby.js +0 -1
  168. package/dist/bin/chunk-a4dw35gs.js +0 -1
  169. package/dist/bin/chunk-a9d55ker.js +0 -1
  170. package/dist/bin/chunk-awa1qade.js +0 -9
  171. package/dist/bin/chunk-b6by94pk.js +0 -2
  172. package/dist/bin/chunk-c8sypnbe.js +0 -2
  173. package/dist/bin/chunk-cx4e3d4w.js +0 -1
  174. package/dist/bin/chunk-d5a3vheh.js +0 -2
  175. package/dist/bin/chunk-e1fym2bd.js +0 -1
  176. package/dist/bin/chunk-ej4h0q2y.js +0 -1
  177. package/dist/bin/chunk-ett305ym.js +0 -4
  178. package/dist/bin/chunk-f11xf3n6.js +0 -2
  179. package/dist/bin/chunk-fq7ktvgy.js +0 -3
  180. package/dist/bin/chunk-fyq4th2m.js +0 -1
  181. package/dist/bin/chunk-g67qr8yf.js +0 -1
  182. package/dist/bin/chunk-gc82cx4h.js +0 -1
  183. package/dist/bin/chunk-hchtvpr9.js +0 -1
  184. package/dist/bin/chunk-hpe4jjce.js +0 -1
  185. package/dist/bin/chunk-k5vprsef.js +0 -6
  186. package/dist/bin/chunk-m22krd4z.js +0 -3
  187. package/dist/bin/chunk-mkppcwz8.js +0 -1
  188. package/dist/bin/chunk-mpjg0kc7.js +0 -2
  189. package/dist/bin/chunk-mrm4m4dk.js +0 -2
  190. package/dist/bin/chunk-nff46rxd.js +0 -1
  191. package/dist/bin/chunk-np1z3bgt.js +0 -1
  192. package/dist/bin/chunk-nskxkk6r.js +0 -1
  193. package/dist/bin/chunk-pez932b1.js +0 -111
  194. package/dist/bin/chunk-qsdf5kzk.js +0 -2
  195. package/dist/bin/chunk-r61qmhv1.js +0 -2
  196. package/dist/bin/chunk-r6gdcz5c.js +0 -1
  197. package/dist/bin/chunk-satwnr42.js +0 -2
  198. package/dist/bin/chunk-smbycpt5.js +0 -44
  199. package/dist/bin/chunk-sn7e0sn7.js +0 -2
  200. package/dist/bin/chunk-ss574pka.js +0 -1
  201. package/dist/bin/chunk-tj0xb2d8.js +0 -585
  202. package/dist/bin/chunk-v3rzf9d0.js +0 -141
  203. package/dist/bin/chunk-wnpma6t3.js +0 -34
  204. package/dist/bin/chunk-xan0e052.js +0 -5
  205. package/dist/bin/chunk-xbk2y43r.js +0 -60
  206. package/dist/bin/chunk-xjp3v95e.js +0 -6
  207. package/dist/bin/chunk-xyt490vp.js +0 -6
  208. package/dist/bin/chunk-yn9r02gy.js +0 -1
  209. package/dist/bin/chunk-zhkhn9cc.js +0 -1
  210. package/dist/chunk-0zf72ngj.js +0 -1
  211. package/dist/chunk-2hpjte1d.js +0 -704
  212. package/dist/chunk-4m6gwhwr.js +0 -5
  213. package/dist/chunk-5m29dhke.js +0 -34
  214. package/dist/chunk-6fzeemcs.js +0 -114
  215. package/dist/chunk-bpnhqb70.js +0 -6
  216. package/dist/chunk-ead1nkbr.js +0 -60
  217. package/dist/chunk-fea461tj.js +0 -141
  218. package/dist/chunk-fvjczc73.js +0 -1
  219. package/dist/chunk-gearw6rk.js +0 -4
  220. package/dist/chunk-j60hesb3.js +0 -2
  221. package/dist/chunk-pmgtmt3d.js +0 -1
  222. package/dist/chunk-prf2pkvq.js +0 -5
  223. package/dist/chunk-q0wffgw5.js +0 -37
  224. package/dist/chunk-qcemnt35.js +0 -50
  225. package/dist/chunk-qvbwsaay.js +0 -1
  226. package/dist/chunk-r2pbqcnz.js +0 -2
  227. package/dist/chunk-r6110zv2.js +0 -1
  228. package/dist/chunk-wcrj06cg.js +0 -44
  229. package/dist/chunk-wte9mh18.js +0 -92
  230. package/dist/chunk-y6e86wjs.js +0 -445
  231. package/dist/chunk-y8b7ht4v.js +0 -1
  232. package/dist/chunk-yf487g6e.js +0 -2
  233. package/dist/chunk-zmmc9j5f.js +0 -2
  234. package/dist/ui/_stx/runtime.c696d17a.js +0 -1
@@ -1,33 +1,33 @@
1
- <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mt7lgvq3gjbx1h"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"> <script data-stx-runtime src="/_stx/runtime.c696d17a.js"></script> <script data-stx-composables src="/_stx/chunk.9fd39d5b.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud · Alarms</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"> <script data-stx-scoped>
2
- function __stx_setup_1787597624511_25() {
1
+ <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mt9ag411j9wvnd"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"> <script data-stx-runtime src="/_stx/runtime.dbee66d1.js"></script> <script data-stx-composables src="/_stx/chunk.9fd39d5b.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud · Alarms</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"> <script data-stx-scoped>
2
+ function __stx_setup_1787700043912_26() {
3
3
  const { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
4
4
 
5
5
  var initialAlarms = [{"AlarmName":"acme-production-http-errors","StateValue":"OK","MetricName":"Errors","ComparisonOperator":"GreaterThanThreshold","Threshold":5,"Namespace":"AWS/Lambda"},{"AlarmName":"acme-production-http-p95","StateValue":"ALARM","MetricName":"Duration","ComparisonOperator":"GreaterThanThreshold","Threshold":500,"Namespace":"AWS/Lambda"},{"AlarmName":"acme-production-queue-throttles","StateValue":"INSUFFICIENT_DATA","MetricName":"Throttles","ComparisonOperator":"GreaterThanThreshold","Threshold":1,"Namespace":"AWS/Lambda"}];
6
6
  var initialPresets = [{"key":"errors","label":"Function errors","unit":"count"},{"key":"p95","label":"p95 latency (ms)","unit":"ms"},{"key":"throttles","label":"Throttles","unit":"count"},{"key":"concurrency","label":"Concurrent executions","unit":"count"}];
7
7
 
8
- var typed = undefined;
9
- var toneOf = undefined;
10
- var threshold = undefined;
11
- var runOp = undefined;
12
- var rows = undefined;
13
- var refresh = undefined;
14
- var presets = undefined;
15
- var preset = undefined;
16
- var pending = undefined;
17
- var opShown = undefined;
18
- var opOutput = undefined;
19
- var msgOk = undefined;
20
- var msg = undefined;
21
- var createAlarm = undefined;
22
- var confirmVerb = undefined;
23
- var confirmTok = undefined;
24
- var confirmLabel = undefined;
25
- var confirmDanger = undefined;
26
- var cancelOp = undefined;
27
- var canRun = undefined;
28
- var busy = undefined;
29
- var askOp = undefined;
30
8
  var askDelete = undefined;
9
+ var askOp = undefined;
10
+ var busy = undefined;
11
+ var canRun = undefined;
12
+ var cancelOp = undefined;
13
+ var confirmDanger = undefined;
14
+ var confirmLabel = undefined;
15
+ var confirmTok = undefined;
16
+ var confirmVerb = undefined;
17
+ var createAlarm = undefined;
18
+ var msg = undefined;
19
+ var msgOk = undefined;
20
+ var opOutput = undefined;
21
+ var opShown = undefined;
22
+ var pending = undefined;
23
+ var preset = undefined;
24
+ var presets = undefined;
25
+ var refresh = undefined;
26
+ var rows = undefined;
27
+ var runOp = undefined;
28
+ var threshold = undefined;
29
+ var toneOf = undefined;
30
+ var typed = undefined;
31
31
  var __stxBundle_dd9a8443d833 = (function() {
32
32
 
33
33
  var DANGEROUS_OPERATION = /(?:^|:)(?:delete|disable|destroy|purge|remove|restore|rollback|stop)(?::|$)/i;
@@ -166,36 +166,36 @@ async function createAlarm() {
166
166
  function askDelete(name) {
167
167
  askOp("alarm:delete:" + name, name, "delete alarm " + name, null, name, { name, danger: true, label: "Delete alarm" });
168
168
  }
169
- return { "typed": typed, "toneOf": toneOf, "threshold": threshold, "runOp": runOp, "rows": rows, "refresh": refresh, "presets": presets, "preset": preset, "pending": pending, "opShown": opShown, "opOutput": opOutput, "msgOk": msgOk, "msg": msg, "createAlarm": createAlarm, "confirmVerb": confirmVerb, "confirmTok": confirmTok, "confirmLabel": confirmLabel, "confirmDanger": confirmDanger, "cancelOp": cancelOp, "canRun": canRun, "busy": busy, "askOp": askOp, "askDelete": askDelete };
169
+ return { "askDelete": askDelete, "askOp": askOp, "busy": busy, "canRun": canRun, "cancelOp": cancelOp, "confirmDanger": confirmDanger, "confirmLabel": confirmLabel, "confirmTok": confirmTok, "confirmVerb": confirmVerb, "createAlarm": createAlarm, "msg": msg, "msgOk": msgOk, "opOutput": opOutput, "opShown": opShown, "pending": pending, "preset": preset, "presets": presets, "refresh": refresh, "rows": rows, "runOp": runOp, "threshold": threshold, "toneOf": toneOf, "typed": typed };
170
170
  })();
171
- typed = __stxBundle_dd9a8443d833["typed"];
172
- toneOf = __stxBundle_dd9a8443d833["toneOf"];
173
- threshold = __stxBundle_dd9a8443d833["threshold"];
174
- runOp = __stxBundle_dd9a8443d833["runOp"];
175
- rows = __stxBundle_dd9a8443d833["rows"];
176
- refresh = __stxBundle_dd9a8443d833["refresh"];
177
- presets = __stxBundle_dd9a8443d833["presets"];
178
- preset = __stxBundle_dd9a8443d833["preset"];
179
- pending = __stxBundle_dd9a8443d833["pending"];
180
- opShown = __stxBundle_dd9a8443d833["opShown"];
181
- opOutput = __stxBundle_dd9a8443d833["opOutput"];
182
- msgOk = __stxBundle_dd9a8443d833["msgOk"];
183
- msg = __stxBundle_dd9a8443d833["msg"];
184
- createAlarm = __stxBundle_dd9a8443d833["createAlarm"];
185
- confirmVerb = __stxBundle_dd9a8443d833["confirmVerb"];
186
- confirmTok = __stxBundle_dd9a8443d833["confirmTok"];
187
- confirmLabel = __stxBundle_dd9a8443d833["confirmLabel"];
188
- confirmDanger = __stxBundle_dd9a8443d833["confirmDanger"];
189
- cancelOp = __stxBundle_dd9a8443d833["cancelOp"];
190
- canRun = __stxBundle_dd9a8443d833["canRun"];
191
- busy = __stxBundle_dd9a8443d833["busy"];
192
- askOp = __stxBundle_dd9a8443d833["askOp"];
193
171
  askDelete = __stxBundle_dd9a8443d833["askDelete"];
194
- return { typed, toneOf, threshold, runOp, rows, refresh, presets, preset, pending, opShown, opOutput, msgOk, msg, createAlarm, confirmVerb, confirmTok, confirmLabel, confirmDanger, cancelOp, canRun, busy, askOp, askDelete, __stxBundle_dd9a8443d833 };
172
+ askOp = __stxBundle_dd9a8443d833["askOp"];
173
+ busy = __stxBundle_dd9a8443d833["busy"];
174
+ canRun = __stxBundle_dd9a8443d833["canRun"];
175
+ cancelOp = __stxBundle_dd9a8443d833["cancelOp"];
176
+ confirmDanger = __stxBundle_dd9a8443d833["confirmDanger"];
177
+ confirmLabel = __stxBundle_dd9a8443d833["confirmLabel"];
178
+ confirmTok = __stxBundle_dd9a8443d833["confirmTok"];
179
+ confirmVerb = __stxBundle_dd9a8443d833["confirmVerb"];
180
+ createAlarm = __stxBundle_dd9a8443d833["createAlarm"];
181
+ msg = __stxBundle_dd9a8443d833["msg"];
182
+ msgOk = __stxBundle_dd9a8443d833["msgOk"];
183
+ opOutput = __stxBundle_dd9a8443d833["opOutput"];
184
+ opShown = __stxBundle_dd9a8443d833["opShown"];
185
+ pending = __stxBundle_dd9a8443d833["pending"];
186
+ preset = __stxBundle_dd9a8443d833["preset"];
187
+ presets = __stxBundle_dd9a8443d833["presets"];
188
+ refresh = __stxBundle_dd9a8443d833["refresh"];
189
+ rows = __stxBundle_dd9a8443d833["rows"];
190
+ runOp = __stxBundle_dd9a8443d833["runOp"];
191
+ threshold = __stxBundle_dd9a8443d833["threshold"];
192
+ toneOf = __stxBundle_dd9a8443d833["toneOf"];
193
+ typed = __stxBundle_dd9a8443d833["typed"];
194
+ return { askDelete, askOp, busy, canRun, cancelOp, confirmDanger, confirmLabel, confirmTok, confirmVerb, createAlarm, msg, msgOk, opOutput, opShown, pending, preset, presets, refresh, rows, runOp, threshold, toneOf, typed, __stxBundle_dd9a8443d833 };
195
195
  }
196
- window.__stx_latestSetup=__stx_setup_1787597624511_25;
197
- if(window.stx)window.stx._latestSetup=__stx_setup_1787597624511_25;
198
- </script> <style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.906ee17c.css"></head><body data-stx="__stx_setup_1787597624511_25"><a data-stx-scope="stx_scope_nav_33" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>acme</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="" href="/operations/jobs?env=production">Workers & schedules</a><a class="" href="/operations/configuration?env=production">Environment &amp; secrets</a><a class="" href="/data/backups?env=production">Backups &amp; recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>acme</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
196
+ window.__stx_latestSetup=__stx_setup_1787700043912_26;
197
+ if(window.stx)window.stx._latestSetup=__stx_setup_1787700043912_26;
198
+ </script> <style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.906ee17c.css"></head><body data-stx="__stx_setup_1787700043912_26"><a data-stx-scope="stx_scope_nav_37" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>acme</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="" href="/operations/jobs?env=production">Workers & schedules</a><a class="" href="/operations/configuration?env=production">Environment &amp; secrets</a><a class="" href="/data/backups?env=production">Backups &amp; recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>acme</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
199
199
  (function() {
200
200
  var { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, refresh, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
201
201
  var __destroyHooks = [];
@@ -546,6 +546,6 @@ if(window.stx)window.stx._latestSetup=__stx_setup_1787597624511_25;
546
546
 
547
547
 
548
548
  try { if (typeof __stxScopeRenames !== 'undefined' && __stxScopeRenames) { for (var __stxRK in __stxScopeRenames) __scopeRegistration[__stxRK] = __stxScopeRenames[__stxRK]; } } catch (e) { /* no renames */ }
549
- window.stx._scopes['stx_scope_nav_33'] = __scopeRegistration;
549
+ window.stx._scopes['stx_scope_nav_37'] = __scopeRegistration;
550
550
  })();
551
551
  </script> <div class="wrap"><div class="crumbs"><a href="/serverless">Serverless</a><span class="sep">/</span> Alarms</div><header class="page"><div><h1>Alarms</h1><p>Arm CloudWatch alarms on function metrics so a paging error rate or latency spike notifies you before customers do.</p></div></header><div class="section"><div class="panel"><table><thead><tr><th scope="col">Alarm</th><th scope="col">Metric</th><th scope="col">Condition</th><th scope="col">State</th><th scope="col" class="table-actions">Actions</th></tr></thead><tbody><template :for="a in rows()"><tr><td class="mono" x-cloak><b x-cloak>{{ a.AlarmName }}</b></td><td class="mono" style="color:var(--txt3)" x-cloak>{{ a.MetricName }}</td><td class="mono" style="color:var(--txt2)" x-cloak>{{ a.ComparisonOperator }} {{ a.Threshold }}</td><td x-cloak><span class="pill {{ toneOf(a.StateValue) }}" x-cloak>{{ a.StateValue }}</span></td><td class="table-actions"><div class="row-actions" style="justify-content:flex-end"><button class="btn danger sm" type="button" :aria-label="'Delete alarm ' + a.AlarmName" @click="askDelete(a.AlarmName)">Delete</button></div></td></tr></template><tr @show="rows().length === 0" x-cloak><td colspan="5"><div class="compact empty"><strong>No alarms armed</strong><span>Create one below to get notified when a function metric crosses a threshold.</span></div></td></tr></tbody></table><div class="op-confirm panel" @show="pending() !== null" role="group" aria-labelledby="op-confirm-prompt" x-cloak><span id="op-confirm-prompt" x-cloak>Type <b class="mono" x-cloak>{{ confirmTok() }}</b> to {{ confirmVerb() }}:</span><input data-stx-ref="opConfirmInput" class="op-confirm-input" :value="typed()" @input="typed.set($event.target.value)" @keydown.enter="runOp()" placeholder="confirm" autocomplete="off" aria-labelledby="op-confirm-prompt"><button type="button" class="btn sm" :class="{ danger: confirmDanger() }" :disabled="!canRun()" @click="runOp()" x-cloak>{{ confirmLabel() }}</button><button type="button" class="btn ghost sm" :disabled="busy()" @click="cancelOp()">Cancel</button></div><pre class="action-output op-output" @show="opShown()" aria-live="polite" x-cloak>{{ opOutput() }}</pre></div></div><div class="section"><h2>Create alarm</h2><div class="panel"><div class="form-grid"><div class="field-block"><label for="alarm-preset">Metric preset</label><select id="alarm-preset" :value="preset()" @change="preset.set($event.target.value)"><template :for="p in presets()"><option value="{{ p.key }}">{{ p.label }}</option></template></select></div><div class="field-block"><label for="alarm-threshold">Threshold</label><input id="alarm-threshold" type="number" :value="threshold()" @input="threshold.set($event.target.value)" placeholder="5" autocomplete="off"></div><div class="form-actions"><button class="btn" type="button" :disabled="busy()" @click="createAlarm()">Create</button><span class="msg" :class="{ ok: msgOk(), bad: msg() && !msgOk() }" x-cloak>{{ msg() }}</span></div></div><p class="note">Alarms fire when the chosen metric crosses the threshold. Manage them live with <span class="mono">cloud alarms</span>.</p></div></div></div></body></html>
@@ -1,4 +1,4 @@
1
- <script data-stx-runtime src="/_stx/runtime.c696d17a.js"></script> <script data-stx-composables src="/_stx/chunk.9fd39d5b.js"></script> <script data-stx-scoped data-stx-run="always">
1
+ <script data-stx-runtime src="/_stx/runtime.dbee66d1.js"></script> <script data-stx-composables src="/_stx/chunk.9fd39d5b.js"></script> <script data-stx-scoped data-stx-run="always">
2
2
  window.stx.mount(function() {
3
3
  'use strict';
4
4
 
@@ -12,19 +12,19 @@ window.stx.mount(function() {
12
12
  + 'or it should be imported from a relative path so the bundler includes it.'
13
13
  );
14
14
  });
15
- var typed = undefined;
16
- var runOp = undefined;
17
- var pending = undefined;
18
- var opShown = undefined;
19
- var opOutput = undefined;
20
- var confirmVerb = undefined;
21
- var confirmTok = undefined;
22
- var confirmLabel = undefined;
23
- var confirmDanger = undefined;
24
- var cancelOp = undefined;
25
- var canRun = undefined;
26
- var busy = undefined;
27
15
  var askOp = undefined;
16
+ var busy = undefined;
17
+ var canRun = undefined;
18
+ var cancelOp = undefined;
19
+ var confirmDanger = undefined;
20
+ var confirmLabel = undefined;
21
+ var confirmTok = undefined;
22
+ var confirmVerb = undefined;
23
+ var opOutput = undefined;
24
+ var opShown = undefined;
25
+ var pending = undefined;
26
+ var runOp = undefined;
27
+ var typed = undefined;
28
28
  var __stxBundle_d4acdccaaf8e = (function() {
29
29
 
30
30
  var DANGEROUS_OPERATION = /(?:^|:)(?:delete|disable|destroy|purge|remove|restore|rollback|stop)(?::|$)/i;
@@ -101,24 +101,24 @@ var { opOutput, opShown, pending, typed, busy, confirmTok, confirmVerb, confirmD
101
101
  ` + (body.stdout || "") + (body.error ? `
102
102
  ` + body.error : "");
103
103
  });
104
- return { "typed": typed, "runOp": runOp, "pending": pending, "opShown": opShown, "opOutput": opOutput, "confirmVerb": confirmVerb, "confirmTok": confirmTok, "confirmLabel": confirmLabel, "confirmDanger": confirmDanger, "cancelOp": cancelOp, "canRun": canRun, "busy": busy, "askOp": askOp };
104
+ return { "askOp": askOp, "busy": busy, "canRun": canRun, "cancelOp": cancelOp, "confirmDanger": confirmDanger, "confirmLabel": confirmLabel, "confirmTok": confirmTok, "confirmVerb": confirmVerb, "opOutput": opOutput, "opShown": opShown, "pending": pending, "runOp": runOp, "typed": typed };
105
105
  })();
106
- typed = __stxBundle_d4acdccaaf8e["typed"];
107
- runOp = __stxBundle_d4acdccaaf8e["runOp"];
108
- pending = __stxBundle_d4acdccaaf8e["pending"];
109
- opShown = __stxBundle_d4acdccaaf8e["opShown"];
110
- opOutput = __stxBundle_d4acdccaaf8e["opOutput"];
111
- confirmVerb = __stxBundle_d4acdccaaf8e["confirmVerb"];
112
- confirmTok = __stxBundle_d4acdccaaf8e["confirmTok"];
113
- confirmLabel = __stxBundle_d4acdccaaf8e["confirmLabel"];
114
- confirmDanger = __stxBundle_d4acdccaaf8e["confirmDanger"];
115
- cancelOp = __stxBundle_d4acdccaaf8e["cancelOp"];
116
- canRun = __stxBundle_d4acdccaaf8e["canRun"];
117
- busy = __stxBundle_d4acdccaaf8e["busy"];
118
106
  askOp = __stxBundle_d4acdccaaf8e["askOp"];
107
+ busy = __stxBundle_d4acdccaaf8e["busy"];
108
+ canRun = __stxBundle_d4acdccaaf8e["canRun"];
109
+ cancelOp = __stxBundle_d4acdccaaf8e["cancelOp"];
110
+ confirmDanger = __stxBundle_d4acdccaaf8e["confirmDanger"];
111
+ confirmLabel = __stxBundle_d4acdccaaf8e["confirmLabel"];
112
+ confirmTok = __stxBundle_d4acdccaaf8e["confirmTok"];
113
+ confirmVerb = __stxBundle_d4acdccaaf8e["confirmVerb"];
114
+ opOutput = __stxBundle_d4acdccaaf8e["opOutput"];
115
+ opShown = __stxBundle_d4acdccaaf8e["opShown"];
116
+ pending = __stxBundle_d4acdccaaf8e["pending"];
117
+ runOp = __stxBundle_d4acdccaaf8e["runOp"];
118
+ typed = __stxBundle_d4acdccaaf8e["typed"];
119
119
 
120
120
  return { opOutput, opShown, pending, typed, busy, confirmTok, confirmVerb, confirmDanger, confirmLabel, canRun, askOp, cancelOp, runOp };
121
- })</script> <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mt7lgvq3gjbx1h"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud · Assets &amp; CDN</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"><style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.b7a99a5c.css"></head><body data-stx-auto><a data-stx-scope="stx_scope_nav_39" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>acme</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="" href="/operations/jobs?env=production">Workers & schedules</a><a class="" href="/operations/configuration?env=production">Environment &amp; secrets</a><a class="" href="/data/backups?env=production">Backups &amp; recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>acme</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
121
+ })</script> <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mt9ag411j9wvnd"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud · Assets &amp; CDN</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"><style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.b7a99a5c.css"></head><body data-stx-auto><a data-stx-scope="stx_scope_nav_32" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>acme</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="" href="/operations/jobs?env=production">Workers & schedules</a><a class="" href="/operations/configuration?env=production">Environment &amp; secrets</a><a class="" href="/data/backups?env=production">Backups &amp; recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>acme</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
122
122
  (function() {
123
123
  var { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, refresh, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
124
124
  var __destroyHooks = [];
@@ -469,6 +469,6 @@ askOp = __stxBundle_d4acdccaaf8e["askOp"];
469
469
 
470
470
 
471
471
  try { if (typeof __stxScopeRenames !== 'undefined' && __stxScopeRenames) { for (var __stxRK in __stxScopeRenames) __scopeRegistration[__stxRK] = __stxScopeRenames[__stxRK]; } } catch (e) { /* no renames */ }
472
- window.stx._scopes['stx_scope_nav_39'] = __scopeRegistration;
472
+ window.stx._scopes['stx_scope_nav_32'] = __scopeRegistration;
473
473
  })();
474
474
  </script> <div class="wrap"><div class="crumbs"><a href="/serverless">Serverless</a><span class="sep">/</span> Assets &amp; CDN</div><header class="page"><div><h1>Assets &amp; CDN</h1><p>Versioned static assets uploaded to S3 and served via CloudFront; <span class="mono">ASSET_URL</span> is injected into the app.</p></div><div class="header-actions"><button class="btn sm" type="button" @click="askOp('assets:invalidate', 'acme-production-assets', 'invalidate the CDN cache for acme-production-assets', 'invalidate')">Invalidate CDN cache</button></div></header><div class="section" x-cloak><div class="op-confirm panel" @show="pending() !== null" role="group" aria-labelledby="op-confirm-prompt" x-cloak><span id="op-confirm-prompt" x-cloak>Type <b class="mono" x-cloak>{{ confirmTok() }}</b> to {{ confirmVerb() }}:</span><input data-stx-ref="opConfirmInput" class="op-confirm-input" :value="typed()" @input="typed.set($event.target.value)" @keydown.enter="runOp()" placeholder="confirm" autocomplete="off" aria-labelledby="op-confirm-prompt"><button type="button" class="btn sm" :class="{ danger: confirmDanger() }" :disabled="!canRun()" @click="runOp()" x-cloak>{{ confirmLabel() }}</button><button type="button" class="btn ghost sm" :disabled="busy()" @click="cancelOp()">Cancel</button></div><pre class="action-output op-output" @show="opShown()" aria-live="polite" x-cloak>{{ opOutput() }}</pre></div><div class="grid cards"><div class="panel"><h3>Files</h3><div class="stat">412</div></div><div class="panel"><h3>Size</h3><div class="stat">18.4 <small>MB</small></div></div><div class="panel"><h3>Cache hit</h3><div class="stat">98.7%</div></div><div class="panel"><h3>Version</h3><div class="mono" style="margin-top:12px">a4d63d2</div></div></div><div class="section"><div class="panel"><div class="kv"><span>bucket</span><b class="mono">acme-production-assets</b></div><div class="kv"><span>CloudFront</span><b class="mono">d2x1.cloudfront.net</b></div><div class="kv"><span>custom domain</span><b class="mono">cdn.acme.com</b></div><div class="kv"><span>ASSET_URL</span><b class="mono" style="font-size:12px">https://cdn.acme.com/a4d63d2</b></div></div></div><div class="section"><h2>Recent assets</h2><div class="panel"><table><thead><tr><th scope="col">Path</th><th scope="col">Type</th><th scope="col">Size</th></tr></thead><tbody><tr><td class="mono">/a4d63d2/app.css</td><td style="color:var(--txt2)">text/css</td><td>123 KB</td></tr><tr><td class="mono">/a4d63d2/app.js</td><td style="color:var(--txt2)">application/javascript</td><td>456 KB</td></tr><tr><td class="mono">/a4d63d2/logo.svg</td><td style="color:var(--txt2)">image/svg+xml</td><td>4 KB</td></tr></tbody></table><p class="note">Sync with <span class="mono">cloud assets:deploy</span> · invalidate with <span class="mono">cloud assets:invalidate</span></p></div></div></div></body></html>
@@ -1,4 +1,4 @@
1
- <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mt7lgvq3gjbx1h"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"> <script data-stx-runtime src="/_stx/runtime.c696d17a.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud - Cost</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"><style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.b7a99a5c.css"></head><body data-stx-auto><a data-stx-scope="stx_scope_nav_38" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>acme</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="" href="/operations/jobs?env=production">Workers & schedules</a><a class="" href="/operations/configuration?env=production">Environment &amp; secrets</a><a class="" href="/data/backups?env=production">Backups &amp; recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>acme</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
1
+ <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mt9ag411j9wvnd"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"> <script data-stx-runtime src="/_stx/runtime.dbee66d1.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud - Cost</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"><style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.b7a99a5c.css"></head><body data-stx-auto><a data-stx-scope="stx_scope_nav_36" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>acme</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="" href="/operations/jobs?env=production">Workers & schedules</a><a class="" href="/operations/configuration?env=production">Environment &amp; secrets</a><a class="" href="/data/backups?env=production">Backups &amp; recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>acme</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
2
2
  (function() {
3
3
  var { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, refresh, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
4
4
  var __destroyHooks = [];
@@ -349,6 +349,6 @@
349
349
 
350
350
 
351
351
  try { if (typeof __stxScopeRenames !== 'undefined' && __stxScopeRenames) { for (var __stxRK in __stxScopeRenames) __scopeRegistration[__stxRK] = __stxScopeRenames[__stxRK]; } } catch (e) { /* no renames */ }
352
- window.stx._scopes['stx_scope_nav_38'] = __scopeRegistration;
352
+ window.stx._scopes['stx_scope_nav_36'] = __scopeRegistration;
353
353
  })();
354
354
  </script> <div class="wrap"><div class="crumbs"><a href="/serverless">Serverless</a><span class="sep">/</span> Cost</div><header class="page"><div><h1>Cost analysis</h1><p>Spend by service and function - Jun 2026 (month-to-date).</p></div></header><div class="grid cards"><div class="panel"><h3>Month to date</h3><div class="stat">$126.40</div><div class="bar"><i style="width: 57%"></i></div><p class="note">day 17 of 30</p></div><div class="panel"><h3>Projected (month)</h3><div class="stat">$223.10</div><p class="note" style="color:var(--warn)">▲ $24.35 vs last month</p></div><div class="panel"><h3>Daily average</h3><div class="stat">$7.44</div><p class="note">per day this month</p></div><div class="panel"><h3>Last month</h3><div class="stat">$198.75</div><p class="note">final total</p></div></div><div class="section"><h2>Daily spend</h2><div class="panel"><div class="spark" style="height:96px"><i style="height: 63%"></i><i style="height: 67%"></i><i style="height: 76%"></i><i style="height: 73%"></i><i style="height: 80%"></i><i style="height: 86%"></i><i style="height: 82%"></i><i style="height: 98%"></i><i style="height: 90%"></i><i style="height: 75%"></i><i style="height: 69%"></i><i style="height: 84%"></i><i style="height: 96%"></i><i style="height: 100%"></i><i style="height: 87%"></i><i style="height: 80%"></i><i style="height: 88%"></i></div><p class="note">USD/day · Jun 2026 (month-to-date)</p></div></div><div class="cols section"><div><h2>By service</h2><div class="panel"><div style="padding:11px 0; border-top:1px solid rgba(255,255,255,0.05);"><div style="display:flex; align-items:center; gap:12px;"><b style="min-width:200px">Lambda (compute)</b><span class="detail" style="color:var(--txt3); font-size:12px;">GB-seconds across http/queue/cli</span><span style="margin-left:auto; font-weight:700;">$41.20</span></div><div class="bar" style="margin-top:8px;"><i style="width: 100%"></i></div></div><div style="padding:11px 0; border-top:1px solid rgba(255,255,255,0.05);"><div style="display:flex; align-items:center; gap:12px;"><b style="min-width:200px">Provisioned concurrency</b><span class="detail" style="color:var(--txt3); font-size:12px;">2 envs always-warm</span><span style="margin-left:auto; font-weight:700;">$28.60</span></div><div class="bar" style="margin-top:8px;"><i style="width: 69%"></i></div></div><div style="padding:11px 0; border-top:1px solid rgba(255,255,255,0.05);"><div style="display:flex; align-items:center; gap:12px;"><b style="min-width:200px">Aurora Serverless v2</b><span class="detail" style="color:var(--txt3); font-size:12px;">0.5-4 ACU</span><span style="margin-left:auto; font-weight:700;">$19.80</span></div><div class="bar" style="margin-top:8px;"><i style="width: 48%"></i></div></div><div style="padding:11px 0; border-top:1px solid rgba(255,255,255,0.05);"><div style="display:flex; align-items:center; gap:12px;"><b style="min-width:200px">API Gateway (HTTP)</b><span class="detail" style="color:var(--txt3); font-size:12px;">4.7M requests</span><span style="margin-left:auto; font-weight:700;">$11.30</span></div><div class="bar" style="margin-top:8px;"><i style="width: 27%"></i></div></div><div style="padding:11px 0; border-top:1px solid rgba(255,255,255,0.05);"><div style="display:flex; align-items:center; gap:12px;"><b style="min-width:200px">CloudFront + S3 assets</b><span class="detail" style="color:var(--txt3); font-size:12px;">egress + storage</span><span style="margin-left:auto; font-weight:700;">$8.10</span></div><div class="bar" style="margin-top:8px;"><i style="width: 20%"></i></div></div><div style="padding:11px 0; border-top:1px solid rgba(255,255,255,0.05);"><div style="display:flex; align-items:center; gap:12px;"><b style="min-width:200px">ElastiCache (redis)</b><span class="detail" style="color:var(--txt3); font-size:12px;">cache.t4g.micro</span><span style="margin-left:auto; font-weight:700;">$6.40</span></div><div class="bar" style="margin-top:8px;"><i style="width: 16%"></i></div></div><div style="padding:11px 0; border-top:1px solid rgba(255,255,255,0.05);"><div style="display:flex; align-items:center; gap:12px;"><b style="min-width:200px">DynamoDB (cache)</b><span class="detail" style="color:var(--txt3); font-size:12px;">on-demand</span><span style="margin-left:auto; font-weight:700;">$4.20</span></div><div class="bar" style="margin-top:8px;"><i style="width: 10%"></i></div></div><div style="padding:11px 0; border-top:1px solid rgba(255,255,255,0.05);"><div style="display:flex; align-items:center; gap:12px;"><b style="min-width:200px">SQS</b><span class="detail" style="color:var(--txt3); font-size:12px;">12.8M messages</span><span style="margin-left:auto; font-weight:700;">$2.90</span></div><div class="bar" style="margin-top:8px;"><i style="width: 7%"></i></div></div><div style="padding:11px 0; border-top:1px solid rgba(255,255,255,0.05);"><div style="display:flex; align-items:center; gap:12px;"><b style="min-width:200px">RDS Proxy</b><span class="detail" style="color:var(--txt3); font-size:12px;">proxy hours</span><span style="margin-left:auto; font-weight:700;">$2.10</span></div><div class="bar" style="margin-top:8px;"><i style="width: 5%"></i></div></div><div style="padding:11px 0; border-top:1px solid rgba(255,255,255,0.05);"><div style="display:flex; align-items:center; gap:12px;"><b style="min-width:200px">Secrets Manager</b><span class="detail" style="color:var(--txt3); font-size:12px;">4 secrets</span><span style="margin-left:auto; font-weight:700;">$1.20</span></div><div class="bar" style="margin-top:8px;"><i style="width: 3%"></i></div></div><div style="padding:11px 0; border-top:1px solid rgba(255,255,255,0.05);"><div style="display:flex; align-items:center; gap:12px;"><b style="min-width:200px">WAF</b><span class="detail" style="color:var(--txt3); font-size:12px;">web ACL + rules</span><span style="margin-left:auto; font-weight:700;">$0.60</span></div><div class="bar" style="margin-top:8px;"><i style="width: 1%"></i></div></div><div class="kv" style="margin-top:6px; border-top:1px solid var(--panel-br); padding-top:12px;"><span>total</span><b>$126.40</b></div></div></div><div><h2>Lambda by function</h2><div class="panel"><table><thead><tr><th scope="col">Fn</th><th scope="col">Requests</th><th scope="col">GB-sec</th><th scope="col">Cost</th></tr></thead><tbody><tr><td><span class="tag">http</span></td><td>171k</td><td class="mono">168k</td><td style="font-weight:700">$31.40</td></tr><tr><td><span class="tag">queue</span></td><td>13k</td><td class="mono">41k</td><td style="font-weight:700">$7.80</td></tr><tr><td><span class="tag">cli</span></td><td>1.4k</td><td class="mono">12k</td><td style="font-weight:700">$2.00</td></tr></tbody></table></div><div style="height:16px"></div><h2>Optimize</h2><div class="panel"><p class="note" style="margin-top:0">Biggest lever: <b style="color:var(--txt)">Lambda (compute)</b> at $41.20.</p><p class="note">• Right-size memory - over-provisioned MB inflates GB-seconds.</p><p class="note">• Drop unused <span class="mono">provisionedConcurrency</span> for ping-based <span class="mono">warm</span> if cold starts are tolerable.</p><p class="note">• Tighten Aurora <span class="mono">db-scale</span> min ACU off-peak.</p><p class="note">Full breakdown: <span class="mono">cloud cost --env production</span></p></div></div></div></div></body></html>
@@ -1,25 +1,25 @@
1
- <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mt7lgvq3gjbx1h"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"> <script data-stx-runtime src="/_stx/runtime.c696d17a.js"></script> <script data-stx-composables src="/_stx/chunk.9fd39d5b.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud · Data</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"> <script data-stx-scoped>
2
- function __stx_setup_1787597624625_27() {
1
+ <!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mt9ag411j9wvnd"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"> <script data-stx-runtime src="/_stx/runtime.dbee66d1.js"></script> <script data-stx-composables src="/_stx/chunk.9fd39d5b.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud · Data</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"> <script data-stx-scoped>
2
+ function __stx_setup_1787700043911_25() {
3
3
  const { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, refresh, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
4
4
 
5
5
  var seedMin = 0.5;
6
6
  var seedMax = 4;
7
7
 
8
- var typed = undefined;
9
- var scaleMin = undefined;
10
- var scaleMax = undefined;
11
- var runOp = undefined;
12
- var pending = undefined;
13
- var opShown = undefined;
14
- var opOutput = undefined;
15
- var confirmVerb = undefined;
16
- var confirmTok = undefined;
17
- var confirmLabel = undefined;
18
- var confirmDanger = undefined;
19
- var cancelOp = undefined;
20
- var canRun = undefined;
21
- var busy = undefined;
22
8
  var askOp = undefined;
9
+ var busy = undefined;
10
+ var canRun = undefined;
11
+ var cancelOp = undefined;
12
+ var confirmDanger = undefined;
13
+ var confirmLabel = undefined;
14
+ var confirmTok = undefined;
15
+ var confirmVerb = undefined;
16
+ var opOutput = undefined;
17
+ var opShown = undefined;
18
+ var pending = undefined;
19
+ var runOp = undefined;
20
+ var scaleMax = undefined;
21
+ var scaleMin = undefined;
22
+ var typed = undefined;
23
23
  var __stxBundle_ce37b55d7114 = (function() {
24
24
 
25
25
  var DANGEROUS_OPERATION = /(?:^|:)(?:delete|disable|destroy|purge|remove|restore|rollback|stop)(?::|$)/i;
@@ -98,28 +98,28 @@ var { opOutput, opShown, pending, typed, busy, confirmTok, confirmVerb, confirmD
98
98
  ` + (body.stdout || "") + (body.error ? `
99
99
  ` + body.error : "");
100
100
  });
101
- return { "typed": typed, "scaleMin": scaleMin, "scaleMax": scaleMax, "runOp": runOp, "pending": pending, "opShown": opShown, "opOutput": opOutput, "confirmVerb": confirmVerb, "confirmTok": confirmTok, "confirmLabel": confirmLabel, "confirmDanger": confirmDanger, "cancelOp": cancelOp, "canRun": canRun, "busy": busy, "askOp": askOp };
101
+ return { "askOp": askOp, "busy": busy, "canRun": canRun, "cancelOp": cancelOp, "confirmDanger": confirmDanger, "confirmLabel": confirmLabel, "confirmTok": confirmTok, "confirmVerb": confirmVerb, "opOutput": opOutput, "opShown": opShown, "pending": pending, "runOp": runOp, "scaleMax": scaleMax, "scaleMin": scaleMin, "typed": typed };
102
102
  })();
103
- typed = __stxBundle_ce37b55d7114["typed"];
104
- scaleMin = __stxBundle_ce37b55d7114["scaleMin"];
105
- scaleMax = __stxBundle_ce37b55d7114["scaleMax"];
106
- runOp = __stxBundle_ce37b55d7114["runOp"];
107
- pending = __stxBundle_ce37b55d7114["pending"];
108
- opShown = __stxBundle_ce37b55d7114["opShown"];
109
- opOutput = __stxBundle_ce37b55d7114["opOutput"];
110
- confirmVerb = __stxBundle_ce37b55d7114["confirmVerb"];
111
- confirmTok = __stxBundle_ce37b55d7114["confirmTok"];
112
- confirmLabel = __stxBundle_ce37b55d7114["confirmLabel"];
113
- confirmDanger = __stxBundle_ce37b55d7114["confirmDanger"];
114
- cancelOp = __stxBundle_ce37b55d7114["cancelOp"];
115
- canRun = __stxBundle_ce37b55d7114["canRun"];
116
- busy = __stxBundle_ce37b55d7114["busy"];
117
103
  askOp = __stxBundle_ce37b55d7114["askOp"];
118
- return { typed, scaleMin, scaleMax, runOp, pending, opShown, opOutput, confirmVerb, confirmTok, confirmLabel, confirmDanger, cancelOp, canRun, busy, askOp, __stxBundle_ce37b55d7114 };
104
+ busy = __stxBundle_ce37b55d7114["busy"];
105
+ canRun = __stxBundle_ce37b55d7114["canRun"];
106
+ cancelOp = __stxBundle_ce37b55d7114["cancelOp"];
107
+ confirmDanger = __stxBundle_ce37b55d7114["confirmDanger"];
108
+ confirmLabel = __stxBundle_ce37b55d7114["confirmLabel"];
109
+ confirmTok = __stxBundle_ce37b55d7114["confirmTok"];
110
+ confirmVerb = __stxBundle_ce37b55d7114["confirmVerb"];
111
+ opOutput = __stxBundle_ce37b55d7114["opOutput"];
112
+ opShown = __stxBundle_ce37b55d7114["opShown"];
113
+ pending = __stxBundle_ce37b55d7114["pending"];
114
+ runOp = __stxBundle_ce37b55d7114["runOp"];
115
+ scaleMax = __stxBundle_ce37b55d7114["scaleMax"];
116
+ scaleMin = __stxBundle_ce37b55d7114["scaleMin"];
117
+ typed = __stxBundle_ce37b55d7114["typed"];
118
+ return { askOp, busy, canRun, cancelOp, confirmDanger, confirmLabel, confirmTok, confirmVerb, opOutput, opShown, pending, runOp, scaleMax, scaleMin, typed, __stxBundle_ce37b55d7114 };
119
119
  }
120
- window.__stx_latestSetup=__stx_setup_1787597624625_27;
121
- if(window.stx)window.stx._latestSetup=__stx_setup_1787597624625_27;
122
- </script> <style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.906ee17c.css"></head><body data-stx="__stx_setup_1787597624625_27"><a data-stx-scope="stx_scope_nav_36" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>acme</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="" href="/operations/jobs?env=production">Workers & schedules</a><a class="" href="/operations/configuration?env=production">Environment &amp; secrets</a><a class="" href="/data/backups?env=production">Backups &amp; recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>acme</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
120
+ window.__stx_latestSetup=__stx_setup_1787700043911_25;
121
+ if(window.stx)window.stx._latestSetup=__stx_setup_1787700043911_25;
122
+ </script> <style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.906ee17c.css"></head><body data-stx="__stx_setup_1787700043911_25"><a data-stx-scope="stx_scope_nav_35" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>acme</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="" href="/operations/jobs?env=production">Workers & schedules</a><a class="" href="/operations/configuration?env=production">Environment &amp; secrets</a><a class="" href="/data/backups?env=production">Backups &amp; recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>acme</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
123
123
  (function() {
124
124
  var { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, refresh, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
125
125
  var __destroyHooks = [];
@@ -470,6 +470,6 @@ if(window.stx)window.stx._latestSetup=__stx_setup_1787597624625_27;
470
470
 
471
471
 
472
472
  try { if (typeof __stxScopeRenames !== 'undefined' && __stxScopeRenames) { for (var __stxRK in __stxScopeRenames) __scopeRegistration[__stxRK] = __stxScopeRenames[__stxRK]; } } catch (e) { /* no renames */ }
473
- window.stx._scopes['stx_scope_nav_36'] = __scopeRegistration;
473
+ window.stx._scopes['stx_scope_nav_35'] = __scopeRegistration;
474
474
  })();
475
475
  </script> <div class="wrap"><div class="crumbs"><a href="/serverless">Serverless</a><span class="sep">/</span> Data</div><header class="page"><div><h1>Data services</h1><p>Managed data attached to the functions over a private VPC: database, connection proxy, cache, and shared filesystem.</p></div></header><div class="section"><h2>Aurora Serverless v2 <span class="more"><span class="pill ok">available</span></span></h2><div class="cols"><div class="panel"><div class="kv"><span>cluster</span><b class="mono">acme-production-db</b></div><div class="kv"><span>engine</span><b class="mono">aurora-mysql</b></div><div class="kv"><span>database</span><b class="mono">app</b></div><div class="kv"><span>active connections</span><b>12</b></div></div><div class="panel"><h3>Capacity (ACU)</h3><div class="stat">1.5 <small>now</small></div><div class="bar"><i style="width: 38%"></i></div><p class="note">range 0.5 to 4 ACU · rescale with <span class="mono">cloud serverless:db-scale 0.5 4</span></p></div></div></div><div class="section"><h2>Scale Aurora capacity</h2><div class="panel"><div class="form-grid"><div class="field-block"><label for="aurora-min">Min ACUs</label><input id="aurora-min" type="number" step="0.5" min="0.5" :value="scaleMin()" @input="scaleMin.set($event.target.value)" placeholder="0.5" autocomplete="off"></div><div class="field-block"><label for="aurora-max">Max ACUs</label><input id="aurora-max" type="number" step="0.5" min="0.5" :value="scaleMax()" @input="scaleMax.set($event.target.value)" placeholder="4" autocomplete="off"></div></div><div class="form-actions"><button class="btn sm" type="button" @click="askOp('db:scale', 'acme-production-db', 'scale the Aurora cluster acme-production-db', 'scale')">Scale</button></div><div class="op-confirm panel" @show="pending() !== null" role="group" aria-labelledby="op-confirm-prompt" x-cloak><span id="op-confirm-prompt" x-cloak>Type <b class="mono" x-cloak>{{ confirmTok() }}</b> to {{ confirmVerb() }}:</span><input data-stx-ref="opConfirmInput" class="op-confirm-input" :value="typed()" @input="typed.set($event.target.value)" @keydown.enter="runOp()" placeholder="confirm" autocomplete="off" aria-labelledby="op-confirm-prompt"><button type="button" class="btn sm" :class="{ danger: confirmDanger() }" :disabled="!canRun()" @click="runOp()" x-cloak>{{ confirmLabel() }}</button><button type="button" class="btn ghost sm" :disabled="busy()" @click="cancelOp()">Cancel</button></div><pre class="action-output op-output" @show="opShown()" aria-live="polite" x-cloak>{{ opOutput() }}</pre><p class="note">Adjusts the Aurora Serverless v2 capacity range. New writes settle into the range within a few seconds.</p></div></div><div class="cols section"><div><h2>RDS Proxy</h2><div class="panel"><div class="kv"><span>name</span><b class="mono">acme-production-proxy</b></div><div class="kv"><span>endpoint</span><b class="mono" style="font-size:11px">acme-production-proxy.proxy-xxxx.us-east-1.rds.amazonaws.com</b></div><div class="kv"><span>pooled connections</span><b>8</b></div><div class="kv"><span>status</span><b><span class="pill ok">available</span></b></div></div><div style="height:16px"></div><h2>Shared filesystem (EFS)</h2><div class="panel"><div class="kv"><span>file system</span><b class="mono">fs-0abc</b></div><div class="kv"><span>mount</span><b class="mono">/mnt/local</b></div><div class="kv"><span>used</span><b>312 MB</b></div></div></div><div><h2>ElastiCache (Redis)</h2><div class="panel"><div class="kv"><span>cluster</span><b class="mono">acme-production-redis</b></div><div class="kv"><span>node</span><b class="mono">cache.t4g.micro</b></div><div class="kv"><span>engine</span><b class="mono">redis 7.1</b></div><div class="kv"><span>hit rate</span><b>96.4%</b></div><div class="kv"><span>status</span><b><span class="pill ok">available</span></b></div></div><p class="note">Query the private DB without a bastion: <span class="mono">cloud serverless:db-shell "select 1"</span></p></div></div></div></body></html>