Rufen Sie Daten über Lambda-Funktionen ab, die eine veraltete Laufzeit verwenden - AWS Lambda

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Rufen Sie Daten über Lambda-Funktionen ab, die eine veraltete Laufzeit verwenden

Wenn eine Lambda-Laufzeitumgebung bald ausläuft, benachrichtigt Lambda Sie per E-Mail und bietet Benachrichtigungen in den Programmen AWS Health Dashboard und Trusted Advisor. In diesen E-Mails und Benachrichtigungen werden die $LATEST-Versionen von Funktionen aufgelistet, die die Laufzeit verwenden. Um all Ihre Funktionsversionen aufzulisten, die eine bestimmte Laufzeit verwenden, können Sie die AWS Command Line Interface (AWS CLI) oder eines der AWS-SDKs verwenden.

Wenn Sie eine große Anzahl von Funktionen haben, die eine veraltete Laufzeit verwenden, können Sie auch die AWS CLI- oder AWS-SDKs verwenden, um die Aktualisierungen für Ihre am häufigsten aufgerufenen Funktionen zu priorisieren.

In den folgenden Abschnitten erfahren Sie, wie Sie mithilfe der AWS CLI und AWS SDKs Daten über Funktionen sammeln, die eine bestimmte Laufzeit verwenden.

Auflisten von Funktionsversionen, die eine bestimmte Laufzeit verwenden

Führen Sie den folgenden Befehl aus, AWS CLI um alle Ihre Funktionsversionen aufzulisten, die eine bestimmte Laufzeit verwenden. Ersetzen Sie RUNTIME_IDENTIFIER durch den Namen der veralteten Laufzeit und wählen Sie Ihre AWS-Region aus. Um nur die $LATEST-Funktionsversionen aufzulisten, lassen Sie --function-version ALL im Befehl weg.

aws lambda list-functions --function-version ALL --region us-east-1 --output text --query "Functions[?Runtime=='RUNTIME_IDENTIFIER'].FunctionArn"
Tipp

Der Beispielbefehl listet Funktionen in der us-east-1-Region für einen bestimmten AWS-Konto auf. Sie müssen diesen Befehl für jede Region wiederholen, in der Ihr Konto Funktionen hat, und für jede Ihrer AWS-Konten.

Um mit AWS alle Ihre Funktionsversionen aufzulisten, die eine bestimmte Laufzeit verwenden, führen Sie den folgenden Befehl aus. Der folgende Beispielcode verwendet die V3 AWS SDK for JavaScript und die AWS SDK for Python (Boto3), um eine Liste der Funktions-ARNs für Funktionen, die eine bestimmte Laufzeit verwenden, zurückzugeben. Der Beispielcode gibt auch die CloudWatch-Protokollgruppe für jede der aufgeführten Funktionen zurück. Sie können diese Protokollgruppe verwenden, um das Datum des letzten Aufrufs der Funktion zu ermitteln. Weitere Informationen finden Sie im folgenden Abschnitt Identifizieren der am häufigsten und zuletzt aufgerufenen Funktionen.

