opencode-skills-collection 4.0.67 → 4.0.69
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/bundled-skills/.antigravity-install-manifest.json +281 -1
- package/bundled-skills/access-review/SKILL.md +394 -0
- package/bundled-skills/access-review/references/details.md +121 -0
- package/bundled-skills/agent-evals/SKILL.md +420 -0
- package/bundled-skills/agent-observability/SKILL.md +346 -0
- package/bundled-skills/agent-observability/references/details.md +786 -0
- package/bundled-skills/ai-agent-security/SKILL.md +393 -0
- package/bundled-skills/ai-agent-security/references/details.md +912 -0
- package/bundled-skills/ai-coding-agent-guardrails/SKILL.md +442 -0
- package/bundled-skills/ai-coding-agent-guardrails/references/details.md +753 -0
- package/bundled-skills/ai-inference-service-mesh/SKILL.md +449 -0
- package/bundled-skills/ai-pipeline-orchestration/SKILL.md +287 -0
- package/bundled-skills/ai-red-teaming/SKILL.md +409 -0
- package/bundled-skills/ai-security-hardening/SKILL.md +343 -0
- package/bundled-skills/ai-sre-incident-response/SKILL.md +336 -0
- package/bundled-skills/alerting-oncall/SKILL.md +458 -0
- package/bundled-skills/alerting-oncall/references/details.md +84 -0
- package/bundled-skills/anti-slop-design/SKILL.md +393 -0
- package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +1 -0
- package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
- package/bundled-skills/argocd-gitops/SKILL.md +469 -0
- package/bundled-skills/arm-templates/SKILL.md +438 -0
- package/bundled-skills/arm-templates/references/details.md +64 -0
- package/bundled-skills/artifact-yylo/SKILL.md +122 -0
- package/bundled-skills/asset-inventory/SKILL.md +412 -0
- package/bundled-skills/asset-inventory/references/details.md +127 -0
- package/bundled-skills/audit-logging/SKILL.md +476 -0
- package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
- package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
- package/bundled-skills/aws-ec2/SKILL.md +426 -0
- package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
- package/bundled-skills/aws-iam/SKILL.md +463 -0
- package/bundled-skills/aws-lambda/SKILL.md +428 -0
- package/bundled-skills/aws-rds/SKILL.md +380 -0
- package/bundled-skills/aws-s3/SKILL.md +434 -0
- package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
- package/bundled-skills/aws-vpc/SKILL.md +436 -0
- package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
- package/bundled-skills/azure-aks/SKILL.md +423 -0
- package/bundled-skills/azure-devops/SKILL.md +457 -0
- package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
- package/bundled-skills/azure-keyvault/SKILL.md +455 -0
- package/bundled-skills/azure-keyvault/references/details.md +83 -0
- package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
- package/bundled-skills/azure-networking/SKILL.md +448 -0
- package/bundled-skills/azure-networking/references/details.md +135 -0
- package/bundled-skills/azure-sql/SKILL.md +413 -0
- package/bundled-skills/azure-sql/references/details.md +113 -0
- package/bundled-skills/azure-vms/SKILL.md +402 -0
- package/bundled-skills/azure-vms/references/details.md +134 -0
- package/bundled-skills/backup-recovery/SKILL.md +388 -0
- package/bundled-skills/bb-methodology/SKILL.md +451 -0
- package/bundled-skills/bb-methodology/references/details.md +120 -0
- package/bundled-skills/block-storage/SKILL.md +371 -0
- package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
- package/bundled-skills/blue-green-deploy/references/details.md +90 -0
- package/bundled-skills/bug-bounty/SKILL.md +447 -0
- package/bundled-skills/bug-bounty/references/details.md +1316 -0
- package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
- package/bundled-skills/business-continuity/SKILL.md +463 -0
- package/bundled-skills/career-ops/SKILL.md +186 -0
- package/bundled-skills/cdn-setup/SKILL.md +374 -0
- package/bundled-skills/change-management/SKILL.md +438 -0
- package/bundled-skills/change-management/references/details.md +105 -0
- package/bundled-skills/circleci/SKILL.md +475 -0
- package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
- package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
- package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
- package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
- package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
- package/bundled-skills/cloudformation/SKILL.md +461 -0
- package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
- package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
- package/bundled-skills/container-hardening/SKILL.md +126 -0
- package/bundled-skills/container-registries/SKILL.md +435 -0
- package/bundled-skills/container-scanning/SKILL.md +416 -0
- package/bundled-skills/convex-backend/SKILL.md +338 -0
- package/bundled-skills/dast-scanning/SKILL.md +437 -0
- package/bundled-skills/database-backups/SKILL.md +425 -0
- package/bundled-skills/datadog/SKILL.md +487 -0
- package/bundled-skills/dependency-scanning/SKILL.md +457 -0
- package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
- package/bundled-skills/disaster-recovery/SKILL.md +374 -0
- package/bundled-skills/disaster-recovery/references/details.md +219 -0
- package/bundled-skills/dns-management/SKILL.md +375 -0
- package/bundled-skills/docker-compose/SKILL.md +482 -0
- package/bundled-skills/docker-management/SKILL.md +426 -0
- package/bundled-skills/ebpf-observability/SKILL.md +436 -0
- package/bundled-skills/ebpf-observability/references/details.md +542 -0
- package/bundled-skills/elk-stack/SKILL.md +487 -0
- package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
- package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
- package/bundled-skills/feature-flags/SKILL.md +426 -0
- package/bundled-skills/feature-flags/references/details.md +86 -0
- package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
- package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
- package/bundled-skills/firewall-config/SKILL.md +479 -0
- package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
- package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
- package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
- package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
- package/bundled-skills/gcp-compute/SKILL.md +319 -0
- package/bundled-skills/gcp-gke/SKILL.md +307 -0
- package/bundled-skills/gcp-networking/SKILL.md +293 -0
- package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
- package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
- package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
- package/bundled-skills/gdpr-compliance/references/details.md +145 -0
- package/bundled-skills/geo-audit/SKILL.md +368 -0
- package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
- package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
- package/bundled-skills/geo-citability/SKILL.md +350 -0
- package/bundled-skills/geo-compare/SKILL.md +340 -0
- package/bundled-skills/geo-content/SKILL.md +383 -0
- package/bundled-skills/geo-crawlers/SKILL.md +408 -0
- package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
- package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
- package/bundled-skills/geo-proposal/SKILL.md +378 -0
- package/bundled-skills/geo-prospect/SKILL.md +225 -0
- package/bundled-skills/geo-report/SKILL.md +436 -0
- package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
- package/bundled-skills/geo-schema/SKILL.md +408 -0
- package/bundled-skills/geo-technical/SKILL.md +78 -0
- package/bundled-skills/geo-technical/references/details.md +543 -0
- package/bundled-skills/git-workflow/SKILL.md +460 -0
- package/bundled-skills/github-actions/SKILL.md +368 -0
- package/bundled-skills/gitlab-ci/SKILL.md +340 -0
- package/bundled-skills/google-no-code/SKILL.md +136 -0
- package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
- package/bundled-skills/gpu-server-management/SKILL.md +236 -0
- package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
- package/bundled-skills/helm-charts/SKILL.md +469 -0
- package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
- package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
- package/bundled-skills/hunt-ato/SKILL.md +184 -0
- package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
- package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
- package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
- package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
- package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
- package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
- package/bundled-skills/hunt-cicd/SKILL.md +311 -0
- package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
- package/bundled-skills/hunt-cors/SKILL.md +335 -0
- package/bundled-skills/hunt-dom/SKILL.md +323 -0
- package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
- package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
- package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
- package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
- package/bundled-skills/hunt-grpc/SKILL.md +317 -0
- package/bundled-skills/hunt-host-header/SKILL.md +309 -0
- package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
- package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
- package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
- package/bundled-skills/hunt-idor/SKILL.md +434 -0
- package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
- package/bundled-skills/hunt-k8s/SKILL.md +337 -0
- package/bundled-skills/hunt-laravel/SKILL.md +255 -0
- package/bundled-skills/hunt-ldap/SKILL.md +351 -0
- package/bundled-skills/hunt-lfi/SKILL.md +311 -0
- package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
- package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
- package/bundled-skills/hunt-misc/SKILL.md +378 -0
- package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
- package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
- package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
- package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
- package/bundled-skills/hunt-oauth/SKILL.md +459 -0
- package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
- package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
- package/bundled-skills/hunt-race-condition/references/details.md +159 -0
- package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
- package/bundled-skills/hunt-rce/SKILL.md +444 -0
- package/bundled-skills/hunt-rce/references/details.md +110 -0
- package/bundled-skills/hunt-saml/SKILL.md +156 -0
- package/bundled-skills/hunt-session/SKILL.md +342 -0
- package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
- package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
- package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
- package/bundled-skills/hunt-springboot/SKILL.md +285 -0
- package/bundled-skills/hunt-sqli/SKILL.md +466 -0
- package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
- package/bundled-skills/hunt-ssrf/references/details.md +179 -0
- package/bundled-skills/hunt-ssti/SKILL.md +163 -0
- package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
- package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
- package/bundled-skills/hunt-xxe/SKILL.md +466 -0
- package/bundled-skills/i-have-adhd/SKILL.md +170 -0
- package/bundled-skills/idea-evaluator/SKILL.md +75 -0
- package/bundled-skills/idea-evaluator/idea-evaluator-con/SKILL.md +64 -0
- package/bundled-skills/idea-evaluator/idea-evaluator-pro/SKILL.md +64 -0
- package/bundled-skills/identity-access-management/SKILL.md +382 -0
- package/bundled-skills/identity-access-management/references/details.md +524 -0
- package/bundled-skills/incident-management/SKILL.md +484 -0
- package/bundled-skills/incident-response/SKILL.md +448 -0
- package/bundled-skills/incident-response/references/details.md +113 -0
- package/bundled-skills/interview-me/SKILL.md +248 -0
- package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
- package/bundled-skills/jenkins/SKILL.md +462 -0
- package/bundled-skills/jev-use/SKILL.md +158 -0
- package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
- package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
- package/bundled-skills/kubernetes-ops/references/details.md +108 -0
- package/bundled-skills/kustomize/SKILL.md +478 -0
- package/bundled-skills/ledger-tasks-yylo/SKILL.md +219 -0
- package/bundled-skills/linux-administration/SKILL.md +367 -0
- package/bundled-skills/linux-hardening/SKILL.md +154 -0
- package/bundled-skills/llm-app-security/SKILL.md +389 -0
- package/bundled-skills/llm-app-security/references/details.md +674 -0
- package/bundled-skills/llm-caching/SKILL.md +334 -0
- package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
- package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
- package/bundled-skills/llm-gateway/SKILL.md +282 -0
- package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
- package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
- package/bundled-skills/load-balancing/SKILL.md +403 -0
- package/bundled-skills/loki-logging/SKILL.md +479 -0
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +4 -4
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package.json +1 -1
- package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
- package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
- package/bundled-skills/mcp-server-security/SKILL.md +356 -0
- package/bundled-skills/mcp-server-security/references/details.md +745 -0
- package/bundled-skills/mdm-device-management/SKILL.md +404 -0
- package/bundled-skills/mdm-device-management/references/details.md +410 -0
- package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
- package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
- package/bundled-skills/model-registry-governance/SKILL.md +452 -0
- package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
- package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
- package/bundled-skills/mongodb/SKILL.md +436 -0
- package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
- package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
- package/bundled-skills/mysql/SKILL.md +390 -0
- package/bundled-skills/new-relic/SKILL.md +472 -0
- package/bundled-skills/nfs-storage/SKILL.md +356 -0
- package/bundled-skills/object-storage/SKILL.md +378 -0
- package/bundled-skills/offensive-osint/SKILL.md +443 -0
- package/bundled-skills/okta-attack/SKILL.md +436 -0
- package/bundled-skills/ollama-stack/SKILL.md +379 -0
- package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
- package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
- package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
- package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
- package/bundled-skills/openshift/SKILL.md +485 -0
- package/bundled-skills/opentelemetry/SKILL.md +438 -0
- package/bundled-skills/opentelemetry/references/details.md +78 -0
- package/bundled-skills/opentofu-migration/SKILL.md +349 -0
- package/bundled-skills/osint-methodology/SKILL.md +460 -0
- package/bundled-skills/osint-methodology/references/details.md +1350 -0
- package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
- package/bundled-skills/penetration-testing/SKILL.md +152 -0
- package/bundled-skills/performance-tuning/SKILL.md +381 -0
- package/bundled-skills/plan-ledger-tasks-yylo/SKILL.md +52 -0
- package/bundled-skills/planetscale/SKILL.md +297 -0
- package/bundled-skills/platform-engineering/SKILL.md +348 -0
- package/bundled-skills/platform-engineering/references/details.md +944 -0
- package/bundled-skills/podman/SKILL.md +405 -0
- package/bundled-skills/policy-as-code/SKILL.md +434 -0
- package/bundled-skills/policy-as-code/references/details.md +204 -0
- package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
- package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
- package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
- package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
- package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
- package/bundled-skills/rag-observability-evals/references/details.md +92 -0
- package/bundled-skills/ralph-loop-yylo/SKILL.md +55 -0
- package/bundled-skills/ralph-loop-yylo/references/first_check.md +18 -0
- package/bundled-skills/ralph-loop-yylo/references/implement.md +60 -0
- package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
- package/bundled-skills/redis/SKILL.md +421 -0
- package/bundled-skills/redteam-report-template/SKILL.md +370 -0
- package/bundled-skills/report-writing/SKILL.md +426 -0
- package/bundled-skills/report-writing/references/details.md +187 -0
- package/bundled-skills/resumable-implementation-contracts/SKILL.md +254 -0
- package/bundled-skills/reverse-proxy/SKILL.md +420 -0
- package/bundled-skills/runbook-creation/SKILL.md +438 -0
- package/bundled-skills/runbook-creation/references/details.md +71 -0
- package/bundled-skills/saas-security-posture/SKILL.md +415 -0
- package/bundled-skills/sast-scanning/SKILL.md +444 -0
- package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
- package/bundled-skills/security-arsenal/SKILL.md +446 -0
- package/bundled-skills/security-arsenal/references/details.md +540 -0
- package/bundled-skills/security-automation/SKILL.md +146 -0
- package/bundled-skills/semantic-versioning/SKILL.md +434 -0
- package/bundled-skills/semantic-versioning/references/details.md +83 -0
- package/bundled-skills/service-mesh/SKILL.md +422 -0
- package/bundled-skills/soc2-compliance/SKILL.md +409 -0
- package/bundled-skills/sops-encryption/SKILL.md +124 -0
- package/bundled-skills/sre-dashboards/SKILL.md +143 -0
- package/bundled-skills/ssh-configuration/SKILL.md +324 -0
- package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
- package/bundled-skills/ssl-tls-management/references/details.md +99 -0
- package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
- package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
- package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
- package/bundled-skills/systemd-services/SKILL.md +379 -0
- package/bundled-skills/terraform-aws/SKILL.md +125 -0
- package/bundled-skills/terraform-azure/SKILL.md +415 -0
- package/bundled-skills/terraform-azure/references/details.md +231 -0
- package/bundled-skills/terraform-gcp/SKILL.md +369 -0
- package/bundled-skills/threat-modeling/SKILL.md +487 -0
- package/bundled-skills/understand-project-yylo/SKILL.md +62 -0
- package/bundled-skills/user-management/SKILL.md +383 -0
- package/bundled-skills/using-agent-skills/SKILL.md +220 -0
- package/bundled-skills/vector-database-ops/SKILL.md +300 -0
- package/bundled-skills/vendor-management/SKILL.md +439 -0
- package/bundled-skills/vendor-management/references/details.md +109 -0
- package/bundled-skills/vercel-deployments/SKILL.md +296 -0
- package/bundled-skills/vllm-server/SKILL.md +236 -0
- package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
- package/bundled-skills/vpn-setup/SKILL.md +452 -0
- package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
- package/bundled-skills/waf-setup/SKILL.md +354 -0
- package/bundled-skills/waf-setup/references/details.md +211 -0
- package/bundled-skills/weather-model-data-fetching/SKILL.md +277 -0
- package/bundled-skills/weather-observation-fetching/SKILL.md +246 -0
- package/bundled-skills/web2-recon/SKILL.md +440 -0
- package/bundled-skills/web2-recon/references/details.md +319 -0
- package/bundled-skills/web3-audit/SKILL.md +445 -0
- package/bundled-skills/web3-audit/references/details.md +224 -0
- package/bundled-skills/wiki-yylo/SKILL.md +114 -0
- package/bundled-skills/windows-hardening/SKILL.md +454 -0
- package/bundled-skills/windows-hardening/references/details.md +204 -0
- package/bundled-skills/windows-server/SKILL.md +318 -0
- package/bundled-skills/workflow-yylo/SKILL.md +107 -0
- package/bundled-skills/zero-trust/SKILL.md +461 -0
- package/package.json +1 -1
- package/skills_index.json +6924 -0
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aws-ecs-fargate
|
|
3
|
+
description: Deploy containers on ECS and Fargate. Configure task definitions, services,
|
|
4
|
+
and load balancing. Use when running containerized workloads on AWS.
|
|
5
|
+
category: devops
|
|
6
|
+
risk: critical
|
|
7
|
+
source: https://github.com/BagelHole/DevOps-Security-Agent-Skills
|
|
8
|
+
source_repo: BagelHole/DevOps-Security-Agent-Skills
|
|
9
|
+
source_type: community
|
|
10
|
+
date_added: '2026-09-20'
|
|
11
|
+
license: MIT
|
|
12
|
+
license_source: https://github.com/BagelHole/DevOps-Security-Agent-Skills/blob/main/LICENSE
|
|
13
|
+
compatibility: Requires the relevant OS/platform tooling and privileged access where
|
|
14
|
+
noted. Docs-only; helper scripts and templates not bundled.
|
|
15
|
+
metadata:
|
|
16
|
+
author: devops-skills
|
|
17
|
+
version: '1.0'
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# AWS ECS & Fargate
|
|
21
|
+
|
|
22
|
+
Run containerized applications on Amazon ECS with Fargate serverless compute or EC2 launch type.
|
|
23
|
+
|
|
24
|
+
## When to Use This Skill
|
|
25
|
+
|
|
26
|
+
- Deploying Docker containers to AWS without managing servers (Fargate)
|
|
27
|
+
- Running microservices with service discovery and load balancing
|
|
28
|
+
- Setting up blue/green or rolling deployments for containerized apps
|
|
29
|
+
- Configuring auto-scaling for container workloads
|
|
30
|
+
- Migrating from docker-compose or Kubernetes to ECS
|
|
31
|
+
- Troubleshooting task failures, health check issues, or networking problems
|
|
32
|
+
|
|
33
|
+
## Prerequisites
|
|
34
|
+
|
|
35
|
+
- AWS CLI v2 installed and configured
|
|
36
|
+
- Docker installed for building and pushing images
|
|
37
|
+
- IAM permissions: `ecs:*`, `ecr:*`, `elasticloadbalancing:*`, `logs:*`, `iam:PassRole`
|
|
38
|
+
- An ECR repository for storing container images
|
|
39
|
+
- A VPC with subnets and an ALB (see aws-vpc (`aws-vpc`))
|
|
40
|
+
|
|
41
|
+
## Cluster Setup
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Create an ECS cluster with Container Insights enabled
|
|
45
|
+
aws ecs create-cluster \
|
|
46
|
+
--cluster-name production \
|
|
47
|
+
--capacity-providers FARGATE FARGATE_SPOT \
|
|
48
|
+
--default-capacity-provider-strategy '[
|
|
49
|
+
{"capacityProvider": "FARGATE", "weight": 1, "base": 2},
|
|
50
|
+
{"capacityProvider": "FARGATE_SPOT", "weight": 3}
|
|
51
|
+
]' \
|
|
52
|
+
--settings '[{"name": "containerInsights", "value": "enabled"}]'
|
|
53
|
+
|
|
54
|
+
# List clusters
|
|
55
|
+
aws ecs list-clusters
|
|
56
|
+
|
|
57
|
+
# Describe cluster details
|
|
58
|
+
aws ecs describe-clusters --clusters production --include STATISTICS ATTACHMENTS
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Push Image to ECR
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Create ECR repository
|
|
65
|
+
aws ecr create-repository \
|
|
66
|
+
--repository-name myapp \
|
|
67
|
+
--image-scanning-configuration scanOnPush=true \
|
|
68
|
+
--encryption-configuration encryptionType=KMS
|
|
69
|
+
|
|
70
|
+
# Authenticate Docker to ECR
|
|
71
|
+
aws ecr get-login-password --region us-east-1 | \
|
|
72
|
+
docker login --username AWS --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com
|
|
73
|
+
|
|
74
|
+
# Build, tag, and push
|
|
75
|
+
docker build -t myapp:latest .
|
|
76
|
+
docker tag myapp:latest 123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp:latest
|
|
77
|
+
docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp:latest
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Task Definition
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"family": "myapp",
|
|
85
|
+
"networkMode": "awsvpc",
|
|
86
|
+
"requiresCompatibilities": ["FARGATE"],
|
|
87
|
+
"cpu": "512",
|
|
88
|
+
"memory": "1024",
|
|
89
|
+
"executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
|
|
90
|
+
"taskRoleArn": "arn:aws:iam::123456789012:role/ecsTaskRole",
|
|
91
|
+
"containerDefinitions": [
|
|
92
|
+
{
|
|
93
|
+
"name": "myapp",
|
|
94
|
+
"image": "123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp:latest",
|
|
95
|
+
"essential": true,
|
|
96
|
+
"portMappings": [
|
|
97
|
+
{
|
|
98
|
+
"containerPort": 8080,
|
|
99
|
+
"protocol": "tcp"
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
"environment": [
|
|
103
|
+
{"name": "NODE_ENV", "value": "production"},
|
|
104
|
+
{"name": "PORT", "value": "8080"}
|
|
105
|
+
],
|
|
106
|
+
"secrets": [
|
|
107
|
+
{
|
|
108
|
+
"name": "DB_PASSWORD",
|
|
109
|
+
"valueFrom": "arn:aws:secretsmanager:us-east-1:123456789012:secret:myapp/db-password"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"name": "API_KEY",
|
|
113
|
+
"valueFrom": "arn:aws:ssm:us-east-1:123456789012:parameter/myapp/api-key"
|
|
114
|
+
}
|
|
115
|
+
],
|
|
116
|
+
"healthCheck": {
|
|
117
|
+
"command": ["CMD-SHELL", "curl -f http://localhost:8080/health || exit 1"],
|
|
118
|
+
"interval": 30,
|
|
119
|
+
"timeout": 5,
|
|
120
|
+
"retries": 3,
|
|
121
|
+
"startPeriod": 60
|
|
122
|
+
},
|
|
123
|
+
"logConfiguration": {
|
|
124
|
+
"logDriver": "awslogs",
|
|
125
|
+
"options": {
|
|
126
|
+
"awslogs-group": "/ecs/myapp",
|
|
127
|
+
"awslogs-region": "us-east-1",
|
|
128
|
+
"awslogs-stream-prefix": "ecs",
|
|
129
|
+
"awslogs-create-group": "true"
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
"ulimits": [
|
|
133
|
+
{"name": "nofile", "softLimit": 65536, "hardLimit": 65536}
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
]
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# Register the task definition
|
|
142
|
+
aws ecs register-task-definition --cli-input-json file://task-definition.json
|
|
143
|
+
|
|
144
|
+
# List task definition revisions
|
|
145
|
+
aws ecs list-task-definitions --family-prefix myapp
|
|
146
|
+
|
|
147
|
+
# Deregister an old revision
|
|
148
|
+
aws ecs deregister-task-definition --task-definition myapp:1
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Create Service with ALB
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# Create the CloudWatch log group first
|
|
155
|
+
aws logs create-log-group --log-group-name /ecs/myapp
|
|
156
|
+
aws logs put-retention-policy --log-group-name /ecs/myapp --retention-in-days 30
|
|
157
|
+
|
|
158
|
+
# Create ECS service with load balancer
|
|
159
|
+
aws ecs create-service \
|
|
160
|
+
--cluster production \
|
|
161
|
+
--service-name myapp \
|
|
162
|
+
--task-definition myapp:2 \
|
|
163
|
+
--desired-count 3 \
|
|
164
|
+
--launch-type FARGATE \
|
|
165
|
+
--platform-version LATEST \
|
|
166
|
+
--deployment-configuration '{
|
|
167
|
+
"deploymentCircuitBreaker": {"enable": true, "rollback": true},
|
|
168
|
+
"maximumPercent": 200,
|
|
169
|
+
"minimumHealthyPercent": 100
|
|
170
|
+
}' \
|
|
171
|
+
--network-configuration '{
|
|
172
|
+
"awsvpcConfiguration": {
|
|
173
|
+
"subnets": ["subnet-private-a", "subnet-private-b"],
|
|
174
|
+
"securityGroups": ["sg-app"],
|
|
175
|
+
"assignPublicIp": "DISABLED"
|
|
176
|
+
}
|
|
177
|
+
}' \
|
|
178
|
+
--load-balancers '[{
|
|
179
|
+
"targetGroupArn": "arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/myapp-tg/abc123",
|
|
180
|
+
"containerName": "myapp",
|
|
181
|
+
"containerPort": 8080
|
|
182
|
+
}]' \
|
|
183
|
+
--service-registries '[{
|
|
184
|
+
"registryArn": "arn:aws:servicediscovery:us-east-1:123456789012:service/srv-abc123"
|
|
185
|
+
}]' \
|
|
186
|
+
--enable-execute-command \
|
|
187
|
+
--propagate-tags SERVICE
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Deployments
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
# Rolling update - update task definition and force new deployment
|
|
194
|
+
aws ecs update-service \
|
|
195
|
+
--cluster production \
|
|
196
|
+
--service myapp \
|
|
197
|
+
--task-definition myapp:3 \
|
|
198
|
+
--force-new-deployment
|
|
199
|
+
|
|
200
|
+
# Watch deployment progress
|
|
201
|
+
aws ecs describe-services \
|
|
202
|
+
--cluster production \
|
|
203
|
+
--services myapp \
|
|
204
|
+
--query "services[0].deployments[].{Status:status,Running:runningCount,Desired:desiredCount,TaskDef:taskDefinition}" \
|
|
205
|
+
--output table
|
|
206
|
+
|
|
207
|
+
# Wait for service to stabilize
|
|
208
|
+
aws ecs wait services-stable --cluster production --services myapp
|
|
209
|
+
|
|
210
|
+
# Exec into a running container for debugging
|
|
211
|
+
aws ecs execute-command \
|
|
212
|
+
--cluster production \
|
|
213
|
+
--task arn:aws:ecs:us-east-1:123456789012:task/production/abc123 \
|
|
214
|
+
--container myapp \
|
|
215
|
+
--interactive \
|
|
216
|
+
--command "/bin/sh"
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## Auto Scaling
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
# Register ECS service as a scalable target
|
|
223
|
+
aws application-autoscaling register-scalable-target \
|
|
224
|
+
--service-namespace ecs \
|
|
225
|
+
--resource-id service/production/myapp \
|
|
226
|
+
--scalable-dimension ecs:service:DesiredCount \
|
|
227
|
+
--min-capacity 2 \
|
|
228
|
+
--max-capacity 20
|
|
229
|
+
|
|
230
|
+
# Target tracking policy - scale on CPU utilization
|
|
231
|
+
aws application-autoscaling put-scaling-policy \
|
|
232
|
+
--service-namespace ecs \
|
|
233
|
+
--resource-id service/production/myapp \
|
|
234
|
+
--scalable-dimension ecs:service:DesiredCount \
|
|
235
|
+
--policy-name cpu-target-tracking \
|
|
236
|
+
--policy-type TargetTrackingScaling \
|
|
237
|
+
--target-tracking-scaling-policy-configuration '{
|
|
238
|
+
"PredefinedMetricSpecification": {
|
|
239
|
+
"PredefinedMetricType": "ECSServiceAverageCPUUtilization"
|
|
240
|
+
},
|
|
241
|
+
"TargetValue": 70.0,
|
|
242
|
+
"ScaleInCooldown": 300,
|
|
243
|
+
"ScaleOutCooldown": 60
|
|
244
|
+
}'
|
|
245
|
+
|
|
246
|
+
# Scale on request count per target (ALB)
|
|
247
|
+
aws application-autoscaling put-scaling-policy \
|
|
248
|
+
--service-namespace ecs \
|
|
249
|
+
--resource-id service/production/myapp \
|
|
250
|
+
--scalable-dimension ecs:service:DesiredCount \
|
|
251
|
+
--policy-name request-count-tracking \
|
|
252
|
+
--policy-type TargetTrackingScaling \
|
|
253
|
+
--target-tracking-scaling-policy-configuration '{
|
|
254
|
+
"PredefinedMetricSpecification": {
|
|
255
|
+
"PredefinedMetricType": "ALBRequestCountPerTarget",
|
|
256
|
+
"ResourceLabel": "app/my-alb/abc123/targetgroup/myapp-tg/def456"
|
|
257
|
+
},
|
|
258
|
+
"TargetValue": 1000.0,
|
|
259
|
+
"ScaleInCooldown": 300,
|
|
260
|
+
"ScaleOutCooldown": 60
|
|
261
|
+
}'
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
## Terraform ECS Fargate Service
|
|
265
|
+
|
|
266
|
+
```hcl
|
|
267
|
+
resource "aws_ecs_cluster" "main" {
|
|
268
|
+
name = "production"
|
|
269
|
+
|
|
270
|
+
setting {
|
|
271
|
+
name = "containerInsights"
|
|
272
|
+
value = "enabled"
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
resource "aws_ecs_task_definition" "myapp" {
|
|
277
|
+
family = "myapp"
|
|
278
|
+
network_mode = "awsvpc"
|
|
279
|
+
requires_compatibilities = ["FARGATE"]
|
|
280
|
+
cpu = 512
|
|
281
|
+
memory = 1024
|
|
282
|
+
execution_role_arn = aws_iam_role.ecs_execution.arn
|
|
283
|
+
task_role_arn = aws_iam_role.ecs_task.arn
|
|
284
|
+
|
|
285
|
+
container_definitions = jsonencode([{
|
|
286
|
+
name = "myapp"
|
|
287
|
+
image = "${aws_ecr_repository.myapp.repository_url}:latest"
|
|
288
|
+
essential = true
|
|
289
|
+
|
|
290
|
+
portMappings = [{
|
|
291
|
+
containerPort = 8080
|
|
292
|
+
protocol = "tcp"
|
|
293
|
+
}]
|
|
294
|
+
|
|
295
|
+
logConfiguration = {
|
|
296
|
+
logDriver = "awslogs"
|
|
297
|
+
options = {
|
|
298
|
+
awslogs-group = aws_cloudwatch_log_group.myapp.name
|
|
299
|
+
awslogs-region = "us-east-1"
|
|
300
|
+
awslogs-stream-prefix = "ecs"
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
healthCheck = {
|
|
305
|
+
command = ["CMD-SHELL", "curl -f http://localhost:8080/health || exit 1"]
|
|
306
|
+
interval = 30
|
|
307
|
+
timeout = 5
|
|
308
|
+
retries = 3
|
|
309
|
+
startPeriod = 60
|
|
310
|
+
}
|
|
311
|
+
}])
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
resource "aws_ecs_service" "myapp" {
|
|
315
|
+
name = "myapp"
|
|
316
|
+
cluster = aws_ecs_cluster.main.id
|
|
317
|
+
task_definition = aws_ecs_task_definition.myapp.arn
|
|
318
|
+
desired_count = 3
|
|
319
|
+
launch_type = "FARGATE"
|
|
320
|
+
|
|
321
|
+
deployment_circuit_breaker {
|
|
322
|
+
enable = true
|
|
323
|
+
rollback = true
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
network_configuration {
|
|
327
|
+
subnets = aws_subnet.private[*].id
|
|
328
|
+
security_groups = [aws_security_group.app.id]
|
|
329
|
+
assign_public_ip = false
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
load_balancer {
|
|
333
|
+
target_group_arn = aws_lb_target_group.myapp.arn
|
|
334
|
+
container_name = "myapp"
|
|
335
|
+
container_port = 8080
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
enable_execute_command = true
|
|
339
|
+
propagate_tags = "SERVICE"
|
|
340
|
+
}
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
## Viewing Logs
|
|
344
|
+
|
|
345
|
+
```bash
|
|
346
|
+
# Tail logs from CloudWatch
|
|
347
|
+
aws logs tail /ecs/myapp --follow --since 1h
|
|
348
|
+
|
|
349
|
+
# Get logs for a specific task
|
|
350
|
+
aws logs get-log-events \
|
|
351
|
+
--log-group-name /ecs/myapp \
|
|
352
|
+
--log-stream-name "ecs/myapp/abc123def456" \
|
|
353
|
+
--start-from-head
|
|
354
|
+
|
|
355
|
+
# Filter logs for errors
|
|
356
|
+
aws logs filter-log-events \
|
|
357
|
+
--log-group-name /ecs/myapp \
|
|
358
|
+
--filter-pattern "ERROR" \
|
|
359
|
+
--start-time $(date -d '1 hour ago' +%s000)
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
## Troubleshooting
|
|
363
|
+
|
|
364
|
+
| Problem | Cause | Fix |
|
|
365
|
+
|---|---|---|
|
|
366
|
+
| Task stuck in PROVISIONING | No available capacity in subnets | Check subnet availability and capacity provider |
|
|
367
|
+
| Task fails immediately | Container crashes on startup | Check CloudWatch logs; run image locally first |
|
|
368
|
+
| Health check failing | App not ready within startPeriod | Increase `startPeriod`; verify health endpoint |
|
|
369
|
+
| Cannot pull ECR image | Execution role missing ECR permissions | Attach `AmazonECSTaskExecutionRolePolicy` |
|
|
370
|
+
| Service stuck at 0 running | Security group blocks ALB health check | Allow ALB SG to reach container port |
|
|
371
|
+
| Exec command fails | SSM agent not initialized | Ensure `enableExecuteCommand` is true; check task role |
|
|
372
|
+
| High Fargate costs | Not using Fargate Spot for tolerant workloads | Add FARGATE_SPOT capacity provider |
|
|
373
|
+
| Container OOM killed | Memory limit too low | Increase `memory` in task definition; check for leaks |
|
|
374
|
+
| Slow deployments | minimumHealthyPercent too high | Set to 50% for faster rolling updates |
|
|
375
|
+
|
|
376
|
+
## Related Skills
|
|
377
|
+
|
|
378
|
+
- docker-management (`docker-management`) - Container fundamentals
|
|
379
|
+
- container-registries (`container-registries`) - ECR and image management
|
|
380
|
+
- aws-vpc (`aws-vpc`) - Networking for ECS tasks
|
|
381
|
+
- aws-iam (`aws-iam`) - Task and execution roles
|
|
382
|
+
- terraform-aws (`terraform-aws`) - Infrastructure as Code deployment
|
|
383
|
+
|
|
384
|
+
## Limitations
|
|
385
|
+
|
|
386
|
+
- Infrastructure commands can disrupt services: confirm target host/scope and have backups/snapshots before mutating state.
|
|
387
|
+
- Docs-only import: upstream scripts and templates not bundled.
|
|
388
|
+
|