lambda-optimization-advisor
AWS Lambda-Funktionen optimieren
AWS Lambda-Funktionen leiden oft unter langsamen Cold Starts und hohen Kosten aufgrund ineffizienter Muster. Der Lambda Optimization Advisor analysiert Lambda-Code und schlägt spezifische Verbesserungen für Leistung, Speicherkonfiguration und Kostenreduktion vor.
Baixar o ZIP da skill
Upload no Claude
Vá em Configurações → Capacidades → Skills → Upload skill
Ative e comece a usar
Testar
A utilizar "lambda-optimization-advisor". Review this Lambda handler: async fn handler(event: LambdaEvent<Request>) -> Result<Response, Error> { let user = fetch_user(&event.payload.user_id).await?; let posts = fetch_posts(&event.payload.user_id).await?; let comments = fetch_comments(&event.payload.user_id).await?; Ok(Response { user, posts, comments }) }
Resultado esperado:
- **Performance-Problem gefunden: Sequenzielle asynchrone Operationen**
- Dieser Handler macht drei sequenzielle API-Aufrufe, die insgesamt 3+ Sekunden dauern. Jedes `.await?` blockiert, bis der vorherige Aufruf abgeschlossen ist.
- **Optimierung**: Verwenden Sie `tokio::try_join!`, um alle Anfragen gleichzeitig auszuführen:
- ```rust
- async fn handler(event: LambdaEvent<Request>) -> Result<Response, Error> {
- let (user, posts, comments) = tokio::try_join!(
- fetch_user(&event.payload.user_id),
- fetch_posts(&event.payload.user_id),
- fetch_comments(&event.payload.user_id),
- )?;
- Ok(Response { user, posts, comments })
- }
- ```
- **Erwartete Verbesserung**: Ausführungszeit von 3s+ auf ~500ms reduziert (6x schneller)
A utilizar "lambda-optimization-advisor". Check this Lambda handler for optimization opportunities: async fn handler(event: LambdaEvent<Request>) -> Result<Response, Error> { let client = reqwest::Client::new(); let data = client.get("https://api.example.com").await?; Ok(Response { data }) }
Resultado esperado:
- **Cold-Start-Problem gefunden: Client-Initialisierung im Handler**
- Das Erstellen eines neuen HTTP-Clients bei jedem Aufruf fügt Latenz und Speicher-Overhead hinzu. Jeder Lambda-Container-Start muss einen neuen Client initialisieren.
- **Optimierung**: Verwenden Sie `OnceLock`, um den Client einmal pro Container zu initialisieren:
- ```rust
- use std::sync::OnceLock;
- static HTTP_CLIENT: OnceLock<reqwest::Client> = OnceLock::new();
- async fn handler(event: LambdaEvent<Request>) -> Result<Response, Error> {
- let client = HTTP_CLIENT.get_or_init(|| {
- reqwest::Client::builder()
- .timeout(Duration::from_secs(10))
- .build()
- .unwrap()
- });
- let data = client.get("https://api.example.com").await?;
- Ok(Response { data })
- }
- ```
- **Erwartete Verbesserung**: Schnellere Cold Starts und geringere Speichernutzung
Auditoria de Segurança
SeguroStatic analysis flagged 25 potential issues in SKILL.md code examples, all of which are false positives. The flagged patterns (external_commands, network URLs, cryptographic references) are markdown documentation examples illustrating Lambda optimization patterns, not executable code. The skill only uses read-only tools (Read, Grep, Glob) for code analysis. No malicious intent or dangerous patterns present.
Pontuação de qualidade
O Que Você Pode Construir
Neues Lambda-Projekt einrichten
Überprüfen Sie einen neuen Rust Lambda-Handler während der Entwicklung, um optimale Muster von Anfang an zu etablieren und kostspieliges Refactoring später zu vermeiden.
Leistungsproblembehebung
Diagnostizieren Sie, warum eine bestehende Lambda-Funktion hohe Latenz oder Cold-Start-Probleme hat, und erhalten Sie spezifische Codeänderungen zur Verbesserung der Leistung.
Kostenoptimierungsprüfung
Analysieren Sie Lambda-Funktionen, um Möglichkeiten zur Reduzierung der Ausführungskosten durch bessere Speicherkonfiguration und gleichzeitige Operationen zu identifizieren.
Tente Estes Prompts
Überprüfen Sie diesen AWS Lambda-Handler-Code auf Leistungs- und Kostenoptimierungen. Identifizieren Sie sequenzielle asynchrone Operationen, Ressourcen-Initialisierungsprobleme oder Konfigurationsprobleme.
Analysieren Sie diese Lambda-Funktion, um Ursachen für langsame Cold Starts zu finden. Suchen Sie nach Mustern, die bei jedem Aufruf neue Clients oder Ressourcen erstellen, und schlagen Sie Fixes mit OnceLock oder statischer Initialisierung vor.
Überprüfen Sie die Cargo.toml-Datei dieses Lambda-Projekts. Prüfen Sie, ob das Release-Profil für Lambda-Bereitstellung optimiert ist mit Einstellungen wie opt-level, lto, codegen-units und strip für kleinere Binärdateien.
Diese Lambda-Funktion läuft auf x86_64. Bewerten Sie, ob eine Migration zu ARM64 (Graviton2) ein besseres Preis-Leistungs-Verhältnis bieten würde und welche Code- oder Build-Änderungen erforderlich wären.
Melhores Práticas
- Verwenden Sie tokio::try_join! oder tokio::join! für gleichzeitige I/O-Operationen anstelle von sequenziellen await-Anweisungen
- Initialisieren Sie HTTP-Clients, Datenbank-Pools und AWS SDK-Clients mit OnceLock oder lazy_static zur Container-Wiederverwendung
- Konfigurieren Sie das Cargo.toml-Release-Profil mit opt-level = 'z', lto = true, codegen-units = 1 und strip = true
Evitar
- Erstellen neuer Clients oder Ressourcen innerhalb der Lambda-Handler-Funktion (passiert bei jedem Aufruf)
- Machen sequenzieller asynchrone Aufrufe, die gleichzeitig ausgeführt werden könnten (verschwendet Ausführungszeit)
- Verwenden des standardmäßigen Cargo-Release-Profils ohne Optimierungs-Flags (größere Binärdateien, langsamere Cold-Starts)
Perguntas Frequentes
Ändert dieser Skill meinen Lambda-Code?
Welche Lambda-Runtimes werden unterstützt?
Wie viel Leistungsverbesserung kann ich erwarten?
Kann dieser Skill bei Lambda-Berechtigungen oder IAM-Rollen helfen?
Sollte ich immer ARM64 für Lambda verwenden?
Wie teste ich die vorgeschlagenen Optimierungen?
Detalhes do Desenvolvedor
Estrutura de arquivos
📄 SKILL.md