docs
reference
services
tessl install tessl/maven-com-pulumi--aws@7.16.0Pulumi Java SDK for AWS providing strongly-typed Infrastructure-as-Code for 227 AWS service packages including compute, storage, databases, networking, security, analytics, machine learning, and more.
AWS Lambda runs code without provisioning servers.
import com.pulumi.aws.lambda.Function;
import com.pulumi.aws.lambda.FunctionArgs;
import com.pulumi.aws.lambda.LayerVersion;
import com.pulumi.aws.lambda.LayerVersionArgs;
import com.pulumi.aws.lambda.Permission;
import com.pulumi.aws.lambda.PermissionArgs;
import com.pulumi.aws.lambda.EventSourceMapping;
import com.pulumi.aws.lambda.EventSourceMappingArgs;
import com.pulumi.aws.lambda.Alias;
import com.pulumi.aws.lambda.AliasArgs;
import com.pulumi.aws.lambda.LambdaFunctions;
import com.pulumi.asset.FileArchive;Create and manage Lambda functions.
@ResourceType(type="aws:lambda/function:Function")
public class Function extends com.pulumi.resources.CustomResource {
public Function(String name, FunctionArgs args);
public Function(String name, FunctionArgs args, @Nullable CustomResourceOptions options);
// Exported Properties
public Output<String> arn();
public Output<String> functionName();
public Output<String> role();
public Output<String> handler();
public Output<String> runtime();
public Output<Optional<Archive>> code();
public Output<Optional<String>> s3Bucket();
public Output<Optional<String>> s3Key();
public Output<Optional<String>> s3ObjectVersion();
public Output<Optional<String>> imageUri();
public Output<Optional<String>> packageType();
public Output<Optional<Integer>> timeout();
public Output<Optional<Integer>> memorySize();
public Output<Optional<String>> description();
public Output<Optional<List<String>>> layers();
public Output<Optional<FunctionEnvironment>> environment();
public Output<Optional<FunctionVpcConfig>> vpcConfig();
public Output<Optional<FunctionDeadLetterConfig>> deadLetterConfig();
public Output<Optional<FunctionTracingConfig>> tracingConfig();
public Output<Optional<List<String>>> architectures();
public Output<String> invokeArn();
public Output<String> version();
public Output<String> qualifiedArn();
}
public class FunctionArgs extends com.pulumi.resources.ResourceArgs {
public static Builder builder() { return new Builder(); }
public static final class Builder {
// Required
public Builder functionName(Output<String> functionName);
public Builder role(Output<String> role);
public Builder runtime(Output<String> runtime);
public Builder handler(Output<String> handler);
// Code source (one required)
public Builder code(Output<Archive> code);
public Builder s3Bucket(Output<String> s3Bucket);
public Builder s3Key(Output<String> s3Key);
public Builder s3ObjectVersion(Output<String> s3ObjectVersion);
public Builder imageUri(Output<String> imageUri);
// Optional
public Builder description(Output<String> description);
public Builder timeout(Output<Integer> timeout);
public Builder memorySize(Output<Integer> memorySize);
public Builder packageType(Output<String> packageType);
public Builder layers(Output<List<String>> layers);
public Builder environment(Output<FunctionEnvironmentArgs> environment);
public Builder vpcConfig(Output<FunctionVpcConfigArgs> vpcConfig);
public Builder deadLetterConfig(Output<FunctionDeadLetterConfigArgs> deadLetterConfig);
public Builder tracingConfig(Output<FunctionTracingConfigArgs> tracingConfig);
public Builder kmsKeyArn(Output<String> kmsKeyArn);
public Builder architectures(Output<List<String>> architectures);
public Builder ephemeralStorage(Output<FunctionEphemeralStorageArgs> ephemeralStorage);
public Builder imageConfig(Output<FunctionImageConfigArgs> imageConfig);
public Builder loggingConfig(Output<FunctionLoggingConfigArgs> loggingConfig);
public Builder tags(Output<Map<String, String>> tags);
public FunctionArgs build();
}
}Package libraries and dependencies for Lambda functions.
@ResourceType(type="aws:lambda/layerVersion:LayerVersion")
public class LayerVersion extends com.pulumi.resources.CustomResource {
public LayerVersion(String name, LayerVersionArgs args);
public Output<String> arn();
public Output<String> layerArn();
public Output<Integer> version();
public Output<String> layerName();
public Output<Optional<List<String>>> compatibleRuntimes();
public Output<Optional<String>> description();
}
public class LayerVersionArgs extends com.pulumi.resources.ResourceArgs {
public static Builder builder() { return new Builder(); }
public static final class Builder {
public Builder layerName(Output<String> layerName);
public Builder code(Output<Archive> code);
public Builder s3Bucket(Output<String> s3Bucket);
public Builder s3Key(Output<String> s3Key);
public Builder compatibleRuntimes(Output<List<String>> compatibleRuntimes);
public Builder description(Output<String> description);
public Builder licenseInfo(Output<String> licenseInfo);
public LayerVersionArgs build();
}
}Grant services permission to invoke Lambda functions.
@ResourceType(type="aws:lambda/permission:Permission")
public class Permission extends com.pulumi.resources.CustomResource {
public Permission(String name, PermissionArgs args);
public Output<String> functionName();
public Output<String> action();
public Output<String> principal();
public Output<Optional<String>> sourceArn();
public Output<Optional<String>> sourceAccount();
}
public class PermissionArgs extends com.pulumi.resources.ResourceArgs {
public static Builder builder() { return new Builder(); }
public static final class Builder {
public Builder functionName(Output<String> functionName);
public Builder action(Output<String> action);
public Builder principal(Output<String> principal);
public Builder sourceArn(Output<String> sourceArn);
public Builder sourceAccount(Output<String> sourceAccount);
public Builder statementId(Output<String> statementId);
public Builder qualifier(Output<String> qualifier);
public PermissionArgs build();
}
}Connect event sources to Lambda functions.
@ResourceType(type="aws:lambda/eventSourceMapping:EventSourceMapping")
public class EventSourceMapping extends com.pulumi.resources.CustomResource {
public EventSourceMapping(String name, EventSourceMappingArgs args);
public Output<String> uuid();
public Output<String> functionName();
public Output<String> eventSourceArn();
public Output<Optional<Integer>> batchSize();
public Output<Optional<Boolean>> enabled();
public Output<Optional<String>> startingPosition();
}
public class EventSourceMappingArgs extends com.pulumi.resources.ResourceArgs {
public static Builder builder() { return new Builder(); }
public static final class Builder {
public Builder functionName(Output<String> functionName);
public Builder eventSourceArn(Output<String> eventSourceArn);
public Builder batchSize(Output<Integer> batchSize);
public Builder enabled(Output<Boolean> enabled);
public Builder startingPosition(Output<String> startingPosition);
public Builder maximumBatchingWindowInSeconds(Output<Integer> maximumBatchingWindowInSeconds);
public Builder parallelizationFactor(Output<Integer> parallelizationFactor);
public EventSourceMappingArgs build();
}
}public class LambdaFunctions {
// Get function information
public static Output<GetFunctionResult> getFunction(GetFunctionArgs args);
public static CompletableFuture<GetFunctionResult> getFunctionPlain(GetFunctionArgs args);
// Invoke function
public static Output<GetInvocationResult> getInvocation(GetInvocationArgs args);
public static CompletableFuture<GetInvocationResult> getInvocationPlain(GetInvocationArgs args);
}import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.aws.iam.*;
import com.pulumi.aws.lambda.*;
import com.pulumi.aws.lambda.inputs.*;
import com.pulumi.asset.FileArchive;
import java.util.Map;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// Create IAM role for Lambda
var lambdaRole = new Role("lambda-role", RoleArgs.builder()
.assumeRolePolicy("""
{
"Version": "2012-10-17",
"Statement": [{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Effect": "Allow"
}]
}
""")
.build());
// Attach basic execution policy
var policyAttachment = new RolePolicyAttachment("lambda-policy",
RolePolicyAttachmentArgs.builder()
.role(lambdaRole.name())
.policyArn("arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole")
.build());
// Create Lambda function
var function = new Function("my-function", FunctionArgs.builder()
.functionName("my-lambda-function")
.runtime("python3.11")
.handler("index.handler")
.role(lambdaRole.arn())
.code(new FileArchive("./lambda-code.zip"))
.timeout(30)
.memorySize(256)
.environment(FunctionEnvironmentArgs.builder()
.variables(Map.of(
"ENV", "production",
"DEBUG", "false"
))
.build())
.architectures("arm64")
.loggingConfig(FunctionLoggingConfigArgs.builder()
.logFormat("JSON")
.logGroup("/aws/lambda/my-function")
.build())
.tags(Map.of("Project", "MyApp"))
.build());
// Grant SNS permission to invoke Lambda
var lambdaPermission = new Permission("sns-permission", PermissionArgs.builder()
.functionName(function.functionName())
.action("lambda:InvokeFunction")
.principal("sns.amazonaws.com")
.sourceArn("arn:aws:sns:us-east-1:123456789012:my-topic")
.build());
// Export function ARN
ctx.export("functionArn", function.arn());
ctx.export("functionName", function.functionName());
}
}