You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Java代码查询指定AWS Lambda函数的运行实例数?

查询AWS Lambda当前运行实例数的方案

AWS没有提供直接返回当前运行Lambda实例数的公开API,但可以通过CloudWatch指标间接获取近似的并发执行数(每个并发执行对应一个运行中的实例)。

核心方案:查询CloudWatch的ConcurrentExecutions指标

Lambda会向CloudWatch上报ConcurrentExecutions指标,代表当前该函数的并发执行实例数量,这也是控制台图表展示的数据来源。

Java代码示例(使用AWS SDK for Java v2)

首先添加AWS CloudWatch Metrics SDK的Maven依赖:

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>cloudwatch</artifactId>
    <version>2.20.0</version>
</dependency>

然后编写查询代码:

import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.cloudwatch.CloudWatchClient;
import software.amazon.awssdk.services.cloudwatch.model.*;
import java.time.Instant;
import java.util.Collections;

public class LambdaConcurrentExecutions {
    public static void main(String[] args) {
        String functionName = "your-lambda-function-name";
        Region region = Region.US_EAST_1; // 替换为你的Lambda所在区域

        try (CloudWatchClient cwClient = CloudWatchClient.builder().region(region).build()) {
            Instant endTime = Instant.now();
            Instant startTime = endTime.minusSeconds(60); // 查询最近1分钟的数据

            GetMetricStatisticsRequest request = GetMetricStatisticsRequest.builder()
                    .namespace("AWS/Lambda")
                    .metricName("ConcurrentExecutions")
                    .dimensions(Collections.singletonList(Dimension.builder()
                            .name("FunctionName")
                            .value(functionName)
                            .build()))
                    .startTime(startTime)
                    .endTime(endTime)
                    .period(60) // 统计周期60秒
                    .statistics(Statistic.MAX) // 取周期内最大值,近似当前并发数
                    .build();

            GetMetricStatisticsResponse response = cwClient.getMetricStatistics(request);

            if (!response.datapoints().isEmpty()) {
                Datapoint latestDatapoint = response.datapoints().stream()
                        .max((d1, d2) -> d1.timestamp().compareTo(d2.timestamp()))
                        .orElse(null);

                if (latestDatapoint != null) {
                    System.out.printf("Lambda函数 %s 的当前近似并发实例数: %.0f%n",
                            functionName, latestDatapoint.max());
                }
            } else {
                System.out.println("未获取到并发执行数据,可能函数最近未运行或数据存在延迟");
            }
        } catch (CloudWatchException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}

关键说明

  • 数据延迟:CloudWatch指标通常有1-5分钟的延迟,无法获取完全实时的实例计数,目前AWS没有公开API支持实时查询。
  • 指标含义:ConcurrentExecutions统计的是函数的并发执行数量,每个并发执行对应一个运行中的Lambda实例(未启用预置并发的场景)。若启用了预置并发,可结合ProvisionedConcurrencyUtilization等指标补充分析,但核心运行实例数仍由ConcurrentExecutions反映。
  • 权限要求:执行代码的IAM角色需要具备cloudwatch:GetMetricStatistics权限。

AWS控制台展示的Lambda实例数图表正是基于该CloudWatch指标,不存在未公开的私有API可直接获取实时实例数。

内容的提问来源于stack exchange,提问作者Stormcloud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:01:15