getFunctions function
Provides a list of AWS Lambda Functions in the current region. Use this data source to discover existing Lambda functions for inventory, monitoring, or bulk operations.
Example Usage
List All Functions
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const all = aws.lambda.getFunctions({});
export const functionCount = all.then(all => all.functionNames).length;
export const allFunctionNames = all.then(all => all.functionNames);
import pulumi
import pulumi_aws as aws
all = aws.lambda_.get_functions()
pulumi.export("functionCount", len(all.function_names))
pulumi.export("allFunctionNames", all.function_names)
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var all = Aws.Lambda.GetFunctions.Invoke();
return new Dictionary<string, object?>
{
["functionCount"] = all.Apply(getFunctionsResult => getFunctionsResult.FunctionNames).Length(),
["allFunctionNames"] = all.Apply(getFunctionsResult => getFunctionsResult.FunctionNames),
};
});
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
all, err := lambda.GetFunctions(ctx, &lambda.GetFunctionsArgs{}, nil)
if err != nil {
return err
}
ctx.Export("functionCount", len(all.FunctionNames))
ctx.Export("allFunctionNames", all.FunctionNames)
return nil
})
}
pulumi {
required_providers {
aws = {
source = "pulumi/aws"
}
}
}
data "aws_lambda_getfunctions" "all" {
}
output "functionCount" {
value = length(data.aws_lambda_getfunctions.all.function_names)
}
output "allFunctionNames" {
value = data.aws_lambda_getfunctions.all.function_names
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.lambda.LambdaFunctions;
import com.pulumi.aws.lambda.inputs.GetFunctionsArgs;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var all = LambdaFunctions.getFunctions(GetFunctionsArgs.builder()
.build());
ctx.export("functionCount", all.functionNames().size());
ctx.export("allFunctionNames", all.functionNames());
}
}
variables:
all:
fn::invoke:
function: aws:lambda:getFunctions
arguments: {}
outputs:
functionCount:
fn::length: ${all.functionNames}
allFunctionNames: ${all.functionNames}
Use Function List for Bulk Operations
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
// Get all Lambda functions
const all = aws.lambda.getFunctions({});
// Create CloudWatch alarms for all functions
const lambdaErrors: aws.cloudwatch.MetricAlarm[] = [];
all.then(all => all.functionNames).length.apply(rangeBody => {
for (let range = 0; range < rangeBody; range++) {
lambdaErrors.push(new aws.cloudwatch.MetricAlarm(`lambda_errors-${range}`, {
name: all.then(all => `${all.functionNames[range]}-errors`),
comparisonOperator: "GreaterThanThreshold",
evaluationPeriods: 2,
metricName: "Errors",
namespace: "AWS/Lambda",
period: 300,
statistic: "Sum",
threshold: 5,
alarmDescription: "This metric monitors lambda errors",
dimensions: {
FunctionName: all.then(all => all.functionNames[range]),
},
tags: {
Environment: "monitoring",
Purpose: "lambda-error-tracking",
},
}));
}
});
import pulumi
from typing import Any
import pulumi_aws as aws
# Get all Lambda functions
all = aws.lambda_.get_functions()
# Create CloudWatch alarms for all functions
lambda_errors: list[aws.cloudwatch.MetricAlarm] = []
def create_lambda_errors(range_body):
for lambda_errors_range in [{"value": i} for i in range(0, range_body)]:
lambda_errors.append(aws.cloudwatch.MetricAlarm(f"lambda_errors-{lambda_errors_range['value']}",
name=f"{all.function_names[lambda_errors_range['value']]}-errors",
comparison_operator="GreaterThanThreshold",
evaluation_periods=2,
metric_name="Errors",
namespace="AWS/Lambda",
period=300,
statistic="Sum",
threshold=float(5),
alarm_description="This metric monitors lambda errors",
dimensions={
"FunctionName": all.function_names[lambda_errors_range["value"]],
},
tags={
"Environment": "monitoring",
"Purpose": "lambda-error-tracking",
}))
(len(all.function_names)).apply(create_lambda_errors)
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
// Get all Lambda functions
var all = Aws.Lambda.GetFunctions.Invoke();
// Create CloudWatch alarms for all functions
var lambdaErrors = new List<Aws.CloudWatch.MetricAlarm>();
all.Apply(getFunctionsResult => getFunctionsResult.FunctionNames).Length().Apply(rangeBody =>
{
for (var rangeIndex = 0; rangeIndex < rangeBody; rangeIndex++)
{
var range = new { Value = rangeIndex };
lambdaErrors.Add(new Aws.CloudWatch.MetricAlarm($"lambda_errors-{range.Value}", new()
{
Name = $"{all.Apply(getFunctionsResult => getFunctionsResult.FunctionNames)[range.Value]}-errors",
ComparisonOperator = "GreaterThanThreshold",
EvaluationPeriods = 2,
MetricName = "Errors",
Namespace = "AWS/Lambda",
Period = 300,
Statistic = "Sum",
Threshold = 5,
AlarmDescription = "This metric monitors lambda errors",
Dimensions =
{
{ "FunctionName", all.Apply(getFunctionsResult => getFunctionsResult.FunctionNames)[range.Value] },
},
Tags =
{
{ "Environment", "monitoring" },
{ "Purpose", "lambda-error-tracking" },
},
}));
}
return 0;
});
});
package main
import (
"fmt"
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/cloudwatch"
"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/lambda"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Get all Lambda functions
all, err := lambda.GetFunctions(ctx, &lambda.GetFunctionsArgs{}, nil)
if err != nil {
return err
}
// Create CloudWatch alarms for all functions
var lambdaErrors []*cloudwatch.MetricAlarm
for index := 0; index < int(len(all.FunctionNames)); index++ {
key0 := index
val0 := index
__res, err := cloudwatch.NewMetricAlarm(ctx, fmt.Sprintf("lambda_errors-%v", key0), &cloudwatch.MetricAlarmArgs{
Name: pulumi.Sprintf("%v-errors", all.FunctionNames[val0]),
ComparisonOperator: pulumi.String("GreaterThanThreshold"),
EvaluationPeriods: pulumi.Int(2),
MetricName: pulumi.String("Errors"),
Namespace: pulumi.String("AWS/Lambda"),
Period: pulumi.Int(300),
Statistic: pulumi.String("Sum"),
Threshold: pulumi.Float64(5),
AlarmDescription: pulumi.String("This metric monitors lambda errors"),
Dimensions: pulumi.StringMap{
"FunctionName": pulumi.String(all.FunctionNames[val0]),
},
Tags: pulumi.StringMap{
"Environment": pulumi.String("monitoring"),
"Purpose": pulumi.String("lambda-error-tracking"),
},
})
if err != nil {
return err
}
lambdaErrors = append(lambdaErrors, __res)
}
return nil
})
}
pulumi {
required_providers {
aws = {
source = "pulumi/aws"
}
}
}
data "aws_lambda_getfunctions" "all" {
}
# Create CloudWatch alarms for all functions
resource "aws_cloudwatch_metricalarm" "lambda_errors" {
count = length(data.aws_lambda_getfunctions.all.function_names)
name ="${data.aws_lambda_getfunctions.all.function_names[count.index]}-errors"
comparison_operator = "GreaterThanThreshold"
evaluation_periods = "2"
metric_name = "Errors"
namespace = "AWS/Lambda"
period = "300"
statistic = "Sum"
threshold = "5"
alarm_description = "This metric monitors lambda errors"
dimensions = {
"FunctionName" = data.aws_lambda_getfunctions.all.function_names[count.index]
}
tags = {
"Environment" = "monitoring"
"Purpose" = "lambda-error-tracking"
}
}
# Get all Lambda functions
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.lambda.LambdaFunctions;
import com.pulumi.aws.lambda.inputs.GetFunctionsArgs;
import com.pulumi.aws.cloudwatch.MetricAlarm;
import com.pulumi.aws.cloudwatch.MetricAlarmArgs;
import com.pulumi.codegen.internal.KeyedValue;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// Get all Lambda functions
final var all = LambdaFunctions.getFunctions(GetFunctionsArgs.builder()
.build());
// Create CloudWatch alarms for all functions
for (var i = 0; i < all.functionNames().size(); i++) {
new MetricAlarm("lambdaErrors-" + i, MetricAlarmArgs.builder()
.name(String.format("%s-errors", all.functionNames()[range.value()]))
.comparisonOperator("GreaterThanThreshold")
.evaluationPeriods(2)
.metricName("Errors")
.namespace("AWS/Lambda")
.period(300)
.statistic("Sum")
.threshold(5.0)
.alarmDescription("This metric monitors lambda errors")
.dimensions(Map.of("FunctionName", all.functionNames()[range.value()]))
.tags(Map.ofEntries(
Map.entry("Environment", "monitoring"),
Map.entry("Purpose", "lambda-error-tracking")
))
.build());
}
}
}
Filter Functions by Name Pattern
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as std from "@pulumi/std";
function can_(
fn: () => any
): boolean {
try {
const result = fn();
if (result === undefined) {
return false;
}
return true;
} catch (e) {
return false;
}
}
export = async () => {
// Get all functions
const all = await aws.lambda.getFunctions({});
const apiFunctions = .filter(name =>
can_(() => (await await std.regex({
pattern: "^api-",
string: name,
})).result)).map(name => (name));
const workerFunctions = .filter(name =>
can_(() => (await await std.regex({
pattern: "^worker-",
string: name,
})).result)).map(name => (name));
return {
apiFunctions: apiFunctions,
workerFunctions: workerFunctions,
};
}
import pulumi
import pulumi_aws as aws
import pulumi_std as std
def can_(fn):
try:
_result = fn()
return True
except:
return False
# Get all functions
all = aws.lambda_.get_functions()
api_functions = [name for name in all.function_names if can_(lambda: std.regex(pattern="^api-",
string=name).result)]
worker_functions = [name for name in all.function_names if can_(lambda: std.regex(pattern="^worker-",
string=name).result)]
pulumi.export("apiFunctions", api_functions)
pulumi.export("workerFunctions", worker_functions)
pulumi {
required_providers {
aws = {
source = "pulumi/aws"
}
std = {
source = "pulumi/std"
}
}
}
data "aws_lambda_getfunctions" "all" {
}
# Get all functions
locals {
apiFunctions = [for name in data.aws_lambda_getfunctions.all.function_names : name if can(regex("^api-", name))]
}
locals {
workerFunctions = [for name in data.aws_lambda_getfunctions.all.function_names : name if can(regex("^worker-", name))]
}
output "apiFunctions" {
value = local.apiFunctions
}
output "workerFunctions" {
value = local.workerFunctions
}
Create Function Inventory
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
export = async () => {
const all = await aws.lambda.getFunctions({});
// Get detailed information for each function
const details = .map(__index => (await aws.lambda.getFunction({
functionName: all.functionNames[__index],
})));
const functionInventory = .map(([i, name]) => ({
name: name,
arn: all.functionArns[i],
runtime: details.apply(details => details[i].runtime),
memorySize: details.apply(details => details[i].memorySize),
timeout: details.apply(details => details[i].timeout),
handler: details.apply(details => details[i].handler),
}));
return {
functionInventory: functionInventory,
};
}
import pulumi
import pulumi_aws as aws
all = aws.lambda_.get_functions()
# Get detailed information for each function
details = [aws.lambda_.get_function(function_name=all.function_names[__index]) for __index in len(all.function_names).apply(lambda length: range(length))]
function_inventory = [{
"name": name,
"arn": all.function_arns[i],
"runtime": details.apply(lambda details: details[i].runtime),
"memorySize": details.apply(lambda details: details[i].memory_size),
"timeout": details.apply(lambda details: details[i].timeout),
"handler": details.apply(lambda details: details[i].handler),
} for i, name in enumerate(all.function_names)]
pulumi.export("functionInventory", function_inventory)
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var all = Aws.Lambda.GetFunctions.Invoke();
// Get detailed information for each function
var details = ;
var functionInventory = Output.Tuple(all, details).Apply(values =>
{
var all = values.Item1;
var details = values.Item2;
return .Select(name =>
{
return
{
{ "name", name },
{ "arn", all.Apply(getFunctionsResult => getFunctionsResult.FunctionArns)[i] },
{ "runtime", details[i].Runtime },
{ "memorySize", details[i].MemorySize },
{ "timeout", details[i].Timeout },
{ "handler", details[i].Handler },
};
}).ToList();
});
return new Dictionary<string, object?>
{
["functionInventory"] = functionInventory,
};
});
pulumi {
required_providers {
aws = {
source = "pulumi/aws"
}
}
}
data "aws_lambda_getfunctions" "all" {
}
data "aws_lambda_getfunction" "invoke_1" {
for_each = toset(range(length(data.aws_lambda_getfunctions.all.function_names)))
function_name = data.aws_lambda_getfunctions.all.function_names[each.value]
}
# Get detailed information for each function
locals {
details = [for __index in range(length(data.aws_lambda_getfunctions.all.function_names)) : data.aws_lambda_getfunction.invoke_1[__index]]
}
locals {
functionInventory = [for i, name in data.aws_lambda_getfunctions.all.function_names : {
"name" = name
"arn" = data.aws_lambda_getfunctions.all.function_arns[i]
"runtime" = local.details[i].runtime
"memorySize" = local.details[i].memory_size
"timeout" = local.details[i].timeout
"handler" = local.details[i].handler
} ]
}
output "functionInventory" {
value = local.functionInventory
}
args Arguments passed to this invoke. Arguments for getFunctions.
options Invoke options controlling this call.
Implementation
Future<GetFunctionsResult> getFunctions(
GetFunctionsArgs args, {
pulumi.InvokeOptions? options,
}) async {
final deployment = pulumi.Deployment.instance;
final result = await deployment.invoke<Map<String, dynamic>>(
'aws:lambda/getFunctions:getFunctions',
args.toMap(),
options: pulumi.toDeploymentInvokeOptions(options),
);
return GetFunctionsResult.fromMap(result);
}