Install
openclaw skills install aws-cdk-analyzerAnalyze AWS CDK applications for best practices, security, cost optimization, and deployment safety — covers construct patterns, IAM policies, and CloudFormation output.
openclaw skills install aws-cdk-analyzerAnalyze AWS CDK applications for best practices, security vulnerabilities, cost optimization, and deployment safety. Reviews construct patterns, IAM policies, resource configurations, and synthesized CloudFormation output. Use when reviewing CDK code, preparing for production deployments, or auditing existing infrastructure.
"Analyze my CDK app for security issues"
"Review the IAM policies in my CDK stacks"
"Check my CDK code for cost optimization opportunities"
"Audit the CDK constructs for best practices"
"Verify deployment safety for this CDK change"
Map the CDK application structure:
# Detect CDK version and language
cat package.json | python3 -c "
import json, sys
d = json.load(sys.stdin)
for key in ['aws-cdk-lib', 'aws-cdk', '@aws-cdk/core']:
ver = d.get('dependencies', {}).get(key) or d.get('devDependencies', {}).get(key)
if ver: print(f'CDK: {key}@{ver}')
"
# Find all stack definitions
grep -rn "extends Stack\|new Stack\|class.*Stack" lib/ bin/ src/ 2>/dev/null
# Find all construct files
find lib/ src/ -name "*.ts" -o -name "*.py" | head -30
IAM Policy Analysis:
* actions or resources)Network Security:
0.0.0.0/0 ingress on sensitive portsData Protection:
Compliance:
Construct patterns:
Code quality:
Deployment safety:
# Synth and check output
npx cdk synth --quiet 2>&1
# Check for drift
npx cdk diff 2>&1
# Verify no sensitive data in CloudFormation template
grep -i "password\|secret\|key\|token" cdk.out/*.template.json
## AWS CDK Analysis — MyApp (3 stacks)
### 🔴 Critical (4)
1. **Wildcard IAM permission** — lib/api-stack.ts:45
`PolicyStatement({ actions: ['s3:*'], resources: ['*'] })`
→ Scope to specific bucket ARN and required actions only
2. **Public RDS instance** — lib/database-stack.ts:23
`publiclyAccessible: true` on production database
→ Move to private subnet, access via bastion or VPN
3. **Hardcoded secret** — lib/api-stack.ts:78
Database password in CDK code: `password: 'prod_db_pass123'`
→ Use `secretsmanager.Secret.fromSecretNameV2()`
4. **No removal policy on S3 bucket** — lib/storage-stack.ts:15
Default DESTROY policy will delete all data on stack deletion
→ Add `removalPolicy: RemovalPolicy.RETAIN`
### 🟡 Warnings (6)
5. **Oversized Lambda** — 1024MB allocated, avg usage 128MB
6. **NAT Gateway** — $32/mo, could use VPC endpoints ($7/mo)
7. **CloudWatch logs** — no retention set (infinite, $0.50/GB/mo)
8. **Missing tags** — 3 stacks without cost allocation tags
9. **L1 construct used** — CfnBucket where s3.Bucket available
10. **No auto-scaling** — ECS service with fixed task count
### 💰 Cost Optimization
| Resource | Current | Optimized | Monthly Savings |
|----------|---------|-----------|-----------------|
| NAT Gateway | $32 | VPC Endpoints $7 | $25 |
| Lambda memory | 1024MB | 256MB | ~$8 |
| CW Logs retention | ∞ | 30 days | ~$15 |
| RDS instance | db.r5.xlarge | db.r5.large | $180 |
| **Total** | | | **~$228/mo** |
### ✅ Good Practices
- Proper stack separation (API, Database, Storage)
- VPC with proper subnet tiers
- CloudFront distribution with WAF
- Parameter Store for non-secret config