stacktape 3.5.8 → 3.6.0-beta.0
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.
- package/.tsconfig.bun-build.json +1 -0
- package/ai-docs/cli-ref/aws-profile-create.md +22 -0
- package/ai-docs/cli-ref/aws-profile-delete.md +22 -0
- package/ai-docs/cli-ref/aws-profile-list.md +20 -0
- package/ai-docs/cli-ref/aws-profile-update.md +22 -0
- package/ai-docs/cli-ref/bastion-session.md +29 -0
- package/ai-docs/cli-ref/bastion-tunnel.md +30 -0
- package/ai-docs/cli-ref/bucket-sync.md +30 -0
- package/ai-docs/cli-ref/cf-module-update.md +26 -0
- package/ai-docs/cli-ref/cf-rollback.md +28 -0
- package/ai-docs/cli-ref/codebuild-deploy.md +34 -0
- package/ai-docs/cli-ref/compile-template.md +25 -0
- package/ai-docs/cli-ref/container-session.md +30 -0
- package/ai-docs/cli-ref/debug-alarms.md +28 -0
- package/ai-docs/cli-ref/debug-aws-sdk.md +33 -0
- package/ai-docs/cli-ref/debug-container-exec.md +36 -0
- package/ai-docs/cli-ref/debug-dynamodb.md +35 -0
- package/ai-docs/cli-ref/debug-logs.md +34 -0
- package/ai-docs/cli-ref/debug-metrics.md +33 -0
- package/ai-docs/cli-ref/debug-opensearch.md +35 -0
- package/ai-docs/cli-ref/debug-redis.md +36 -0
- package/ai-docs/cli-ref/debug-sql.md +35 -0
- package/ai-docs/cli-ref/defaults-configure.md +29 -0
- package/ai-docs/cli-ref/defaults-list.md +20 -0
- package/ai-docs/cli-ref/delete.md +24 -0
- package/ai-docs/cli-ref/deploy.md +25 -0
- package/ai-docs/cli-ref/deployment-script-run.md +28 -0
- package/ai-docs/cli-ref/dev-stop.md +26 -0
- package/ai-docs/cli-ref/dev.md +45 -0
- package/ai-docs/cli-ref/domain-add.md +26 -0
- package/ai-docs/cli-ref/help.md +18 -0
- package/ai-docs/cli-ref/info-operations.md +22 -0
- package/ai-docs/cli-ref/info-stack.md +30 -0
- package/ai-docs/cli-ref/info-stacks.md +26 -0
- package/ai-docs/cli-ref/info-whoami.md +22 -0
- package/ai-docs/cli-ref/init.md +30 -0
- package/ai-docs/cli-ref/login.md +20 -0
- package/ai-docs/cli-ref/logout.md +18 -0
- package/ai-docs/cli-ref/mcp-add.md +22 -0
- package/ai-docs/cli-ref/mcp.md +20 -0
- package/ai-docs/cli-ref/org-create.md +24 -0
- package/ai-docs/cli-ref/org-delete.md +24 -0
- package/ai-docs/cli-ref/org-list.md +22 -0
- package/ai-docs/cli-ref/package-workloads.md +25 -0
- package/ai-docs/cli-ref/param-get.md +26 -0
- package/ai-docs/cli-ref/preview-changes.md +23 -0
- package/ai-docs/cli-ref/project-create.md +22 -0
- package/ai-docs/cli-ref/projects-list.md +22 -0
- package/ai-docs/cli-ref/rollback.md +28 -0
- package/ai-docs/cli-ref/script-run.md +29 -0
- package/ai-docs/cli-ref/secret-create.md +28 -0
- package/ai-docs/cli-ref/secret-delete.md +26 -0
- package/ai-docs/cli-ref/secret-get.md +26 -0
- package/ai-docs/cli-ref/upgrade.md +20 -0
- package/ai-docs/cli-ref/version.md +18 -0
- package/ai-docs/concept/connecting-resources.md +369 -0
- package/ai-docs/concept/directives.md +371 -0
- package/ai-docs/concept/extending-cloudformation.md +315 -0
- package/ai-docs/concept/overrides-and-transforms.md +352 -0
- package/ai-docs/concept/stages-and-environments.md +347 -0
- package/ai-docs/concept/typescript-config.md +447 -0
- package/ai-docs/concept/yaml-config.md +338 -0
- package/ai-docs/config-ref/_root.md +142 -0
- package/ai-docs/config-ref/application-load-balancer.md +1109 -0
- package/ai-docs/config-ref/astro-web.md +115 -0
- package/ai-docs/config-ref/aws-cdk-construct.md +68 -0
- package/ai-docs/config-ref/bastion.md +93 -0
- package/ai-docs/config-ref/batch-job.md +179 -0
- package/ai-docs/config-ref/bucket.md +348 -0
- package/ai-docs/config-ref/cdn.md +496 -0
- package/ai-docs/config-ref/custom-resource.md +80 -0
- package/ai-docs/config-ref/deployment-script.md +79 -0
- package/ai-docs/config-ref/dynamo-db-table.md +202 -0
- package/ai-docs/config-ref/edge-lambda-function.md +87 -0
- package/ai-docs/config-ref/efs-filesystem.md +72 -0
- package/ai-docs/config-ref/event-bus.md +63 -0
- package/ai-docs/config-ref/function.md +409 -0
- package/ai-docs/config-ref/hosting-bucket.md +171 -0
- package/ai-docs/config-ref/http-api-gateway.md +149 -0
- package/ai-docs/config-ref/http-endpoint.md +92 -0
- package/ai-docs/config-ref/kinesis-stream.md +97 -0
- package/ai-docs/config-ref/mongo-db-atlas-cluster.md +254 -0
- package/ai-docs/config-ref/multi-container-workload.md +399 -0
- package/ai-docs/config-ref/network-load-balancer.md +118 -0
- package/ai-docs/config-ref/nextjs-web.md +147 -0
- package/ai-docs/config-ref/nuxt-web.md +81 -0
- package/ai-docs/config-ref/open-search.md +206 -0
- package/ai-docs/config-ref/private-service.md +75 -0
- package/ai-docs/config-ref/redis-cluster.md +223 -0
- package/ai-docs/config-ref/relational-database.md +525 -0
- package/ai-docs/config-ref/remix-web.md +74 -0
- package/ai-docs/config-ref/sns-topic.md +69 -0
- package/ai-docs/config-ref/solidstart-web.md +75 -0
- package/ai-docs/config-ref/sqs-queue-not-empty.md +405 -0
- package/ai-docs/config-ref/sqs-queue.md +232 -0
- package/ai-docs/config-ref/state-machine.md +235 -0
- package/ai-docs/config-ref/sveltekit-web.md +81 -0
- package/ai-docs/config-ref/tanstack-web.md +75 -0
- package/ai-docs/config-ref/upstash-redis.md +59 -0
- package/ai-docs/config-ref/user-auth-pool.md +876 -0
- package/ai-docs/config-ref/web-app-firewall.md +212 -0
- package/ai-docs/config-ref/web-service.md +178 -0
- package/ai-docs/config-ref/worker-service.md +41 -0
- package/ai-docs/getting-started/console.md +232 -0
- package/ai-docs/getting-started/deployment.md +434 -0
- package/ai-docs/getting-started/dev-mode.md +118 -0
- package/ai-docs/getting-started/how-it-works.md +119 -0
- package/ai-docs/getting-started/intro.md +157 -0
- package/ai-docs/getting-started/using-with-ai.md +228 -0
- package/ai-docs/getting-started/workflow.md +197 -0
- package/ai-docs/index.json +1514 -0
- package/ai-docs/recipe/background-jobs.md +183 -0
- package/ai-docs/recipe/database-migrations.md +240 -0
- package/ai-docs/recipe/graphql-api.md +211 -0
- package/ai-docs/recipe/monorepo-setup.md +183 -0
- package/ai-docs/recipe/nextjs-full-stack.md +188 -0
- package/ai-docs/recipe/rest-api-with-database.md +156 -0
- package/ai-docs/recipe/scheduled-tasks.md +186 -0
- package/ai-docs/recipe/static-website.md +241 -0
- package/ai-docs/troubleshooting/cloudformation-stack-states.md +189 -0
- package/bin/stacktape.js +0 -12
- package/package.json +1 -1
- package/plain.d.ts +309 -54
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
---
|
|
2
|
+
docType: config-ref
|
|
3
|
+
title: Web App Firewall
|
|
4
|
+
resourceType: web-app-firewall
|
|
5
|
+
tags:
|
|
6
|
+
- web-app-firewall
|
|
7
|
+
- waf
|
|
8
|
+
- firewall
|
|
9
|
+
source: types/stacktape-config/web-app-firewall.d.ts
|
|
10
|
+
priority: 1
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Web App Firewall
|
|
14
|
+
|
|
15
|
+
Protects your APIs and websites from common attacks (SQL injection, XSS, bots, DDoS).
|
|
16
|
+
|
|
17
|
+
Attach to an HTTP API Gateway, Application Load Balancer, or CDN. Comes with AWS-managed rule sets
|
|
18
|
+
by default. Costs ~$5/month base + $1/million requests inspected.
|
|
19
|
+
|
|
20
|
+
Resource type: `web-app-firewall`
|
|
21
|
+
|
|
22
|
+
## TypeScript Definition
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
/**
|
|
26
|
+
* #### Protects your APIs and websites from common attacks (SQL injection, XSS, bots, DDoS).
|
|
27
|
+
*
|
|
28
|
+
* ---
|
|
29
|
+
*
|
|
30
|
+
* Attach to an HTTP API Gateway, Application Load Balancer, or CDN. Comes with AWS-managed rule sets
|
|
31
|
+
* by default. Costs ~$5/month base + $1/million requests inspected.
|
|
32
|
+
*/
|
|
33
|
+
interface WebAppFirewall {
|
|
34
|
+
type: 'web-app-firewall';
|
|
35
|
+
properties?: WebAppFirewallProps;
|
|
36
|
+
overrides?: ResourceOverrides;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
interface WebAppFirewallProps {
|
|
40
|
+
/**
|
|
41
|
+
* #### `cdn` for CloudFront-attached resources, `regional` for ALBs, User Pools, or direct API Gateways.
|
|
42
|
+
*/
|
|
43
|
+
scope: 'regional' | 'cdn';
|
|
44
|
+
/**
|
|
45
|
+
* #### What happens when no rule matches a request.
|
|
46
|
+
*
|
|
47
|
+
* ---
|
|
48
|
+
*
|
|
49
|
+
* - **`Allow`** (recommended): Allow all traffic, block only what rules catch.
|
|
50
|
+
* - **`Block`**: Block all traffic, allow only what rules explicitly permit (returns 403).
|
|
51
|
+
*
|
|
52
|
+
* @default Allow
|
|
53
|
+
*/
|
|
54
|
+
defaultAction?: 'Allow' | 'Block';
|
|
55
|
+
/**
|
|
56
|
+
* #### Firewall rules: managed rule groups (AWS presets), custom rule groups, or rate-based rules.
|
|
57
|
+
*
|
|
58
|
+
* ---
|
|
59
|
+
*
|
|
60
|
+
* If omitted, Stacktape uses `AWSManagedRulesCommonRuleSet` + `AWSManagedRulesKnownBadInputsRuleSet` by default.
|
|
61
|
+
*/
|
|
62
|
+
rules?: (ManagedRuleGroup | CustomRuleGroup | RateBasedStatement)[];
|
|
63
|
+
/**
|
|
64
|
+
* #### Custom response bodies for `Block` actions. Map of key → content type + body.
|
|
65
|
+
*/
|
|
66
|
+
customResponseBodies?: CustomResponseBodies;
|
|
67
|
+
/**
|
|
68
|
+
* #### Seconds a solved CAPTCHA stays valid before requiring re-verification.
|
|
69
|
+
* @default 300
|
|
70
|
+
*/
|
|
71
|
+
captchaImmunityTime?: number;
|
|
72
|
+
/**
|
|
73
|
+
* #### Seconds a solved challenge stays valid before requiring re-verification.
|
|
74
|
+
* @default 300
|
|
75
|
+
*/
|
|
76
|
+
challengeImmunityTime?: number;
|
|
77
|
+
/**
|
|
78
|
+
* #### Domains accepted in WAF tokens. Enables token sharing across multiple protected websites.
|
|
79
|
+
*/
|
|
80
|
+
tokenDomains?: string[];
|
|
81
|
+
/**
|
|
82
|
+
* #### Disable CloudWatch metrics for the firewall.
|
|
83
|
+
* @default false
|
|
84
|
+
*/
|
|
85
|
+
disableMetrics?: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* #### Save samples of matched requests for inspection in the AWS WAF console.
|
|
88
|
+
* @default false
|
|
89
|
+
*/
|
|
90
|
+
sampledRequestsEnabled?: boolean;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
interface CommonRuleProps {
|
|
94
|
+
/**
|
|
95
|
+
* #### Evaluation order. Lower = evaluated first. Must be unique across all rules.
|
|
96
|
+
*/
|
|
97
|
+
priority: number;
|
|
98
|
+
/*
|
|
99
|
+
* #### The name of the rule.
|
|
100
|
+
*
|
|
101
|
+
* ---
|
|
102
|
+
*
|
|
103
|
+
* - For a `managed-rule-group`, this is the name of the rule group used along with the `vendorName`.
|
|
104
|
+
* - For other rule types, this is an arbitrary value used to identify the rule.
|
|
105
|
+
*/
|
|
106
|
+
name: string;
|
|
107
|
+
/**
|
|
108
|
+
* #### Disable CloudWatch metrics for this rule.
|
|
109
|
+
* @default false
|
|
110
|
+
*/
|
|
111
|
+
disableMetrics?: boolean;
|
|
112
|
+
/**
|
|
113
|
+
* #### Save samples of requests matching this rule for inspection in the WAF console.
|
|
114
|
+
* @default false
|
|
115
|
+
*/
|
|
116
|
+
sampledRequestsEnabled?: boolean;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
interface ManagedRuleGroup {
|
|
120
|
+
type: 'managed-rule-group';
|
|
121
|
+
properties: ManagedRuleGroupProps;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
interface ManagedRuleGroupProps extends CommonRuleProps {
|
|
125
|
+
/**
|
|
126
|
+
* #### Vendor name (e.g., `AWS` for AWS-managed rules).
|
|
127
|
+
*/
|
|
128
|
+
vendorName: string;
|
|
129
|
+
/**
|
|
130
|
+
* #### Rules within this group to skip (by rule name). Useful for disabling false positives.
|
|
131
|
+
*/
|
|
132
|
+
excludedRules?: string[];
|
|
133
|
+
/**
|
|
134
|
+
* #### `None` = apply normally, `Count` = log matches without blocking (dry-run mode).
|
|
135
|
+
*/
|
|
136
|
+
overrideAction?: 'None' | 'Count';
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
interface CustomRuleGroup {
|
|
140
|
+
type: 'custom-rule-group';
|
|
141
|
+
properties: CustomRuleGroupProps;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
interface CustomRuleGroupProps extends CommonRuleProps {
|
|
145
|
+
/**
|
|
146
|
+
* #### ARN of the custom WAF rule group.
|
|
147
|
+
*/
|
|
148
|
+
arn: string;
|
|
149
|
+
/**
|
|
150
|
+
* #### `None` = apply normally, `Count` = log matches without blocking (dry-run mode).
|
|
151
|
+
*/
|
|
152
|
+
overrideAction?: 'None' | 'Count';
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
interface RateBasedStatement {
|
|
156
|
+
type: 'rate-based-rule';
|
|
157
|
+
properties: RateBasedStatementProps;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
interface RateBasedStatementProps extends CommonRuleProps {
|
|
161
|
+
/**
|
|
162
|
+
* #### Max requests per IP in a 5-minute window. Range: 100–20,000,000. Exceeding triggers the `action`.
|
|
163
|
+
*/
|
|
164
|
+
limit: number;
|
|
165
|
+
/**
|
|
166
|
+
* #### `IP` = direct client IP, `FORWARDED_IP` = IP from a header (e.g., `X-Forwarded-For` behind a proxy).
|
|
167
|
+
*/
|
|
168
|
+
aggregateBasedOn?: 'IP' | 'FORWARDED_IP';
|
|
169
|
+
/**
|
|
170
|
+
* #### Header and fallback settings when using `FORWARDED_IP` aggregation.
|
|
171
|
+
*/
|
|
172
|
+
forwardedIPConfig?: ForwardedIPConfig;
|
|
173
|
+
/**
|
|
174
|
+
* #### What to do when the rate limit is exceeded.
|
|
175
|
+
*
|
|
176
|
+
* ---
|
|
177
|
+
*
|
|
178
|
+
* - `Block`: Return 403 (most common for rate limiting).
|
|
179
|
+
* - `Count`: Log only, don't block (useful for testing thresholds).
|
|
180
|
+
* - `Captcha`/`Challenge`: Verify the client is human.
|
|
181
|
+
*
|
|
182
|
+
* @default Block
|
|
183
|
+
*/
|
|
184
|
+
action?: 'Allow' | 'Block' | 'Count' | 'Captcha' | 'Challenge';
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
interface ForwardedIPConfig {
|
|
188
|
+
/**
|
|
189
|
+
* #### What to do when the header is missing. `MATCH` = apply rule action, `NO_MATCH` = skip.
|
|
190
|
+
*/
|
|
191
|
+
fallbackBehavior: 'MATCH' | 'NO_MATCH';
|
|
192
|
+
/**
|
|
193
|
+
* #### HTTP header containing the client IP (e.g., `X-Forwarded-For`).
|
|
194
|
+
*/
|
|
195
|
+
headerName: string;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
interface CustomResponseBodies {
|
|
199
|
+
[key: string]: {
|
|
200
|
+
/**
|
|
201
|
+
* #### MIME type: `application/json`, `text/plain`, or `text/html`.
|
|
202
|
+
*/
|
|
203
|
+
contentType: string;
|
|
204
|
+
/**
|
|
205
|
+
* #### Response body content.
|
|
206
|
+
*/
|
|
207
|
+
content: string;
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
type WebAppFirewallReferencableParams = 'arn' | 'scope';
|
|
212
|
+
```
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
---
|
|
2
|
+
docType: config-ref
|
|
3
|
+
title: Web Service
|
|
4
|
+
resourceType: web-service
|
|
5
|
+
tags:
|
|
6
|
+
- web-service
|
|
7
|
+
- container
|
|
8
|
+
- docker
|
|
9
|
+
- ecs
|
|
10
|
+
- fargate
|
|
11
|
+
- http-service
|
|
12
|
+
source: types/stacktape-config/web-services.d.ts
|
|
13
|
+
priority: 1
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Web Service
|
|
17
|
+
|
|
18
|
+
A container running 24/7 with a public HTTPS URL.
|
|
19
|
+
|
|
20
|
+
Use for APIs, web apps, and any service that needs to be always-on and reachable from the internet.
|
|
21
|
+
Includes TLS/SSL, auto-scaling, health checks, and zero-downtime deployments.
|
|
22
|
+
|
|
23
|
+
Resource type: `web-service`
|
|
24
|
+
|
|
25
|
+
## TypeScript Definition
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
/**
|
|
29
|
+
* #### A container running 24/7 with a public HTTPS URL.
|
|
30
|
+
*
|
|
31
|
+
* ---
|
|
32
|
+
*
|
|
33
|
+
* Use for APIs, web apps, and any service that needs to be always-on and reachable from the internet.
|
|
34
|
+
* Includes TLS/SSL, auto-scaling, health checks, and zero-downtime deployments.
|
|
35
|
+
*/
|
|
36
|
+
interface WebService {
|
|
37
|
+
type: 'web-service';
|
|
38
|
+
properties: WebServiceProps;
|
|
39
|
+
overrides?: ResourceOverrides;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
interface WebServiceProps extends SimpleServiceContainer {
|
|
43
|
+
/**
|
|
44
|
+
* #### CORS settings. Overrides any CORS headers from your application.
|
|
45
|
+
*
|
|
46
|
+
* ---
|
|
47
|
+
*
|
|
48
|
+
* Only works with `http-api-gateway` load balancing (the default).
|
|
49
|
+
*/
|
|
50
|
+
cors?: HttpApiCorsConfig;
|
|
51
|
+
/**
|
|
52
|
+
* #### Custom domains (e.g., `api.example.com`). Stacktape auto-creates DNS records and TLS certificates.
|
|
53
|
+
*
|
|
54
|
+
* ---
|
|
55
|
+
*
|
|
56
|
+
* Your domain must be added as a Route53 hosted zone in your AWS account first.
|
|
57
|
+
*/
|
|
58
|
+
customDomains?: DomainConfiguration[];
|
|
59
|
+
/**
|
|
60
|
+
* #### How traffic reaches your containers. Affects pricing, features, and protocol support.
|
|
61
|
+
*
|
|
62
|
+
* ---
|
|
63
|
+
*
|
|
64
|
+
* - **`http-api-gateway`** (default): Pay-per-request (~$1/million requests). Best for most apps.
|
|
65
|
+
* Cheapest at low traffic, but costs grow with volume.
|
|
66
|
+
*
|
|
67
|
+
* - **`application-load-balancer`**: Flat ~$18/month + usage. Required for gradual deployments
|
|
68
|
+
* (`deployment`), firewalls (`useFirewall`), and WebSocket support.
|
|
69
|
+
* More cost-effective above ~500k requests/day. AWS Free Tier eligible.
|
|
70
|
+
*
|
|
71
|
+
* - **`network-load-balancer`**: For non-HTTP traffic (TCP/TLS) like MQTT, game servers, or custom protocols.
|
|
72
|
+
* Requires explicit `ports` configuration. Does not support CDN, firewall, or gradual deployments.
|
|
73
|
+
*/
|
|
74
|
+
loadBalancing?: WebServiceHttpApiGatewayLoadBalancing | WebServiceAlbLoadBalancing | WebServiceNlbLoadBalancing;
|
|
75
|
+
/**
|
|
76
|
+
* #### Put a CDN (CloudFront) in front of this service for caching and lower latency worldwide.
|
|
77
|
+
*/
|
|
78
|
+
cdn?: CdnConfiguration;
|
|
79
|
+
/**
|
|
80
|
+
* #### Alarms for this service (merged with global alarms from the Stacktape Console).
|
|
81
|
+
*/
|
|
82
|
+
alarms?: (HttpApiGatewayAlarm | ApplicationLoadBalancerAlarm)[];
|
|
83
|
+
/**
|
|
84
|
+
* #### Global alarm names to exclude from this service.
|
|
85
|
+
*/
|
|
86
|
+
disabledGlobalAlarms?: string[];
|
|
87
|
+
/**
|
|
88
|
+
* #### Gradual traffic shifting for safe deployments (canary, linear, or all-at-once).
|
|
89
|
+
*
|
|
90
|
+
* ---
|
|
91
|
+
*
|
|
92
|
+
* Requires `loadBalancing` type `application-load-balancer`.
|
|
93
|
+
*/
|
|
94
|
+
deployment?: ContainerWorkloadDeploymentConfig;
|
|
95
|
+
/**
|
|
96
|
+
* #### Name of a `web-app-firewall` resource to protect this service from common web exploits.
|
|
97
|
+
*/
|
|
98
|
+
useFirewall?: string;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
type WebServiceReferencableParam = HttpApiGatewayReferencableParam | ContainerWorkloadReferencableParam;
|
|
102
|
+
|
|
103
|
+
interface WebServiceHttpApiGatewayLoadBalancing {
|
|
104
|
+
type: HttpApiGateway['type'];
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
interface WebServiceAlbLoadBalancing {
|
|
108
|
+
type: ApplicationLoadBalancer['type'];
|
|
109
|
+
properties?: WebServiceAlbLoadBalancingProps;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
interface WebServiceAlbLoadBalancingProps {
|
|
113
|
+
/**
|
|
114
|
+
* #### Path the load balancer pings to check container health.
|
|
115
|
+
* @default /
|
|
116
|
+
*/
|
|
117
|
+
healthcheckPath?: string;
|
|
118
|
+
/**
|
|
119
|
+
* #### Seconds between health checks.
|
|
120
|
+
* @default 5
|
|
121
|
+
*/
|
|
122
|
+
healthcheckInterval?: number;
|
|
123
|
+
/**
|
|
124
|
+
* #### Seconds before a health check is considered failed.
|
|
125
|
+
* @default 4
|
|
126
|
+
*/
|
|
127
|
+
healthcheckTimeout?: number;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
interface WebServiceNlbLoadBalancing {
|
|
131
|
+
type: NetworkLoadBalancer['type'];
|
|
132
|
+
properties: WebServiceNlbLoadBalancingProps;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
interface WebServiceNlbLoadBalancingProps {
|
|
136
|
+
/**
|
|
137
|
+
* #### Health check path (only used when `healthCheckProtocol` is `HTTP`).
|
|
138
|
+
* @default /
|
|
139
|
+
*/
|
|
140
|
+
healthcheckPath?: string;
|
|
141
|
+
/**
|
|
142
|
+
* #### Seconds between health checks (5-300).
|
|
143
|
+
* @default 5
|
|
144
|
+
*/
|
|
145
|
+
healthcheckInterval?: number;
|
|
146
|
+
/**
|
|
147
|
+
* #### Seconds before a health check is considered failed (2-120).
|
|
148
|
+
* @default 4
|
|
149
|
+
*/
|
|
150
|
+
healthcheckTimeout?: number;
|
|
151
|
+
/**
|
|
152
|
+
* #### Health check protocol: `TCP` (port check) or `HTTP` (path check).
|
|
153
|
+
* @default TCP
|
|
154
|
+
*/
|
|
155
|
+
healthCheckProtocol?: 'HTTP' | 'TCP';
|
|
156
|
+
/**
|
|
157
|
+
* #### Health check port. Defaults to the traffic port.
|
|
158
|
+
*/
|
|
159
|
+
healthCheckPort?: number;
|
|
160
|
+
ports: WebServiceNlbLoadBalancingPort[];
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
interface WebServiceNlbLoadBalancingPort {
|
|
164
|
+
/**
|
|
165
|
+
* #### Public port exposed by the load balancer.
|
|
166
|
+
*/
|
|
167
|
+
port: number;
|
|
168
|
+
/**
|
|
169
|
+
* #### Protocol: `TLS` (encrypted) or `TCP` (raw).
|
|
170
|
+
* @default TLS
|
|
171
|
+
*/
|
|
172
|
+
protocol?: 'TCP' | 'TLS';
|
|
173
|
+
/**
|
|
174
|
+
* #### Port on the container that receives the traffic. Defaults to `port`.
|
|
175
|
+
*/
|
|
176
|
+
containerPort?: number;
|
|
177
|
+
}
|
|
178
|
+
```
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
docType: config-ref
|
|
3
|
+
title: Worker Service
|
|
4
|
+
resourceType: worker-service
|
|
5
|
+
tags:
|
|
6
|
+
- worker-service
|
|
7
|
+
- background
|
|
8
|
+
- worker
|
|
9
|
+
- async-worker
|
|
10
|
+
source: types/stacktape-config/worker-services.d.ts
|
|
11
|
+
priority: 1
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Worker Service
|
|
15
|
+
|
|
16
|
+
Always-on container with no public URL. For background workers, queue processors, and internal tasks.
|
|
17
|
+
|
|
18
|
+
Runs 24/7 inside your VPC. Not reachable from the internet. Can connect to databases, queues, and other resources.
|
|
19
|
+
|
|
20
|
+
Resource type: `worker-service`
|
|
21
|
+
|
|
22
|
+
## TypeScript Definition
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
/**
|
|
26
|
+
* #### Always-on container with no public URL. For background workers, queue processors, and internal tasks.
|
|
27
|
+
*
|
|
28
|
+
* ---
|
|
29
|
+
*
|
|
30
|
+
* Runs 24/7 inside your VPC. Not reachable from the internet. Can connect to databases, queues, and other resources.
|
|
31
|
+
*/
|
|
32
|
+
interface WorkerService {
|
|
33
|
+
type: 'worker-service';
|
|
34
|
+
properties: WorkerServiceProps;
|
|
35
|
+
overrides?: ResourceOverrides;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
interface WorkerServiceProps extends SimpleServiceContainer {}
|
|
39
|
+
|
|
40
|
+
type WorkerServiceReferencableParams = ContainerWorkloadReferencableParam;
|
|
41
|
+
```
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
---
|
|
2
|
+
docType: getting-started
|
|
3
|
+
title: Console
|
|
4
|
+
tags:
|
|
5
|
+
- console
|
|
6
|
+
- getting-started
|
|
7
|
+
source: docs/_curated-docs/getting-started/console.mdx
|
|
8
|
+
priority: 2
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Console
|
|
12
|
+
|
|
13
|
+
The Stacktape Console is a web-based interface for managing your infrastructure. It complements the CLI with visual tools for deployments, monitoring, and team collaboration.
|
|
14
|
+
|
|
15
|
+
**URL:** [console.stacktape.com](https://console.stacktape.com)
|
|
16
|
+
|
|
17
|
+
## Key Features
|
|
18
|
+
|
|
19
|
+
### GitOps Deployments
|
|
20
|
+
|
|
21
|
+
Connect your GitHub, GitLab, or Bitbucket repository and deploy automatically:
|
|
22
|
+
|
|
23
|
+
- **Push-to-deploy**: Automatically deploy when you push to a branch
|
|
24
|
+
- **Preview environments**: Create temporary environments for pull requests
|
|
25
|
+
- **PR comments**: Deployment status and links posted directly to your PRs
|
|
26
|
+
|
|
27
|
+
`[IMAGE PLACEHOLDER: console-gitops-setup]`
|
|
28
|
+
|
|
29
|
+
### Live Deployment Logs
|
|
30
|
+
|
|
31
|
+
Watch your deployments in real-time with streaming logs from AWS CodeBuild or EC2 runners.
|
|
32
|
+
|
|
33
|
+
`[IMAGE PLACEHOLDER: console-deployment-logs]`
|
|
34
|
+
|
|
35
|
+
### Logs Browser
|
|
36
|
+
|
|
37
|
+
Browse and search CloudWatch logs with an intuitive interface:
|
|
38
|
+
|
|
39
|
+
- Filter by time range
|
|
40
|
+
- Search with patterns
|
|
41
|
+
- Live tail for real-time debugging
|
|
42
|
+
|
|
43
|
+
`[IMAGE PLACEHOLDER: console-logs-browser]`
|
|
44
|
+
|
|
45
|
+
### Metrics Dashboard
|
|
46
|
+
|
|
47
|
+
Visualize metrics for all your resources:
|
|
48
|
+
|
|
49
|
+
- Lambda invocations, duration, errors
|
|
50
|
+
- ECS CPU and memory utilization
|
|
51
|
+
- RDS connections, IOPS, latency
|
|
52
|
+
- API Gateway requests and latency
|
|
53
|
+
- And more...
|
|
54
|
+
|
|
55
|
+
`[IMAGE PLACEHOLDER: console-metrics-dashboard]`
|
|
56
|
+
|
|
57
|
+
### Cost Management
|
|
58
|
+
|
|
59
|
+
Track AWS spending across all your stacks:
|
|
60
|
+
|
|
61
|
+
- Per-stack cost breakdown
|
|
62
|
+
- Monthly trends and comparisons
|
|
63
|
+
- Service-level cost attribution
|
|
64
|
+
- Multi-account aggregation
|
|
65
|
+
|
|
66
|
+
`[IMAGE PLACEHOLDER: console-costs-page]`
|
|
67
|
+
|
|
68
|
+
### S3 File Browser
|
|
69
|
+
|
|
70
|
+
Browse, upload, and manage files in your S3 buckets directly from the console:
|
|
71
|
+
|
|
72
|
+
- Folder navigation
|
|
73
|
+
- File upload and download
|
|
74
|
+
- In-browser text editor
|
|
75
|
+
- Delete operations
|
|
76
|
+
|
|
77
|
+
`[IMAGE PLACEHOLDER: console-s3-browser]`
|
|
78
|
+
|
|
79
|
+
### Remote Sessions
|
|
80
|
+
|
|
81
|
+
Open a terminal inside your running containers without SSH keys:
|
|
82
|
+
|
|
83
|
+
- Secure SSM-based connections
|
|
84
|
+
- No port exposure required
|
|
85
|
+
- Works with private containers
|
|
86
|
+
|
|
87
|
+
`[IMAGE PLACEHOLDER: console-remote-session]`
|
|
88
|
+
|
|
89
|
+
### Secrets Management
|
|
90
|
+
|
|
91
|
+
Create and manage secrets stored in AWS Secrets Manager:
|
|
92
|
+
|
|
93
|
+
- Create, view, and delete secrets
|
|
94
|
+
- Works across all connected AWS accounts
|
|
95
|
+
- Reference secrets in your configurations with `$Secret('name')`
|
|
96
|
+
|
|
97
|
+
`[IMAGE PLACEHOLDER: console-secrets-manager]`
|
|
98
|
+
|
|
99
|
+
### Monitoring & Alarms
|
|
100
|
+
|
|
101
|
+
Set up alerts for your infrastructure:
|
|
102
|
+
|
|
103
|
+
- Lambda error rate thresholds
|
|
104
|
+
- Database CPU and storage alerts
|
|
105
|
+
- API latency warnings
|
|
106
|
+
- Notifications via Slack, Teams, or email
|
|
107
|
+
|
|
108
|
+
## Getting Started with the Console
|
|
109
|
+
|
|
110
|
+
### Step 1: Create an Account
|
|
111
|
+
|
|
112
|
+
Visit [console.stacktape.com](https://console.stacktape.com) and sign up with:
|
|
113
|
+
|
|
114
|
+
- Email and password
|
|
115
|
+
- GitHub OAuth
|
|
116
|
+
- Google OAuth
|
|
117
|
+
|
|
118
|
+
### Step 2: Connect Your AWS Account
|
|
119
|
+
|
|
120
|
+
The console needs access to your AWS account to deploy and manage resources.
|
|
121
|
+
|
|
122
|
+
1. Go to **Settings** → **AWS Accounts**
|
|
123
|
+
2. Click **Connect AWS Account**
|
|
124
|
+
3. You'll be redirected to AWS to create a CloudFormation stack
|
|
125
|
+
4. This stack creates:
|
|
126
|
+
- An IAM role for Stacktape to assume
|
|
127
|
+
- An S3 bucket for cost reports
|
|
128
|
+
5. Wait about 1 minute for the stack to complete
|
|
129
|
+
6. Your account shows as "Active"
|
|
130
|
+
|
|
131
|
+
`[IMAGE PLACEHOLDER: console-aws-account-connection]`
|
|
132
|
+
|
|
133
|
+
### Step 3: Create Your First Project
|
|
134
|
+
|
|
135
|
+
1. Click **New Project**
|
|
136
|
+
2. Choose your deployment source:
|
|
137
|
+
- **From Git repository**: Connect to GitHub, GitLab, or Bitbucket
|
|
138
|
+
- **From template**: Start with a pre-built example
|
|
139
|
+
3. Configure your project settings:
|
|
140
|
+
- Project name
|
|
141
|
+
- Default stage and region
|
|
142
|
+
- Build settings
|
|
143
|
+
|
|
144
|
+
### Step 4: Deploy
|
|
145
|
+
|
|
146
|
+
For Git-connected projects:
|
|
147
|
+
|
|
148
|
+
1. Push code to your repository
|
|
149
|
+
2. The console automatically detects changes
|
|
150
|
+
3. Watch the deployment progress in real-time
|
|
151
|
+
|
|
152
|
+
Or trigger a manual deployment from the console.
|
|
153
|
+
|
|
154
|
+
## Console vs CLI
|
|
155
|
+
|
|
156
|
+
Both tools deploy to the same infrastructure. Choose based on your workflow:
|
|
157
|
+
|
|
158
|
+
| Feature | CLI | Console |
|
|
159
|
+
| ------------------------- | ------------------ | ----------- |
|
|
160
|
+
| Local development | ✅ | ❌ |
|
|
161
|
+
| GitOps/CI-CD | Via GitHub Actions | ✅ Built-in |
|
|
162
|
+
| Log browsing | Basic | ✅ Advanced |
|
|
163
|
+
| Metrics visualization | ❌ | ✅ |
|
|
164
|
+
| Cost tracking | ❌ | ✅ |
|
|
165
|
+
| Team collaboration | ❌ | ✅ |
|
|
166
|
+
| S3 file management | ❌ | ✅ |
|
|
167
|
+
| Remote container sessions | ✅ | ✅ |
|
|
168
|
+
|
|
169
|
+
**Typical workflow:**
|
|
170
|
+
|
|
171
|
+
- Use the **CLI** for local development and quick iterations
|
|
172
|
+
- Use the **Console** for production deployments, monitoring, and team collaboration
|
|
173
|
+
|
|
174
|
+
## Pricing
|
|
175
|
+
|
|
176
|
+
The Stacktape CLI is **free and open source**. The Console has the following tiers:
|
|
177
|
+
|
|
178
|
+
| Feature | Free | Flexible | Enterprise |
|
|
179
|
+
| -------------------- | --------- | --------- | ---------------------------- |
|
|
180
|
+
| CLI deployments | ✅ | ✅ | ✅ |
|
|
181
|
+
| Console deployments | Limited | ✅ | ✅ |
|
|
182
|
+
| GitOps | ❌ | ✅ | ✅ |
|
|
183
|
+
| Preview environments | ❌ | ✅ | ✅ |
|
|
184
|
+
| Logs browser | Limited | ✅ | ✅ |
|
|
185
|
+
| Metrics | Limited | ✅ | ✅ |
|
|
186
|
+
| Cost tracking | ❌ | ✅ | ✅ |
|
|
187
|
+
| Team members | 1 | Unlimited | Unlimited |
|
|
188
|
+
| Support | Community | Standard | Premium (8-min avg response) |
|
|
189
|
+
|
|
190
|
+
See [stacktape.com/pricing](https://stacktape.com/pricing) for current pricing.
|
|
191
|
+
|
|
192
|
+
## Team Collaboration
|
|
193
|
+
|
|
194
|
+
### Invite Team Members
|
|
195
|
+
|
|
196
|
+
1. Go to **Settings** → **Team**
|
|
197
|
+
2. Click **Invite Member**
|
|
198
|
+
3. Enter their email address
|
|
199
|
+
4. Choose a role:
|
|
200
|
+
- **Owner**: Full access, billing management
|
|
201
|
+
- **Admin**: Full access, no billing
|
|
202
|
+
- **Member**: Deploy and view access
|
|
203
|
+
|
|
204
|
+
### Multi-Factor Authentication
|
|
205
|
+
|
|
206
|
+
Enable MFA for additional security:
|
|
207
|
+
|
|
208
|
+
1. Go to your profile settings
|
|
209
|
+
2. Enable MFA
|
|
210
|
+
3. Choose TOTP (authenticator app) or SMS
|
|
211
|
+
|
|
212
|
+
## API Keys
|
|
213
|
+
|
|
214
|
+
Generate API keys for programmatic access:
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
# Set your API key for CLI authentication
|
|
218
|
+
stacktape login --apiKey YOUR_API_KEY
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Or use in CI/CD environments:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
export STACKTAPE_API_KEY=your-api-key
|
|
225
|
+
stacktape deploy --stage production --region us-east-1
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Next steps
|
|
229
|
+
|
|
230
|
+
- [Intro](/getting-started/intro) - Get started with Stacktape
|
|
231
|
+
- [Workflow](/getting-started/workflow) - Understand the development workflow
|
|
232
|
+
- [Dev Mode](/getting-started/dev-mode) - Local development
|