Mengambil data tentang fungsi Lambda yang menggunakan runtime usang - AWS Lambda

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengambil data tentang fungsi Lambda yang menggunakan runtime usang

Saat runtime Lambda mendekati penghentian, Lambda memberi tahu Anda melalui email dan memberikan pemberitahuan di dan. AWS Health Dashboard Trusted Advisor Email dan notifikasi ini mencantumkan versi fungsi $ LATEST menggunakan runtime. Untuk mencantumkan semua versi fungsi yang menggunakan runtime tertentu, Anda dapat menggunakan AWS Command Line Interface (AWS CLI) atau salah satu AWS SDK.

Jika Anda memiliki sejumlah besar fungsi yang menggunakan runtime yang akan usang, Anda juga dapat menggunakan AWS CLI atau AWS SDK untuk membantu Anda memprioritaskan pembaruan ke fungsi yang paling sering dipanggil.

Lihat bagian berikut untuk mempelajari cara menggunakan AWS CLI dan AWS SDK untuk mengumpulkan data tentang fungsi yang menggunakan runtime tertentu.

Daftar versi fungsi yang menggunakan runtime tertentu

Untuk menggunakan daftar semua versi fungsi Anda yang menggunakan runtime tertentu, jalankan perintah berikut. AWS CLI Ganti RUNTIME_IDENTIFIER dengan nama runtime yang sudah tidak digunakan lagi dan pilih sendiri. Wilayah AWS Untuk daftar hanya versi fungsi $LATEST, hilangkan --function-version ALL dari perintah.

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

Contoh perintah mencantumkan fungsi di us-east-1 wilayah untuk tertentu Akun AWS Anda harus mengulangi perintah ini untuk setiap wilayah di mana akun Anda memiliki fungsi dan untuk masing-masing Akun AWS.

Anda juga dapat membuat daftar fungsi yang menggunakan runtime tertentu menggunakan salah satu AWS SDK. Contoh kode berikut menggunakan V3 AWS SDK for JavaScript dan AWS SDK for Python (Boto3) untuk mengembalikan daftar fungsi ARN untuk fungsi menggunakan runtime tertentu. Kode contoh juga mengembalikan grup CloudWatch log untuk masing-masing fungsi yang terdaftar. Anda dapat menggunakan grup log ini untuk menemukan tanggal pemanggilan terakhir untuk fungsi tersebut. Lihat bagian berikut Mengidentifikasi fungsi yang paling umum dan paling baru dipanggil untuk informasi lebih lanjut.

Node.js
contoh JavaScript kode untuk daftar fungsi menggunakan runtime tertentu
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
contoh Kode Python untuk mencantumkan fungsi menggunakan runtime tertentu
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']

Untuk mempelajari lebih lanjut tentang menggunakan AWS SDK untuk mencantumkan fungsi Anda menggunakan ListFunctionstindakan, lihat dokumentasi SDK untuk bahasa pemrograman pilihan Anda.

Anda juga dapat menggunakan fitur Kueri AWS Config lanjutan untuk mencantumkan semua fungsi yang menggunakan runtime yang terpengaruh. Kueri ini hanya mengembalikan fungsi $LATEST versi, tetapi Anda dapat menggabungkan kueri ke daftar fungsi di semua wilayah dan beberapa Akun AWS dengan satu perintah. Untuk mempelajari selengkapnya, lihat Menanyakan Status AWS Auto Scaling Sumber Daya Konfigurasi Saat Ini di Panduan AWS Config Pengembang.

Mengidentifikasi fungsi yang paling umum dan paling baru dipanggil

Jika Akun AWS berisi fungsi yang menggunakan runtime yang seharusnya tidak digunakan lagi, Anda mungkin ingin memprioritaskan fungsi pembaruan yang sering dipanggil atau fungsi yang baru saja dipanggil.

Jika Anda hanya memiliki beberapa fungsi, Anda dapat menggunakan konsol CloudWatch Log untuk mengumpulkan informasi ini dengan melihat aliran log fungsi Anda. Lihat Melihat data log yang dikirim ke CloudWatch Log untuk informasi selengkapnya.

Untuk melihat jumlah pemanggilan fungsi terbaru, Anda juga dapat menggunakan informasi CloudWatch metrik yang ditampilkan di konsol Lambda. Untuk melihat informasi ini, lakukan hal berikut:

  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsi yang ingin Anda lihat statistik pemanggilan.

  3. Pilih tab Monitor.

  4. Tetapkan periode waktu yang ingin Anda lihat statistik untuk menggunakan pemilih rentang tanggal. Pemanggilan terbaru ditampilkan di panel Pemanggilan.

Untuk akun dengan jumlah fungsi yang lebih besar, akan lebih efisien untuk mengumpulkan data ini secara terprogram menggunakan AWS CLI atau salah satu AWS SDK menggunakan tindakan API DescribeLogStreamsdan GetMetricStatistics.

Contoh berikut menyediakan cuplikan kode menggunakan V3 AWS SDK for JavaScript dan AWS SDK for Python (Boto3) untuk mengidentifikasi tanggal pemanggilan terakhir untuk fungsi tertentu dan untuk menentukan jumlah pemanggilan untuk fungsi tertentu dalam 14 hari terakhir.

Node.js
contoh JavaScript kode untuk menemukan waktu pemanggilan terakhir untuk suatu fungsi
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
contoh Kode Python untuk menemukan waktu pemanggilan terakhir untuk suatu fungsi
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')
Tip

Anda dapat menemukan nama grup log fungsi Anda menggunakan operasi ListFunctionsAPI. Lihat kode di Daftar versi fungsi yang menggunakan runtime tertentu untuk contoh bagaimana melakukan ini.

Node.js
contoh JavaScript kode untuk menemukan jumlah pemanggilan dalam 14 hari terakhir
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
contoh Kode Python untuk menemukan jumlah pemanggilan dalam 14 hari terakhir
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}')