Wenn Sieerneut ausführen von AWS Lambda, haben Sie wahrscheinlich angenommen, Sie bezahlen nur für die Protokolle Ihren eigenen code explizit schreibt. Aber was ist, wenn ich Ihnen sagte, dass jeder einzelne Lambda-Aufruf erzeugt einen Bericht, log in CloudWatch, auch wenn Ihre Funktion,s-code ist ganz still?
Und ja, Sie werden berechnet für jeden einzelnen.
Werfen Sie einen Blick auf Ihre CloudWatch-Protokolle für jede Lambda-Funktion. Siell sehen Sie diese drei Zeilen für jede Ausführung:
START-Anforderungs-id: ...ENDE Anforderungs-id: ...BERICHT Anforderungs-id: ... Dauer: X-ms Billed Duration: Y ms Memory Size: Z MB Max Memory used: W MB
Dieser BERICHT Protokolle sind system-level -, INFO – logs erzeugt durch die Lambda-Dienst selbst. Während Siere nützlich für die Fehlersuche oder Optimierung Ihrer Funktions Speicher, die meisten der Zeit—vor allem in high-traffic-Produktions-Umgebungen—Sie werden nur teurer Lärm.
Doesn’t sound, wie viel? Lassen Sies die Mathematik zu tun.
Die $4/Monat Kosten, die Sie Didnt Wissen, Sie Hatten
Lassens brechen die Kosten für eine einzige, mäßig belebten Funktion.
Diese START -, END -und BERICHT – Protokolle insgesamt über 262 bytes of data.
- Log-Größe: 262 bytes pro Aufruf
- Verkehr: 1,000,000 Hinrichtungen pro Tag
- CloudWatch Verschlucken Preis: $0,50 pro GB (us-east-1)
Hier ist die Berechnung(Amazon CloudWatch Pricing):
- Täglich Melden Verschlucken: 262 bytes/Ausführung × 1,000,000 Ausführungen/Tag = 262,000,000 bytes = ~262 MB pro Tag
- Monthly Log Verschlucken: 262 MB/Tag × 30.5 Tagen/Monat = 7,991 MB = ~8 GB pro Monat
- Monatliche Kosten: 8 GB/Monat × $0.50/GB – = **$4.00 pro Monat**
Dass – $4 pro Monat für eine einzelne Funktion, nur für die Protokolle, die Sie wahrscheinlich sindnicht mal verwenden.
Nun, Waage,. Was ist, wenn Sie über 50 Funktionen wie das? Dasss $200/Monat. Was ist, wenn Ihre Funktion Griffe 10 Millionen Hinrichtungen pro Tag? Dasss $40/Monat für diese Funktion.
Dies ist ein klassisches ‚Tod durch tausend Schnitte‘ cloud-Kosten. Wenn Sie aren’t aktiv verwenden diese Protokolle, um Speicher zu optimieren, Sie bezahlen für die Daten, die Sie dont müssen.
Die Lösung: Sie Unterdrücken die System-Logs
Die Lösung ist überraschend einfach. Sie brauchen nur zu sagen, Lambda zu senden beenden Sie die INFO-level-system-log protokolliert. Sie können dies tun, indem Sie die Einstellung der system-log-level zu WARNEN oder auf FEHLER.
Diese änderung wird die unterdrücken, die START -, END -und BERICHT – Protokolle vollständig, während immer noch so dass Sie Ihre eigene Anwendungs-Protokolle (z.B., Konsole.anmelden oder print()), um durch zu kommen.
Der Haken: Diese Funktion funktioniert nur, wenn Ihre Lambda-Funktions-log-format auf JSON. , Wenn Siere immer noch der Standard plain Text format, wird diese Einstellung ignoriert.
Wie um das Update zu Implementieren
Sie können diese änderung in der AWS CDK, AWS CLI, CloudFormation, oder jede andere IaC-tool. mehr Beispiele
Für AWS CDK (Typoskript)
Bei der Definition Ihrer Funktion den loggingConfig Eigentum.
import * as lambda from 'aws-cdk-lib/aws-lambda';
new lambda.Function(this, 'MyFunction', {
// ... other properties
runtime: lambda.Runtime.NODEJS_20_X,
handler: 'index.handler',
code: lambda.Code.fromAsset('lambda'),
// --- THIS IS THE FIX ---
loggingConfig: {
logFormat: lambda.LogFormat.JSON,
systemLogLevelV2: lambda.SystemLogLevel.WARN,
},
// --- END FIX ---
});
Für die AWS CLI
Sie können das update einer vorhandenen Funktion direkt vom terminal aus.
aws lambda update-function-configuration \
--function-name MyFunction \
--logging-config '{"LogFormat": "JSON", "ApplicationLogLevel": "INFO", "SystemLogLevel": "WARN"}'(Hinweis: ApplicationLogLevel steuert Ihr codes log-level, während SystemLogLevel steuert den Lambda-service -s-Protokolle. Wir wollen nur unterdrücken Sie das system-Protokollen).
Hiers a high-quality blog post basiert auf das Thema, das Sie zur Verfügung gestellt.
Eine Einfache Änderung für Echte Einsparungen
Dies ist eine der einfachsten kostensparende änderungen, die Sie vornehmen können. Durch hinzufügen von zwei Zeilen der Konfiguration, können Sie beseitigen eine ständige, unnötige Daten-stream und reduzieren Sie Ihre CloudWatch-Rechnung jeden Monat.
Nehmen Sie sich ein paar Minuten, überprüfen Sie Ihre high-traffic-Funktionen, und stoppen Sie die Zahlung für log Lärm, den Sie dont verwenden.
