Ctrl + k

or run

tessl search
Log in

Version

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/com.pulumi/aws@7.16.x

docs

common-patterns.mdgetting-started.mdindex.mdprovider.md
tile.json

tessl/maven-com-pulumi--aws

tessl install tessl/maven-com-pulumi--aws@7.16.0

Pulumi 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.

lambda.mddocs/services/compute/

Lambda (Serverless Functions)

AWS Lambda runs code without provisioning servers.

Core Imports

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;

Function Resource

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();
    }
}

Layer Version Resource

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();
    }
}

Permission Resource

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();
    }
}

Event Source Mapping Resource

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();
    }
}

Lambda Data Sources

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);
}

Usage Example

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());
    }
}