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 sich eine Lambda-Laufzeit dem Ende nähert, werden Sie von Lambda per E-Mail benachrichtigt und im Laufe der Zeit benachrichtigt. AWS Health Dashboard Trusted Advisor In diesen E-Mails und Benachrichtigungen sind die $LATEST-Versionen der Funktionen aufgeführt, die die Laufzeit verwenden. Um all Ihre Funktionsversionen aufzulisten, die eine bestimmte Laufzeit verwenden, können Sie das AWS Command Line Interface (AWS CLI) oder eines der AWS SDKs verwenden.

Wenn Sie über eine große Anzahl von Funktionen verfügen, die eine Laufzeit verwenden, die bald nicht mehr unterstützt wird, können Sie auch die AWS SDKs AWS CLI oder verwenden, um Aktualisierungen Ihrer am häufigsten aufgerufenen Funktionen zu priorisieren.

In den folgenden Abschnitten erfahren Sie, wie Sie mithilfe der AWS SDKs AWS CLI und 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. RUNTIME_IDENTIFIERErsetzen Sie ihn durch den Namen der Laufzeit, die veraltet ist, und wählen Sie Ihren eigenen aus. AWS-Region 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 eine bestimmte Region auf. AWS-Konto Sie müssen diesen Befehl für jede Region wiederholen, in der Ihr Konto Funktionen hat, und für jede Ihrer Regionen. AWS-Konten

Mithilfe eines der AWS SDKs können Sie auch Funktionen auflisten, die eine bestimmte Laufzeit verwenden. Der folgende Beispielcode verwendet V3 AWS SDK for JavaScript und die, AWS SDK for Python (Boto3) um eine Liste der Funktions-ARNs für Funktionen zurückzugeben, die eine bestimmte Laufzeit verwenden. Der Beispielcode gibt auch die CloudWatch Protokollgruppe für jede der aufgelisteten 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 AbschnittIdentifizieren der am häufigsten und zuletzt aufgerufenen Funktionen.

Node.js
Beispiel JavaScript Code zum Auflisten von Funktionen, die eine bestimmte Laufzeit verwenden
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 zum Auflisten von Funktionen, die eine bestimmte Laufzeit verwenden
import boto3 lambda_client = boto3.client('lambda') response = lambda_client.list_functions( FunctionVersion='ALL', MaxItems=50 ) for function in response['Functions']: if function['Runtime'] == '<your_runtime>': # Use the runtime id, e.g. 'nodejs18.x' or 'python3.9' print(function['FunctionArn']) # Print the CloudWatch log group of the function # to use later for finding last invocation date print(function['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: pagination_token = response['NextMarker']

Weitere Informationen zur Verwendung eines AWS SDK zum Auflisten Ihrer Funktionen mithilfe der ListFunctionsAktion finden Sie in der SDK-Dokumentation für Ihre bevorzugte Programmiersprache.

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

Identifizieren der am häufigsten und zuletzt aufgerufenen Funktionen

Wenn Ihr System Funktionen AWS-Konto enthält, die eine Laufzeit verwenden, die bald nicht mehr unterstützt wird, sollten Sie der Aktualisierung von Funktionen, die häufig aufgerufen werden, oder Funktionen, die kürzlich aufgerufen wurden, Priorität einräumen.

Wenn Sie nur über wenige Funktionen verfügen, können Sie die CloudWatch Logs-Konsole verwenden, um diese Informationen zu sammeln, indem Sie sich die Log-Streams Ihrer Funktionen ansehen. Weitere Informationen finden Sie unter An Logs gesendete CloudWatch Protokolldaten anzeigen.

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

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

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

  3. Wählen Sie den Tab Überwachung.

  4. Stellen Sie mit der Datumsbereichsauswahl den Zeitraum ein, für den Sie Statistiken anzeigen möchten. Aktuelle Aufrufe werden im Bereich Aufrufe angezeigt.

Bei Konten mit einer größeren Anzahl von Funktionen kann es effizienter sein, diese Daten mithilfe der API-Aktionen AWS CLI oder eines der AWS SDKs programmgesteuert zu sammeln. DescribeLogStreamsGetMetricStatistics

Die folgenden Beispiele enthalten Codefragmente, die V3 AWS SDK for JavaScript und die verwenden, AWS SDK for Python (Boto3) um das Datum des letzten Aufrufs für eine bestimmte Funktion zu identifizieren und die Anzahl der Aufrufe für eine bestimmte Funktion in den letzten 14 Tagen zu bestimmen.

Node.js
Beispiel JavaScript Code, um die Uhrzeit 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', 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', 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 ListFunctionsAPI-Operation ermitteln. Ein Beispiel dafür finden Sie im Auflisten von Funktionsversionen, die eine bestimmte Laufzeit verwenden Code unter.

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}')