跳到主要内容
知仓学习社ZHICANG

aws-sdk-java-v2-lambda

Provides AWS Lambda patterns using AWS SDK for Java 2.x. Use when invoking Lambda functions, creating/updating functions, managing function configur…

读凭据严重 1 · 高危 0giuseppe-trisciuoglio/developer-kit

它会碰到什么

扫了多少8 个文本文件,64 KB
它会碰到什么读凭据
命中总数1 处
命中统计严重 1 · 高 0 · 中 0 · 低 0
逐条看命中(1 条严重或高危)
  • 严重 SKILL.md:285cred-paths
    - [AWS Lambda Developer Guide](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

AWS SDK for Java 2.x - AWS Lambda

Overview

AWS Lambda is a compute service that runs code without managing servers. Use this skill to implement AWS Lambda operations using AWS SDK for Java 2.x in applications and services.

When to Use

  • Invoking Lambda functions from Java applications
  • Deploying and updating Lambda functions via SDK
  • Managing function configurations and layers
  • Integrating Lambda with Spring Boot applications

Quick Reference

| Operation | SDK Method | Use Case |

|-----------|------------|----------|

| Invoke | invoke() | Synchronous/async function invocation |

| List Functions | listFunctions() | Get all Lambda functions |

| Get Config | getFunction() | Retrieve function configuration |

| Create Function | createFunction() | Create new Lambda function |

| Update Code | updateFunctionCode() | Deploy new function code |

| Update Config | updateFunctionConfiguration() | Modify settings (timeout, memory, env vars) |

| Delete Function | deleteFunction() | Remove Lambda function |

Instructions

1. Add Dependencies

Include Lambda SDK dependency in pom.xml:

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>lambda</artifactId>
</dependency>

See [client-setup.md](references/client-setup.md) for complete setup.

2. Create Client

Instantiate LambdaClient with proper configuration:

LambdaClient lambdaClient = LambdaClient.builder()
    .region(Region.US_EAST_1)
    .build();

For async operations, use LambdaAsyncClient.

3. Invoke Lambda Function

Synchronous invocation:

InvokeRequest request = InvokeRequest.builder()
    .functionName("my-function")
    .payload(SdkBytes.fromUtf8String(payload))
    .build();

InvokeResponse response = lambdaClient.invoke(request);

return response.payload().asUtf8String();

See [invocation-patterns.md](references/invocation-patterns.md) for patterns.

4. Handle Responses

Parse response payloads and check for errors:

if (response.functionError() != null) {
    throw new LambdaInvocationException("Lambda error: " + response.functionError());
}

String result = response.payload().asUtf8String();

5. Manage Functions

Create, update, or delete Lambda functions:

// Create
CreateFunctionRequest createRequest = CreateFunctionRequest.builder()
    .functionName("my-function")
    .runtime(Runtime.JAVA17)
    .role(roleArn)
    .code(code)
    .build();

lambdaClient.createFunction(createRequest);

// Verify function is active before proceeding
GetFunctionRequest getRequest = GetFunctionRequest.builder()
    .functionName("my-function")
    .build();
GetFunctionResponse getResponse = lambdaClient.getFunction(getRequest);
if (!"Active".equals(getResponse.configuration().state())) {
    throw new IllegalStateException("Function not active: " + getResponse.configuration().stateReason());
}

// Update code
UpdateFunctionCodeRequest updateCodeRequest = UpdateFunctionCodeRequest.builder()
    .functionName("my-function")
    .zipFile(SdkBytes.fromByteArray(zipBytes))
    .build();

lambdaClient.updateFunctionCode(updateCodeRequest);

// Wait for deployment to complete
Waiter<GetFunctionConfigurationRequest> waiter = lambdaClient.waiter();
waiter.waitUntilFunctionUpdatedActive(GetFunctionConfigurationRequest.builder()
    .functionName("my-function")
    .build());

See [function-management.md](references/function-management.md) for complete patterns.

6. Configure Environment

Set environment variables and concurrency limits:

Environment env = Environment.builder()
    .variables(Map.of(
        "DB_URL", "jdbc:postgresql://db",
        "LOG_LEVEL", "INFO"
    ))
    .build();

UpdateFunctionConfigurationRequest configRequest = UpdateFunctionConfigurationRequest.builder()
    .functionName("my-function")
    .environment(env)
    .timeout(60)
    .memorySize(512)
    .build();

lambdaClient.updateFunctionConfiguration(configRequest);

7. Integrate with Spring Boot

Configure Lambda beans and services:

@Configuration
public class LambdaConfiguration {
    @Bean
    public LambdaClient lambdaClient() {
        return LambdaClient.builder()
            .region(Region.US_EAST_1)
            .build();
    }
}

@Service
public class LambdaInvokerService {
    public <T, R> R invoke(String functionName, T request, Class<R> responseType) {
        // Implementation
    }
}

See [spring-boot-integration.md](references/spring-boot-integration.md) for complete integration.

8. Test Locally

Use mocks or LocalStack for development testing.

See [testing.md](references/testing.md) for testing patterns.

Examples

Basic Invocation

public String invokeFunction(LambdaClient client, String functionName, String payload) {
    InvokeRequest request = InvokeRequest.builder()
        .functionName(functionName)
        .payload(SdkBytes.fromUtf8String(payload))
        .build();

    InvokeResponse response = client.invoke(request);

    if (response.functionError() != null) {
        throw new RuntimeException("Lambda error: " + response.functionError());
    }

    return response.payload().asUtf8String();
}

Async Invocation

public void invokeAsync(LambdaClient client, String functionName, Map<String, Object> event) {
    String jsonPayload = new ObjectMapper().writeValueAsString(event);

    InvokeRequest request = InvokeRequest.builder()
        .functionName(functionName)
        .invocationType(InvocationType.EVENT)
        .payload(SdkBytes.fromUtf8String(jsonPayload))
        .build();

    client.invoke(request);
}

Spring Boot Service

@Service
public class LambdaService {
    private final LambdaClient lambdaClient;

    public UserResponse processUser(UserRequest request) {
        String payload = objectMapper.writeValueAsString(request);

        InvokeResponse response = lambdaClient.invoke(
            InvokeRequest.builder()
                .functionName("user-processor")
                .payload(SdkBytes.fromUtf8String(payload))
                .build()
        );

        return objectMapper.readValue(
            response.payload().asUtf8String(),
            UserResponse.class
        );
    }
}

See [examples.md](references/examples.md) for more examples.

Best Practices

  • Reuse clients: Create LambdaClient/LambdaAsyncClient once; they are thread-safe
  • Use async client: For fire-and-forget invocations, use LambdaAsyncClient with CompletableFuture
  • Verify deployments: Always wait for function state to be Active after create/update operations
  • Limit payload size: Keep request/response payloads under 256KB for async, 6MB for sync invocations
  • Configure timeouts: Set client read timeout slightly higher than Lambda function timeout
  • Use latest runtime: Specify Runtime.JAVA17 or newer for improved cold start performance

Constraints and Warnings

  • Payload Limit: 6MB (sync), 256KB (async invocation)
  • Timeout: Max 900 seconds (15 minutes) per invocation
  • Cold Starts: JVM-based functions have longer cold starts; use GraalVM Native Image for improvement
  • Deployment Size: Function code + layers must not exceed 50MB (zipped) or 250MB (unzipped)
  • Concurrency: Default 1000 per region; use reserved concurrency to guarantee capacity
  • Cost: Monitor with CloudWatch metrics; set billing alerts to prevent runaway costs

References

  • [client-setup.md](references/client-setup.md) — Client configuration and setup
  • [invocation-patterns.md](references/invocation-patterns.md) — Synchronous and async invocation patterns
  • [function-management.md](references/function-management.md) — Create, update, delete functions
  • [spring-boot-integration.md](references/spring-boot-integration.md) — Spring Boot configuration and services
  • [testing.md](references/testing.md) — Unit and integration testing patterns
  • [examples.md](references/examples.md) — Complete code examples and integration patterns
  • [official-documentation.md](references/official-documentation.md) — AWS Lambda concepts and API reference

Related Skills

  • aws-sdk-java-v2-core — Core AWS SDK patterns and client configuration
  • spring-boot-dependency-injection — Spring dependency injection best practices
  • unit-test-service-layer — Service testing patterns with Mockito
  • spring-boot-actuator — Production monitoring and health checks

External Resources

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。