Node.js
Beispiel JavaScript-Code zur Auflistung von Funktionen mit einer bestimmten Laufzeit
import { LambdaClient, ListFunctionsCommand } from "@aws-sdk/client-lambda"; const lambdaClient = new LambdaClient(); const command = new ListFunctionsCommand({ FunctionVersion: "ALL", MaxItems: 50 }); const response = await lambdaClient.send(command); for (const f of response.Functions){ if (f.Runtime == '<your_runtime>'){ // Use the runtime id, e.g. 'nodejs18.x' or 'python3.9' console.log(f.FunctionArn); // get the CloudWatch log group of the function to // use later for finding the last invocation date console.log(f.LoggingConfig.LogGroup); } } // If your account has more functions than the specified // MaxItems, use the returned pagination token in the // next request with the 'Marker' parameter if ('NextMarker' in response){ let paginationToken = response.NextMarker; }
Python
Beispiel Python-Code zur Auflistung von Funktionen mit einer bestimmten Laufzeit
import boto3 from botocore.exceptions import ClientError def list_lambda_functions(target_runtime): lambda_client = boto3.client('lambda') response = lambda_client.list_functions( FunctionVersion='ALL', MaxItems=50 ) if not response['Functions']: print("No Lambda functions found") else: for function in response['Functions']: if function['PackageType']=='Zip' and function['Runtime'] == target_runtime: print(function['FunctionArn']) # Print the CloudWatch log group of the function # to use later for finding last invocation date print(function['LoggingConfig']['LogGroup']) if 'NextMarker' in response: pagination_token = response['NextMarker'] if __name__ == "__main__": # Replace python3.12 with the appropriate runtime ID for your Lambda functions list_lambda_functions('python3.12')

Weitere Informationen über die Verwendung eines AWS-SDK zum Auflisten Ihrer Funktionen mit der ListFunctions-Aktion finden Sie in der SDK-Dokumentation für Ihre bevorzugte Programmiersprache.

Sie können auch das Feature „Erweiterte Abfragen“ von AWS Config verwenden, um alle Funktionen aufzulisten, die eine betroffene Laufzeit verwenden. Diese Abfrage gibt nur die $LATEST-Versionen der Funktion zurück. Sie können Abfragen aber aggregieren, um Funktionen für alle Regionen und mehrere AWS-Konten mit einem einzigen Befehl aufzulisten. Weitere Informationen finden Sie unter Abfragen des aktuellen Konfigurationsstatus von AWS Auto Scaling-Ressourcen im Entwicklerhandbuch von AWS Config.

Identifizieren der am häufigsten und zuletzt aufgerufenen Funktionen

Wenn Ihr AWS-Konto Funktionen enthält, die eine veraltete Laufzeitumgebung verwenden, sollten Sie der Aktualisierung von Funktionen, die häufig aufgerufen werden, oder von Funktionen, die kürzlich aufgerufen wurden, Vorrang einräumen.

Wenn Sie nur einige wenige Funktionen haben, können Sie die CloudWatch Logs-Konsole verwenden, um diese Informationen zu sammeln, indem Sie sich die Protokollstreams Ihrer Funktionen ansehen. Weitere Informationen finden Sie unter Anzeigen der an CloudWatch Logs gesendeten Protokolldaten.

Um die Anzahl der letzten Funktionsaufrufen zu sehen, können Sie auch die CloudWatch-Metrikinformationen verwenden, die in der Lambda-Konsole angezeigt werden. Gehen Sie wie folgt vor, um diese Informationen anzuzeigen:

  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie die Funktion aus, für die Sie eine Aufrufstatistik anzeigen möchten.

  3. Wählen Sie den Tab Überwachung.

  4. Legen Sie den Zeitraum fest, für den Sie die Statistiken anzeigen möchten, indem Sie den Datumsbereich auswählen. Die letzten Aufrufe werden im Bereich Aufrufe angezeigt.

Für Konten mit einer größeren Anzahl von Funktionen kann es effizienter sein, diese Daten programmatisch mit dem AWS CLI- oder einem der AWS-SDKs unter Verwendung der API-Aktionen DescribeLogStreams und GetMetricStatistics zu erfassen.

Die folgenden Beispiele enthalten Codeschnipsel, die V3 AWS SDK for JavaScript und AWS SDK for Python (Boto3) verwenden, um das Datum des letzten Aufrufs einer bestimmten Funktion zu ermitteln und um die Anzahl der Aufrufe einer bestimmten Funktion in den letzten 14 Tagen zu bestimmen.

Node.js
Beispiel JavaScript-Code, um den Zeitpunkt des letzten Aufrufs für eine Funktion zu ermitteln
import { CloudWatchLogsClient, DescribeLogStreamsCommand } from "@aws-sdk/client-cloudwatch-logs"; const cloudWatchLogsClient = new CloudWatchLogsClient(); const command = new DescribeLogStreamsCommand({ logGroupName: '<your_log_group_name>', orderBy: 'LastEventTime', descending: true, limit: 1 }); try { const response = await cloudWatchLogsClient.send(command); const lastEventTimestamp = response.logStreams.length > 0 ? response.logStreams[0].lastEventTimestamp : null; // Convert the UNIX timestamp to a human-readable format for display const date = new Date(lastEventTimestamp).toLocaleDateString(); const time = new Date(lastEventTimestamp).toLocaleTimeString(); console.log(`${date} ${time}`); } catch (e){ console.error('Log group not found.') }
Python
Beispiel Python-Code, um den Zeitpunkt des letzten Aufrufs für eine Funktion zu ermitteln
import boto3 from datetime import datetime cloudwatch_logs_client = boto3.client('logs') response = cloudwatch_logs_client.describe_log_streams( logGroupName='<your_log_group_name>', orderBy='LastEventTime', descending=True, limit=1 ) try: if len(response['logStreams']) > 0: last_event_timestamp = response['logStreams'][0]['lastEventTimestamp'] print(datetime.fromtimestamp(last_event_timestamp/1000)) # Convert timestamp from ms to seconds else: last_event_timestamp = None except: print('Log group not found')
Tipp

Sie können den Namen der Protokollgruppe Ihrer Funktion mithilfe der ListFunctions-API-Operation ermitteln. Der Code in Auflisten von Funktionsversionen, die eine bestimmte Laufzeit verwenden enthält ein Beispiel für diese Vorgehensweise.

Node.js
Beispiel JavaScript-Code, um die Anzahl der Aufrufe in den letzten 14 Tagen zu ermitteln
import { CloudWatchClient, GetMetricStatisticsCommand } from "@aws-sdk/client-cloudwatch"; const cloudWatchClient = new CloudWatchClient(); const command = new GetMetricStatisticsCommand({ Namespace: 'AWS/Lambda', MetricName: 'Invocations', StartTime: new Date(Date.now()-86400*1000*14), // 14 days ago EndTime: new Date(Date.now()), Period: 86400 * 14, // 14 days. Statistics: ['Sum'], Dimensions: [{ Name: 'FunctionName', Value: '<your_function_name>' }] }); const response = await cloudWatchClient.send(command); const invokesInLast14Days = response.Datapoints.length > 0 ? response.Datapoints[0].Sum : 0; console.log('Number of invocations: ' + invokesInLast14Days);
Python
Beispiel Python-Code, um die Anzahl der Aufrufe in den letzten 14 Tagen zu ermitteln
import boto3 from datetime import datetime, timedelta cloudwatch_client = boto3.client('cloudwatch') response = cloudwatch_client.get_metric_statistics( Namespace='AWS/Lambda', MetricName='Invocations', Dimensions=[ { 'Name': 'FunctionName', 'Value': '<your_function_name>' }, ], StartTime=datetime.now() - timedelta(days=14), EndTime=datetime.now(), Period=86400 * 14, # 14 days Statistics=[ 'Sum' ] ) if len(response['Datapoints']) > 0: invokes_in_last_14_days = int(response['Datapoints'][0]['Sum']) else: invokes_in_last_14_days = 0 print(f'Number of invocations: {invokes_in_last_14_days}')