container-superposition 0.1.1
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/README.md +843 -0
- package/dist/scripts/init.d.ts +3 -0
- package/dist/scripts/init.d.ts.map +1 -0
- package/dist/scripts/init.js +1190 -0
- package/dist/scripts/init.js.map +1 -0
- package/dist/scripts/migrate-to-manifests.d.ts +12 -0
- package/dist/scripts/migrate-to-manifests.d.ts.map +1 -0
- package/dist/scripts/migrate-to-manifests.js +230 -0
- package/dist/scripts/migrate-to-manifests.js.map +1 -0
- package/dist/tool/questionnaire/composer.d.ts +6 -0
- package/dist/tool/questionnaire/composer.d.ts.map +1 -0
- package/dist/tool/questionnaire/composer.js +1232 -0
- package/dist/tool/questionnaire/composer.js.map +1 -0
- package/dist/tool/readme/markdown-parser.d.ts +30 -0
- package/dist/tool/readme/markdown-parser.d.ts.map +1 -0
- package/dist/tool/readme/markdown-parser.js +139 -0
- package/dist/tool/readme/markdown-parser.js.map +1 -0
- package/dist/tool/readme/readme-generator.d.ts +9 -0
- package/dist/tool/readme/readme-generator.d.ts.map +1 -0
- package/dist/tool/readme/readme-generator.js +422 -0
- package/dist/tool/readme/readme-generator.js.map +1 -0
- package/dist/tool/schema/custom-loader.d.ts +17 -0
- package/dist/tool/schema/custom-loader.d.ts.map +1 -0
- package/dist/tool/schema/custom-loader.js +149 -0
- package/dist/tool/schema/custom-loader.js.map +1 -0
- package/dist/tool/schema/overlay-loader.d.ts +47 -0
- package/dist/tool/schema/overlay-loader.d.ts.map +1 -0
- package/dist/tool/schema/overlay-loader.js +252 -0
- package/dist/tool/schema/overlay-loader.js.map +1 -0
- package/dist/tool/schema/types.d.ts +212 -0
- package/dist/tool/schema/types.d.ts.map +1 -0
- package/dist/tool/schema/types.js +5 -0
- package/dist/tool/schema/types.js.map +1 -0
- package/docs/README.md +308 -0
- package/docs/architecture.md +233 -0
- package/docs/creating-overlays.md +549 -0
- package/docs/custom-patches.md +540 -0
- package/docs/dependencies.md +279 -0
- package/docs/examples/custom-patches-example.md +85 -0
- package/docs/examples.md +576 -0
- package/docs/messaging-comparison.md +265 -0
- package/docs/messaging-quick-start.md +385 -0
- package/docs/observability-workflow.md +537 -0
- package/docs/overlay-manifest-refactoring.md +214 -0
- package/docs/overlay-metadata-archive.md +54 -0
- package/docs/overlays.md +523 -0
- package/docs/presets-architecture.md +498 -0
- package/docs/presets.md +366 -0
- package/docs/publishing.md +476 -0
- package/docs/quick-reference.md +326 -0
- package/docs/ux.md +170 -0
- package/features/README.md +85 -0
- package/features/cross-distro-packages/README.md +146 -0
- package/features/cross-distro-packages/devcontainer-feature.json +20 -0
- package/features/cross-distro-packages/install.sh +58 -0
- package/features/local-secrets-manager/devcontainer-feature.json +18 -0
- package/features/local-secrets-manager/install.sh +127 -0
- package/features/project-scaffolder/devcontainer-feature.json +24 -0
- package/features/project-scaffolder/install.sh +100 -0
- package/features/team-conventions/devcontainer-feature.json +24 -0
- package/features/team-conventions/install.sh +93 -0
- package/overlays/.registry/README.md +14 -0
- package/overlays/.registry/base-images.yml +26 -0
- package/overlays/.registry/base-templates.yml +7 -0
- package/overlays/README.md +155 -0
- package/overlays/alertmanager/.env.example +5 -0
- package/overlays/alertmanager/README.md +465 -0
- package/overlays/alertmanager/alert-rules.yml +56 -0
- package/overlays/alertmanager/alertmanager.yml +42 -0
- package/overlays/alertmanager/devcontainer.patch.json +12 -0
- package/overlays/alertmanager/docker-compose.yml +20 -0
- package/overlays/alertmanager/overlay.yml +17 -0
- package/overlays/alertmanager/setup.sh +53 -0
- package/overlays/alertmanager/verify.sh +31 -0
- package/overlays/aws-cli/README.md +473 -0
- package/overlays/aws-cli/devcontainer.patch.json +13 -0
- package/overlays/aws-cli/overlay.yml +13 -0
- package/overlays/azure-cli/README.md +551 -0
- package/overlays/azure-cli/devcontainer.patch.json +8 -0
- package/overlays/azure-cli/overlay.yml +13 -0
- package/overlays/bun/README.md +312 -0
- package/overlays/bun/devcontainer.patch.json +41 -0
- package/overlays/bun/overlay.yml +16 -0
- package/overlays/bun/setup.sh +79 -0
- package/overlays/bun/verify.sh +30 -0
- package/overlays/codex/README.md +128 -0
- package/overlays/codex/devcontainer.patch.json +3 -0
- package/overlays/codex/overlay.yml +14 -0
- package/overlays/codex/setup.sh +24 -0
- package/overlays/codex/verify.sh +30 -0
- package/overlays/commitlint/README.md +333 -0
- package/overlays/commitlint/devcontainer.patch.json +8 -0
- package/overlays/commitlint/overlay.yml +16 -0
- package/overlays/commitlint/setup.sh +234 -0
- package/overlays/direnv/README.md +504 -0
- package/overlays/direnv/devcontainer.patch.json +6 -0
- package/overlays/direnv/overlay.yml +13 -0
- package/overlays/direnv/setup.sh +139 -0
- package/overlays/docker-in-docker/README.md +534 -0
- package/overlays/docker-in-docker/devcontainer.patch.json +10 -0
- package/overlays/docker-in-docker/overlay.yml +13 -0
- package/overlays/docker-sock/README.md +256 -0
- package/overlays/docker-sock/devcontainer.patch.json +9 -0
- package/overlays/docker-sock/docker-compose.yml +8 -0
- package/overlays/docker-sock/overlay.yml +13 -0
- package/overlays/dotnet/README.md +147 -0
- package/overlays/dotnet/devcontainer.patch.json +51 -0
- package/overlays/dotnet/global-tools.txt +24 -0
- package/overlays/dotnet/overlay.yml +13 -0
- package/overlays/dotnet/setup.sh +51 -0
- package/overlays/dotnet/verify.sh +26 -0
- package/overlays/gcloud/README.md +269 -0
- package/overlays/gcloud/devcontainer.patch.json +14 -0
- package/overlays/gcloud/overlay.yml +14 -0
- package/overlays/gcloud/verify.sh +52 -0
- package/overlays/git-helpers/README.md +168 -0
- package/overlays/git-helpers/devcontainer.patch.json +33 -0
- package/overlays/git-helpers/overlay.yml +15 -0
- package/overlays/git-helpers/setup.sh +91 -0
- package/overlays/go/README.md +293 -0
- package/overlays/go/devcontainer.patch.json +43 -0
- package/overlays/go/overlay.yml +15 -0
- package/overlays/go/setup.sh +33 -0
- package/overlays/go/verify.sh +40 -0
- package/overlays/grafana/.env.example +9 -0
- package/overlays/grafana/README.md +462 -0
- package/overlays/grafana/dashboard-provider.yml +11 -0
- package/overlays/grafana/dashboards/observability-overview.json +263 -0
- package/overlays/grafana/devcontainer.patch.json +12 -0
- package/overlays/grafana/docker-compose.yml +27 -0
- package/overlays/grafana/grafana-datasources.yml +57 -0
- package/overlays/grafana/overlay.yml +21 -0
- package/overlays/grafana/verify.sh +34 -0
- package/overlays/jaeger/.env.example +7 -0
- package/overlays/jaeger/README.md +867 -0
- package/overlays/jaeger/devcontainer.patch.json +12 -0
- package/overlays/jaeger/docker-compose.yml +17 -0
- package/overlays/jaeger/overlay.yml +19 -0
- package/overlays/java/README.md +267 -0
- package/overlays/java/devcontainer.patch.json +44 -0
- package/overlays/java/overlay.yml +16 -0
- package/overlays/java/setup.sh +41 -0
- package/overlays/java/verify.sh +42 -0
- package/overlays/just/README.md +443 -0
- package/overlays/just/devcontainer.patch.json +3 -0
- package/overlays/just/overlay.yml +13 -0
- package/overlays/just/setup.sh +182 -0
- package/overlays/kubectl-helm/README.md +660 -0
- package/overlays/kubectl-helm/devcontainer.patch.json +10 -0
- package/overlays/kubectl-helm/overlay.yml +13 -0
- package/overlays/loki/.env.example +5 -0
- package/overlays/loki/README.md +1156 -0
- package/overlays/loki/devcontainer.patch.json +12 -0
- package/overlays/loki/docker-compose.yml +18 -0
- package/overlays/loki/loki-config.yaml +45 -0
- package/overlays/loki/overlay.yml +17 -0
- package/overlays/minio/.env.example +9 -0
- package/overlays/minio/README.md +639 -0
- package/overlays/minio/devcontainer.patch.json +30 -0
- package/overlays/minio/docker-compose.yml +28 -0
- package/overlays/minio/overlay.yml +18 -0
- package/overlays/minio/setup.sh +61 -0
- package/overlays/minio/verify.sh +64 -0
- package/overlays/mkdocs/README.md +309 -0
- package/overlays/mkdocs/devcontainer.patch.json +24 -0
- package/overlays/mkdocs/overlay.yml +15 -0
- package/overlays/modern-cli-tools/README.md +556 -0
- package/overlays/modern-cli-tools/devcontainer.patch.json +3 -0
- package/overlays/modern-cli-tools/overlay.yml +13 -0
- package/overlays/modern-cli-tools/setup.sh +153 -0
- package/overlays/mongodb/.env.example +9 -0
- package/overlays/mongodb/README.md +481 -0
- package/overlays/mongodb/devcontainer.patch.json +32 -0
- package/overlays/mongodb/docker-compose.yml +44 -0
- package/overlays/mongodb/overlay.yml +17 -0
- package/overlays/mongodb/verify.sh +48 -0
- package/overlays/mysql/.env.example +11 -0
- package/overlays/mysql/README.md +542 -0
- package/overlays/mysql/devcontainer.patch.json +34 -0
- package/overlays/mysql/docker-compose.yml +55 -0
- package/overlays/mysql/overlay.yml +16 -0
- package/overlays/mysql/verify.sh +48 -0
- package/overlays/nats/.env.example +5 -0
- package/overlays/nats/README.md +762 -0
- package/overlays/nats/devcontainer.patch.json +24 -0
- package/overlays/nats/docker-compose.yml +31 -0
- package/overlays/nats/overlay.yml +18 -0
- package/overlays/nats/verify.sh +50 -0
- package/overlays/ngrok/README.md +503 -0
- package/overlays/ngrok/devcontainer.patch.json +3 -0
- package/overlays/ngrok/overlay.yml +14 -0
- package/overlays/ngrok/setup.sh +125 -0
- package/overlays/nodejs/README.md +192 -0
- package/overlays/nodejs/devcontainer.patch.json +49 -0
- package/overlays/nodejs/global-packages.txt +16 -0
- package/overlays/nodejs/overlay.yml +14 -0
- package/overlays/nodejs/setup.sh +46 -0
- package/overlays/nodejs/verify.sh +32 -0
- package/overlays/otel-collector/.env.example +9 -0
- package/overlays/otel-collector/README.md +1257 -0
- package/overlays/otel-collector/devcontainer.patch.json +28 -0
- package/overlays/otel-collector/docker-compose.yml +22 -0
- package/overlays/otel-collector/otel-collector-config.yaml +68 -0
- package/overlays/otel-collector/overlay.yml +21 -0
- package/overlays/otel-collector/setup.sh +49 -0
- package/overlays/otel-demo-nodejs/.env.example +2 -0
- package/overlays/otel-demo-nodejs/Dockerfile-otel-demo-nodejs +17 -0
- package/overlays/otel-demo-nodejs/README.md +409 -0
- package/overlays/otel-demo-nodejs/devcontainer.patch.json +12 -0
- package/overlays/otel-demo-nodejs/docker-compose.yml +19 -0
- package/overlays/otel-demo-nodejs/overlay.yml +23 -0
- package/overlays/otel-demo-nodejs/package-otel-demo-nodejs.json +20 -0
- package/overlays/otel-demo-nodejs/server-otel-demo-nodejs.js +259 -0
- package/overlays/otel-demo-nodejs/tracing-otel-demo-nodejs.js +57 -0
- package/overlays/otel-demo-nodejs/verify.sh +31 -0
- package/overlays/otel-demo-python/.env.example +2 -0
- package/overlays/otel-demo-python/Dockerfile-otel-demo-python +16 -0
- package/overlays/otel-demo-python/README.md +82 -0
- package/overlays/otel-demo-python/app-otel-demo-python.py +208 -0
- package/overlays/otel-demo-python/devcontainer.patch.json +12 -0
- package/overlays/otel-demo-python/docker-compose.yml +19 -0
- package/overlays/otel-demo-python/overlay.yml +23 -0
- package/overlays/otel-demo-python/requirements-otel-demo-python.txt +4 -0
- package/overlays/otel-demo-python/verify.sh +31 -0
- package/overlays/playwright/README.md +629 -0
- package/overlays/playwright/devcontainer.patch.json +9 -0
- package/overlays/playwright/overlay.yml +13 -0
- package/overlays/postgres/.env.example +6 -0
- package/overlays/postgres/README.md +602 -0
- package/overlays/postgres/devcontainer.patch.json +21 -0
- package/overlays/postgres/docker-compose.yml +22 -0
- package/overlays/postgres/overlay.yml +15 -0
- package/overlays/postgres/verify.sh +45 -0
- package/overlays/powershell/README.md +314 -0
- package/overlays/powershell/devcontainer.patch.json +22 -0
- package/overlays/powershell/overlay.yml +13 -0
- package/overlays/powershell/setup.sh +29 -0
- package/overlays/powershell/verify.sh +38 -0
- package/overlays/pre-commit/README.md +263 -0
- package/overlays/pre-commit/devcontainer.patch.json +9 -0
- package/overlays/pre-commit/overlay.yml +16 -0
- package/overlays/pre-commit/setup.sh +129 -0
- package/overlays/presets/docs-site.yml +118 -0
- package/overlays/presets/fullstack.yml +181 -0
- package/overlays/presets/microservice.yml +118 -0
- package/overlays/presets/web-api.yml +109 -0
- package/overlays/prometheus/.env.example +5 -0
- package/overlays/prometheus/README.md +1246 -0
- package/overlays/prometheus/devcontainer.patch.json +12 -0
- package/overlays/prometheus/docker-compose.yml +22 -0
- package/overlays/prometheus/overlay.yml +17 -0
- package/overlays/prometheus/prometheus.yml +12 -0
- package/overlays/prometheus/verify.sh +34 -0
- package/overlays/promtail/.env.example +2 -0
- package/overlays/promtail/README.md +357 -0
- package/overlays/promtail/devcontainer.patch.json +5 -0
- package/overlays/promtail/docker-compose.yml +16 -0
- package/overlays/promtail/overlay.yml +17 -0
- package/overlays/promtail/promtail-config.yaml +60 -0
- package/overlays/promtail/verify.sh +31 -0
- package/overlays/pulumi/README.md +472 -0
- package/overlays/pulumi/devcontainer.patch.json +13 -0
- package/overlays/pulumi/overlay.yml +14 -0
- package/overlays/pulumi/verify.sh +31 -0
- package/overlays/python/README.md +919 -0
- package/overlays/python/devcontainer.patch.json +41 -0
- package/overlays/python/overlay.yml +12 -0
- package/overlays/python/requirements-overlay.txt +13 -0
- package/overlays/python/setup.sh +47 -0
- package/overlays/python/verify.sh +32 -0
- package/overlays/rabbitmq/.env.example +7 -0
- package/overlays/rabbitmq/README.md +680 -0
- package/overlays/rabbitmq/devcontainer.patch.json +28 -0
- package/overlays/rabbitmq/docker-compose.yml +30 -0
- package/overlays/rabbitmq/overlay.yml +18 -0
- package/overlays/rabbitmq/verify.sh +41 -0
- package/overlays/redis/.env.example +4 -0
- package/overlays/redis/README.md +776 -0
- package/overlays/redis/devcontainer.patch.json +21 -0
- package/overlays/redis/docker-compose.yml +21 -0
- package/overlays/redis/overlay.yml +15 -0
- package/overlays/redis/verify.sh +41 -0
- package/overlays/redpanda/.env.example +10 -0
- package/overlays/redpanda/README.md +703 -0
- package/overlays/redpanda/devcontainer.patch.json +37 -0
- package/overlays/redpanda/docker-compose.yml +67 -0
- package/overlays/redpanda/overlay.yml +21 -0
- package/overlays/redpanda/verify.sh +48 -0
- package/overlays/rust/README.md +299 -0
- package/overlays/rust/devcontainer.patch.json +39 -0
- package/overlays/rust/overlay.yml +15 -0
- package/overlays/rust/setup.sh +36 -0
- package/overlays/rust/verify.sh +51 -0
- package/overlays/sqlite/README.md +584 -0
- package/overlays/sqlite/devcontainer.patch.json +14 -0
- package/overlays/sqlite/overlay.yml +15 -0
- package/overlays/sqlite/setup.sh +27 -0
- package/overlays/sqlite/verify.sh +43 -0
- package/overlays/sqlserver/.env.example +6 -0
- package/overlays/sqlserver/README.md +592 -0
- package/overlays/sqlserver/devcontainer.patch.json +22 -0
- package/overlays/sqlserver/docker-compose.yml +32 -0
- package/overlays/sqlserver/overlay.yml +17 -0
- package/overlays/sqlserver/verify.sh +30 -0
- package/overlays/tempo/.env.example +5 -0
- package/overlays/tempo/README.md +273 -0
- package/overlays/tempo/devcontainer.patch.json +12 -0
- package/overlays/tempo/docker-compose.yml +20 -0
- package/overlays/tempo/overlay.yml +20 -0
- package/overlays/tempo/tempo-config.yaml +32 -0
- package/overlays/tempo/verify.sh +31 -0
- package/overlays/terraform/README.md +389 -0
- package/overlays/terraform/devcontainer.patch.json +15 -0
- package/overlays/terraform/overlay.yml +14 -0
- package/overlays/terraform/verify.sh +63 -0
- package/package.json +74 -0
- package/templates/README.md +285 -0
- package/templates/compose/.devcontainer/devcontainer.json +46 -0
- package/templates/compose/.devcontainer/docker-compose.yml +12 -0
- package/templates/compose/README.md +20 -0
- package/templates/plain/.devcontainer/devcontainer.json +35 -0
- package/templates/plain/README.md +21 -0
- package/tool/README.md +281 -0
- package/tool/schema/base-images.schema.json +43 -0
- package/tool/schema/base-templates.schema.json +34 -0
- package/tool/schema/config.schema.json +71 -0
- package/tool/schema/overlay-manifest.schema.json +86 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
global:
|
|
2
|
+
resolve_timeout: 5m
|
|
3
|
+
|
|
4
|
+
route:
|
|
5
|
+
group_by: ['alertname', 'cluster', 'service']
|
|
6
|
+
group_wait: 10s
|
|
7
|
+
group_interval: 10s
|
|
8
|
+
repeat_interval: 12h
|
|
9
|
+
receiver: 'default'
|
|
10
|
+
|
|
11
|
+
routes:
|
|
12
|
+
# Route critical alerts to webhook
|
|
13
|
+
- match:
|
|
14
|
+
severity: critical
|
|
15
|
+
receiver: webhook
|
|
16
|
+
continue: true
|
|
17
|
+
|
|
18
|
+
# Route warning alerts with longer wait
|
|
19
|
+
- match:
|
|
20
|
+
severity: warning
|
|
21
|
+
receiver: default
|
|
22
|
+
group_wait: 30s
|
|
23
|
+
|
|
24
|
+
receivers:
|
|
25
|
+
- name: 'default'
|
|
26
|
+
# Example: Log alerts to console
|
|
27
|
+
# In production, configure email, Slack, PagerDuty, etc.
|
|
28
|
+
|
|
29
|
+
- name: 'webhook'
|
|
30
|
+
webhook_configs:
|
|
31
|
+
- url: 'http://devcontainer:5001/alerts' # Replace with your webhook service
|
|
32
|
+
send_resolved: true
|
|
33
|
+
# Example webhook receiver - update URL to match your webhook service
|
|
34
|
+
# For development, you can run a simple webhook receiver in the devcontainer
|
|
35
|
+
|
|
36
|
+
inhibit_rules:
|
|
37
|
+
# Inhibit warning if critical is firing
|
|
38
|
+
- source_match:
|
|
39
|
+
severity: 'critical'
|
|
40
|
+
target_match:
|
|
41
|
+
severity: 'warning'
|
|
42
|
+
equal: ['alertname', 'cluster', 'service']
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
|
|
3
|
+
"runServices": ["alertmanager"],
|
|
4
|
+
"_serviceOrder": 2,
|
|
5
|
+
"forwardPorts": [9093],
|
|
6
|
+
"portsAttributes": {
|
|
7
|
+
"9093": {
|
|
8
|
+
"label": "Alertmanager UI",
|
|
9
|
+
"onAutoForward": "openBrowser"
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
version: '3.8'
|
|
2
|
+
services:
|
|
3
|
+
alertmanager:
|
|
4
|
+
image: prom/alertmanager:${ALERTMANAGER_VERSION:-latest}
|
|
5
|
+
command:
|
|
6
|
+
- '--config.file=/etc/alertmanager/alertmanager.yml'
|
|
7
|
+
- '--storage.path=/alertmanager'
|
|
8
|
+
volumes:
|
|
9
|
+
- ./alertmanager-alertmanager.yml:/etc/alertmanager/alertmanager.yml
|
|
10
|
+
- alertmanager_data:/alertmanager
|
|
11
|
+
ports:
|
|
12
|
+
- '${ALERTMANAGER_PORT:-9093}:9093'
|
|
13
|
+
networks:
|
|
14
|
+
- devnet
|
|
15
|
+
|
|
16
|
+
volumes:
|
|
17
|
+
alertmanager_data:
|
|
18
|
+
|
|
19
|
+
networks:
|
|
20
|
+
devnet:
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
id: alertmanager
|
|
2
|
+
name: Alertmanager
|
|
3
|
+
description: Alert routing and notification management for Prometheus
|
|
4
|
+
category: observability
|
|
5
|
+
supports:
|
|
6
|
+
- compose
|
|
7
|
+
requires:
|
|
8
|
+
- prometheus
|
|
9
|
+
suggests: []
|
|
10
|
+
conflicts: []
|
|
11
|
+
tags:
|
|
12
|
+
- observability
|
|
13
|
+
- alerts
|
|
14
|
+
- prometheus
|
|
15
|
+
ports:
|
|
16
|
+
- 9093
|
|
17
|
+
order: 2
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Alertmanager setup script - Updates Prometheus configuration
|
|
3
|
+
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
echo "🔧 Setting up Alertmanager integration..."
|
|
7
|
+
|
|
8
|
+
# Determine workspace root dynamically to support both /workspaces/* and /workspace layouts
|
|
9
|
+
WORKSPACE_ROOT="${LOCAL_WORKSPACE_FOLDER:-$PWD}"
|
|
10
|
+
|
|
11
|
+
# If the current root does not contain a .devcontainer, try common devcontainer locations
|
|
12
|
+
if [ ! -d "$WORKSPACE_ROOT/.devcontainer" ]; then
|
|
13
|
+
# Try to detect a workspace under /workspaces (compose templates)
|
|
14
|
+
if [ -d "/workspaces" ]; then
|
|
15
|
+
FIRST_WORKSPACE_DIR="$(find /workspaces -maxdepth 1 -mindepth 1 -type d 2>/dev/null | head -n 1)"
|
|
16
|
+
if [ -n "$FIRST_WORKSPACE_DIR" ] && [ -d "$FIRST_WORKSPACE_DIR/.devcontainer" ]; then
|
|
17
|
+
WORKSPACE_ROOT="$FIRST_WORKSPACE_DIR"
|
|
18
|
+
fi
|
|
19
|
+
fi
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
# Fallback to /workspace if it exists and contains a .devcontainer (non-compose setups)
|
|
23
|
+
if [ ! -d "$WORKSPACE_ROOT/.devcontainer" ] && [ -d "/workspace/.devcontainer" ]; then
|
|
24
|
+
WORKSPACE_ROOT="/workspace"
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
PROMETHEUS_CONFIG="$WORKSPACE_ROOT/.devcontainer/prometheus-prometheus.yml"
|
|
28
|
+
|
|
29
|
+
# Check if Prometheus config exists
|
|
30
|
+
if [ -f "$PROMETHEUS_CONFIG" ]; then
|
|
31
|
+
echo "📝 Updating Prometheus configuration for Alertmanager integration..."
|
|
32
|
+
|
|
33
|
+
# Check if alerting section already exists
|
|
34
|
+
if ! grep -q "alerting:" "$PROMETHEUS_CONFIG"; then
|
|
35
|
+
# Add alerting configuration
|
|
36
|
+
cat >> "$PROMETHEUS_CONFIG" << 'EOF'
|
|
37
|
+
|
|
38
|
+
# Alertmanager configuration
|
|
39
|
+
alerting:
|
|
40
|
+
alertmanagers:
|
|
41
|
+
- static_configs:
|
|
42
|
+
- targets: ['alertmanager:9093']
|
|
43
|
+
EOF
|
|
44
|
+
echo "✓ Added Alertmanager configuration to Prometheus"
|
|
45
|
+
echo "ℹ️ Note: Alert rules should be mounted separately in Prometheus docker-compose.yml"
|
|
46
|
+
else
|
|
47
|
+
echo "✓ Alertmanager configuration already present"
|
|
48
|
+
fi
|
|
49
|
+
else
|
|
50
|
+
echo "⚠️ Prometheus configuration not found. Make sure prometheus overlay is enabled."
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
echo "✓ Alertmanager setup complete"
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Alertmanager verification script
|
|
3
|
+
|
|
4
|
+
echo "🔍 Verifying Alertmanager installation..."
|
|
5
|
+
|
|
6
|
+
# Track overall success
|
|
7
|
+
ALL_CHECKS_PASSED=true
|
|
8
|
+
|
|
9
|
+
# Check if Alertmanager service is running
|
|
10
|
+
if docker ps --format '{{.Names}}' | grep -q alertmanager; then
|
|
11
|
+
echo "✓ Alertmanager service is running"
|
|
12
|
+
else
|
|
13
|
+
echo "✗ Alertmanager service is not running"
|
|
14
|
+
ALL_CHECKS_PASSED=false
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
# Check if Alertmanager API is accessible
|
|
18
|
+
if curl -s -o /dev/null -w "%{http_code}" http://alertmanager:9093/-/healthy 2>/dev/null | grep -q "200"; then
|
|
19
|
+
echo "✓ Alertmanager API is accessible"
|
|
20
|
+
else
|
|
21
|
+
echo "⚠️ Alertmanager API not responding yet (may still be starting)"
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
# Final result
|
|
25
|
+
if [ "$ALL_CHECKS_PASSED" = true ]; then
|
|
26
|
+
echo "✓ All critical checks passed"
|
|
27
|
+
exit 0
|
|
28
|
+
else
|
|
29
|
+
echo "✗ Some checks failed"
|
|
30
|
+
exit 1
|
|
31
|
+
fi
|
|
@@ -0,0 +1,473 @@
|
|
|
1
|
+
# AWS CLI Overlay
|
|
2
|
+
|
|
3
|
+
AWS Command Line Interface for managing Amazon Web Services from your development container.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **AWS CLI v2** - Latest AWS command-line interface
|
|
8
|
+
- **Pre-configured** - Ready to use with your AWS credentials
|
|
9
|
+
- **Multi-service support** - Manage EC2, S3, Lambda, RDS, and 200+ AWS services
|
|
10
|
+
- **JSON/YAML output** - Flexible output formats for scripting
|
|
11
|
+
- **Auto-completion** - Command completion for faster workflows
|
|
12
|
+
|
|
13
|
+
## Authentication
|
|
14
|
+
|
|
15
|
+
### Interactive Login (SSO)
|
|
16
|
+
|
|
17
|
+
For organizations using AWS IAM Identity Center (formerly AWS SSO):
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Configure SSO profile
|
|
21
|
+
aws configure sso
|
|
22
|
+
|
|
23
|
+
# Login with SSO
|
|
24
|
+
aws sso login --profile my-profile
|
|
25
|
+
|
|
26
|
+
# Set as default profile
|
|
27
|
+
export AWS_PROFILE=my-profile
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Access Keys (IAM User)
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# Configure credentials interactively
|
|
34
|
+
aws configure
|
|
35
|
+
|
|
36
|
+
# Or set via environment variables
|
|
37
|
+
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
|
|
38
|
+
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
|
|
39
|
+
export AWS_DEFAULT_REGION=us-east-1
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Credential Files
|
|
43
|
+
|
|
44
|
+
Create `~/.aws/credentials`:
|
|
45
|
+
|
|
46
|
+
```ini
|
|
47
|
+
[default]
|
|
48
|
+
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
|
|
49
|
+
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
|
|
50
|
+
|
|
51
|
+
[dev]
|
|
52
|
+
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
|
|
53
|
+
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Create `~/.aws/config`:
|
|
57
|
+
|
|
58
|
+
```ini
|
|
59
|
+
[default]
|
|
60
|
+
region = us-east-1
|
|
61
|
+
output = json
|
|
62
|
+
|
|
63
|
+
[profile dev]
|
|
64
|
+
region = us-west-2
|
|
65
|
+
output = yaml
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Instance/Container Roles
|
|
69
|
+
|
|
70
|
+
When running in EC2 or ECS, credentials are automatically provided by the instance metadata service.
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# Verify credentials
|
|
74
|
+
aws sts get-caller-identity
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Common Commands
|
|
78
|
+
|
|
79
|
+
### Identity and Access Management (IAM)
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Get current identity
|
|
83
|
+
aws sts get-caller-identity
|
|
84
|
+
|
|
85
|
+
# List IAM users
|
|
86
|
+
aws iam list-users
|
|
87
|
+
|
|
88
|
+
# Create IAM user
|
|
89
|
+
aws iam create-user --user-name john-doe
|
|
90
|
+
|
|
91
|
+
# Attach policy to user
|
|
92
|
+
aws iam attach-user-policy \
|
|
93
|
+
--user-name john-doe \
|
|
94
|
+
--policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### S3 (Simple Storage Service)
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# List buckets
|
|
101
|
+
aws s3 ls
|
|
102
|
+
|
|
103
|
+
# Create bucket
|
|
104
|
+
aws s3 mb s3://my-unique-bucket-name
|
|
105
|
+
|
|
106
|
+
# Upload file
|
|
107
|
+
aws s3 cp file.txt s3://my-bucket/
|
|
108
|
+
|
|
109
|
+
# Download file
|
|
110
|
+
aws s3 cp s3://my-bucket/file.txt ./
|
|
111
|
+
|
|
112
|
+
# Sync directory
|
|
113
|
+
aws s3 sync ./local-dir s3://my-bucket/remote-dir
|
|
114
|
+
|
|
115
|
+
# Delete bucket (must be empty)
|
|
116
|
+
aws s3 rb s3://my-bucket
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### EC2 (Elastic Compute Cloud)
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# List instances
|
|
123
|
+
aws ec2 describe-instances
|
|
124
|
+
|
|
125
|
+
# List instances with query filter
|
|
126
|
+
aws ec2 describe-instances \
|
|
127
|
+
--query 'Reservations[*].Instances[*].[InstanceId,State.Name,InstanceType]' \
|
|
128
|
+
--output table
|
|
129
|
+
|
|
130
|
+
# Start instance
|
|
131
|
+
aws ec2 start-instances --instance-ids i-1234567890abcdef0
|
|
132
|
+
|
|
133
|
+
# Stop instance
|
|
134
|
+
aws ec2 stop-instances --instance-ids i-1234567890abcdef0
|
|
135
|
+
|
|
136
|
+
# Create key pair
|
|
137
|
+
aws ec2 create-key-pair --key-name MyKeyPair --query 'KeyMaterial' --output text > MyKeyPair.pem
|
|
138
|
+
chmod 400 MyKeyPair.pem
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Lambda
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
# List functions
|
|
145
|
+
aws lambda list-functions
|
|
146
|
+
|
|
147
|
+
# Invoke function
|
|
148
|
+
aws lambda invoke \
|
|
149
|
+
--function-name my-function \
|
|
150
|
+
--payload '{"key":"value"}' \
|
|
151
|
+
response.json
|
|
152
|
+
|
|
153
|
+
# Update function code
|
|
154
|
+
aws lambda update-function-code \
|
|
155
|
+
--function-name my-function \
|
|
156
|
+
--zip-file fileb://function.zip
|
|
157
|
+
|
|
158
|
+
# Get function configuration
|
|
159
|
+
aws lambda get-function-configuration --function-name my-function
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### CloudFormation
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# List stacks
|
|
166
|
+
aws cloudformation list-stacks
|
|
167
|
+
|
|
168
|
+
# Create stack
|
|
169
|
+
aws cloudformation create-stack \
|
|
170
|
+
--stack-name my-stack \
|
|
171
|
+
--template-body file://template.yaml \
|
|
172
|
+
--parameters ParameterKey=KeyName,ParameterValue=MyKey
|
|
173
|
+
|
|
174
|
+
# Update stack
|
|
175
|
+
aws cloudformation update-stack \
|
|
176
|
+
--stack-name my-stack \
|
|
177
|
+
--template-body file://template.yaml
|
|
178
|
+
|
|
179
|
+
# Delete stack
|
|
180
|
+
aws cloudformation delete-stack --stack-name my-stack
|
|
181
|
+
|
|
182
|
+
# Describe stack events
|
|
183
|
+
aws cloudformation describe-stack-events --stack-name my-stack
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### RDS (Relational Database Service)
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
# List database instances
|
|
190
|
+
aws rds describe-db-instances
|
|
191
|
+
|
|
192
|
+
# Create database instance
|
|
193
|
+
aws rds create-db-instance \
|
|
194
|
+
--db-instance-identifier mydb \
|
|
195
|
+
--db-instance-class db.t3.micro \
|
|
196
|
+
--engine postgres \
|
|
197
|
+
--master-username admin \
|
|
198
|
+
--master-user-password MyPassword123 \
|
|
199
|
+
--allocated-storage 20
|
|
200
|
+
|
|
201
|
+
# Modify database instance
|
|
202
|
+
aws rds modify-db-instance \
|
|
203
|
+
--db-instance-identifier mydb \
|
|
204
|
+
--allocated-storage 30 \
|
|
205
|
+
--apply-immediately
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### ECS (Elastic Container Service)
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
# List clusters
|
|
212
|
+
aws ecs list-clusters
|
|
213
|
+
|
|
214
|
+
# List services
|
|
215
|
+
aws ecs list-services --cluster my-cluster
|
|
216
|
+
|
|
217
|
+
# Describe service
|
|
218
|
+
aws ecs describe-services \
|
|
219
|
+
--cluster my-cluster \
|
|
220
|
+
--services my-service
|
|
221
|
+
|
|
222
|
+
# Update service (e.g., force new deployment)
|
|
223
|
+
aws ecs update-service \
|
|
224
|
+
--cluster my-cluster \
|
|
225
|
+
--service my-service \
|
|
226
|
+
--force-new-deployment
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
## Configuration
|
|
230
|
+
|
|
231
|
+
### Named Profiles
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
# Use specific profile
|
|
235
|
+
aws s3 ls --profile dev
|
|
236
|
+
|
|
237
|
+
# Set default profile for session
|
|
238
|
+
export AWS_PROFILE=dev
|
|
239
|
+
|
|
240
|
+
# Configure new profile
|
|
241
|
+
aws configure --profile prod
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Output Formats
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
# JSON (default)
|
|
248
|
+
aws ec2 describe-instances --output json
|
|
249
|
+
|
|
250
|
+
# YAML
|
|
251
|
+
aws ec2 describe-instances --output yaml
|
|
252
|
+
|
|
253
|
+
# Table
|
|
254
|
+
aws ec2 describe-instances --output table
|
|
255
|
+
|
|
256
|
+
# Text (for scripting)
|
|
257
|
+
aws ec2 describe-instances --output text
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### Query Filtering
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
# JMESPath query examples
|
|
264
|
+
aws ec2 describe-instances \
|
|
265
|
+
--query 'Reservations[*].Instances[*].[InstanceId,State.Name]'
|
|
266
|
+
|
|
267
|
+
# Filter by tag
|
|
268
|
+
aws ec2 describe-instances \
|
|
269
|
+
--filters "Name=tag:Environment,Values=production" \
|
|
270
|
+
--query 'Reservations[*].Instances[*].[InstanceId,Tags[?Key==`Name`].Value|[0]]'
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
## Use Cases
|
|
274
|
+
|
|
275
|
+
### Infrastructure Management
|
|
276
|
+
|
|
277
|
+
- Launch and manage EC2 instances
|
|
278
|
+
- Configure load balancers and auto-scaling
|
|
279
|
+
- Manage VPCs and security groups
|
|
280
|
+
|
|
281
|
+
### Application Deployment
|
|
282
|
+
|
|
283
|
+
- Deploy Lambda functions
|
|
284
|
+
- Update ECS services
|
|
285
|
+
- Manage CloudFormation stacks
|
|
286
|
+
|
|
287
|
+
### Data Management
|
|
288
|
+
|
|
289
|
+
- Upload/download files to S3
|
|
290
|
+
- Backup RDS databases
|
|
291
|
+
- Manage DynamoDB tables
|
|
292
|
+
|
|
293
|
+
### CI/CD Integration
|
|
294
|
+
|
|
295
|
+
- Automated deployments
|
|
296
|
+
- Infrastructure provisioning
|
|
297
|
+
- Credential management in pipelines
|
|
298
|
+
|
|
299
|
+
## Credential Management
|
|
300
|
+
|
|
301
|
+
### Security Best Practices
|
|
302
|
+
|
|
303
|
+
⚠️ **Never commit AWS credentials to version control**
|
|
304
|
+
|
|
305
|
+
**Secure Methods:**
|
|
306
|
+
|
|
307
|
+
1. **Environment Variables** - Set in `.env` (excluded from git)
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
AWS_ACCESS_KEY_ID=xxxxx
|
|
311
|
+
AWS_SECRET_ACCESS_KEY=xxxxx
|
|
312
|
+
AWS_DEFAULT_REGION=us-east-1
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
2. **AWS SSO** - Use for organizational accounts
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
aws configure sso
|
|
319
|
+
aws sso login
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
3. **IAM Roles** - Use when running in AWS (EC2, ECS, Lambda)
|
|
323
|
+
- No credentials needed
|
|
324
|
+
- Automatically rotated
|
|
325
|
+
|
|
326
|
+
4. **AWS Vault** - Secure credential storage
|
|
327
|
+
```bash
|
|
328
|
+
aws-vault exec dev -- aws s3 ls
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
### Least Privilege
|
|
332
|
+
|
|
333
|
+
Always grant minimum required permissions:
|
|
334
|
+
|
|
335
|
+
```json
|
|
336
|
+
{
|
|
337
|
+
"Version": "2012-10-17",
|
|
338
|
+
"Statement": [
|
|
339
|
+
{
|
|
340
|
+
"Effect": "Allow",
|
|
341
|
+
"Action": ["s3:GetObject", "s3:PutObject"],
|
|
342
|
+
"Resource": "arn:aws:s3:::my-bucket/*"
|
|
343
|
+
}
|
|
344
|
+
]
|
|
345
|
+
}
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### MFA (Multi-Factor Authentication)
|
|
349
|
+
|
|
350
|
+
For enhanced security with temporary credentials:
|
|
351
|
+
|
|
352
|
+
```bash
|
|
353
|
+
# Get session token with MFA
|
|
354
|
+
aws sts get-session-token \
|
|
355
|
+
--serial-number arn:aws:iam::123456789012:mfa/user \
|
|
356
|
+
--token-code 123456
|
|
357
|
+
|
|
358
|
+
# Use temporary credentials
|
|
359
|
+
export AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE
|
|
360
|
+
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
|
|
361
|
+
export AWS_SESSION_TOKEN=FwoGZXIvYXdzEBYaD...
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
## Troubleshooting
|
|
365
|
+
|
|
366
|
+
### aws command not found
|
|
367
|
+
|
|
368
|
+
Rebuild container:
|
|
369
|
+
|
|
370
|
+
- **VS Code:** `Cmd+Shift+P` → "Dev Containers: Rebuild Container"
|
|
371
|
+
|
|
372
|
+
### Invalid credentials
|
|
373
|
+
|
|
374
|
+
```bash
|
|
375
|
+
# Verify credentials are set
|
|
376
|
+
aws sts get-caller-identity
|
|
377
|
+
|
|
378
|
+
# Check credential configuration
|
|
379
|
+
cat ~/.aws/credentials
|
|
380
|
+
cat ~/.aws/config
|
|
381
|
+
|
|
382
|
+
# Re-configure
|
|
383
|
+
aws configure
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
### Region errors
|
|
387
|
+
|
|
388
|
+
```bash
|
|
389
|
+
# Set default region
|
|
390
|
+
export AWS_DEFAULT_REGION=us-east-1
|
|
391
|
+
|
|
392
|
+
# Or specify in each command
|
|
393
|
+
aws s3 ls --region us-west-2
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
### Permission denied errors
|
|
397
|
+
|
|
398
|
+
```bash
|
|
399
|
+
# Check what actions you're allowed to perform
|
|
400
|
+
aws iam get-user
|
|
401
|
+
|
|
402
|
+
# Review attached policies
|
|
403
|
+
aws iam list-attached-user-policies --user-name your-username
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
### Rate limiting
|
|
407
|
+
|
|
408
|
+
AWS API has rate limits. Use pagination and delays:
|
|
409
|
+
|
|
410
|
+
```bash
|
|
411
|
+
# Paginate results
|
|
412
|
+
aws s3api list-objects-v2 \
|
|
413
|
+
--bucket my-bucket \
|
|
414
|
+
--max-items 100 \
|
|
415
|
+
--starting-token <token-from-previous-call>
|
|
416
|
+
|
|
417
|
+
# Add delay between calls in scripts
|
|
418
|
+
sleep 1
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
## CLI Configuration Tips
|
|
422
|
+
|
|
423
|
+
### Enable Auto-completion
|
|
424
|
+
|
|
425
|
+
```bash
|
|
426
|
+
# For bash
|
|
427
|
+
complete -C '/usr/local/bin/aws_completer' aws
|
|
428
|
+
|
|
429
|
+
# For zsh (add to ~/.zshrc)
|
|
430
|
+
autoload bashcompinit && bashcompinit
|
|
431
|
+
complete -C '/usr/local/bin/aws_completer' aws
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
### Useful Aliases
|
|
435
|
+
|
|
436
|
+
Add to `.bashrc` or `.zshrc`:
|
|
437
|
+
|
|
438
|
+
```bash
|
|
439
|
+
alias awswho='aws sts get-caller-identity'
|
|
440
|
+
alias awsregions='aws ec2 describe-regions --output table'
|
|
441
|
+
alias awsprofile='echo $AWS_PROFILE'
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
### Default Settings
|
|
445
|
+
|
|
446
|
+
Set CLI defaults in `~/.aws/config`:
|
|
447
|
+
|
|
448
|
+
```ini
|
|
449
|
+
[default]
|
|
450
|
+
region = us-east-1
|
|
451
|
+
output = json
|
|
452
|
+
cli_pager =
|
|
453
|
+
|
|
454
|
+
[profile dev]
|
|
455
|
+
region = us-west-2
|
|
456
|
+
output = yaml
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
## Related Overlays
|
|
460
|
+
|
|
461
|
+
- **terraform** - Infrastructure as Code for AWS resources
|
|
462
|
+
- **pulumi** - Modern IaC using TypeScript/Python/Go
|
|
463
|
+
- **kubectl-helm** - For EKS (Elastic Kubernetes Service) management
|
|
464
|
+
- **nodejs/python/dotnet** - For Lambda function development
|
|
465
|
+
- **docker-sock/docker-in-docker** - For ECS container development
|
|
466
|
+
|
|
467
|
+
## Additional Resources
|
|
468
|
+
|
|
469
|
+
- [AWS CLI Documentation](https://docs.aws.amazon.com/cli/)
|
|
470
|
+
- [AWS CLI Command Reference](https://awscli.amazonaws.com/v2/documentation/api/latest/index.html)
|
|
471
|
+
- [AWS CLI Configuration Guide](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
|
|
472
|
+
- [AWS Security Best Practices](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)
|
|
473
|
+
- [JMESPath Tutorial](https://jmespath.org/tutorial.html) - For query filtering
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
|
|
3
|
+
"features": {
|
|
4
|
+
"ghcr.io/devcontainers/features/aws-cli:1": {
|
|
5
|
+
"version": "latest"
|
|
6
|
+
}
|
|
7
|
+
},
|
|
8
|
+
"customizations": {
|
|
9
|
+
"vscode": {
|
|
10
|
+
"extensions": ["amazonwebservices.aws-toolkit-vscode"]
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|