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

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 das AWS CLI oder auch verwenden, AWS SDKs um Aktualisierungen Ihrer am häufigsten aufgerufenen Funktionen zu priorisieren.

In den folgenden Abschnitten erfahren Sie, wie Sie Funktionen verwenden AWS CLI und Daten über Funktionen sammeln AWS SDKs, 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 Versionen von $ LATEST function aufzulisten, lassen Sie den Befehl --function-version ALL 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 AWS-Konten Regionen.

Sie können auch Funktionen auflisten, die eine bestimmte Laufzeit verwenden, indem Sie eine der folgenden Optionen verwenden AWS SDKs. Der folgende Beispielcode verwendet V3 AWS SDK for JavaScript und die AWS SDK for Python (Boto3) , um eine Liste der Funktionen 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 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 zur Verwendung von und AWS SDK zum Auflisten Ihrer Funktionen mithilfe der ListFunctionsAktion finden Sie in der SDKDokumentation zu Ihrer bevorzugten 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 LATEST Versionen der Funktion $ 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 Aktionen AWS CLI oder einer der Aktionen mit und programmgesteuert zu sammeln. AWS SDKs DescribeLogStreamsGetMetricStatisticsAPI

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 ermitteln 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', 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 ListFunctionsAPIOperation 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}')