aws-sdk-java-v2-lambda — Claude Code skill for AWS Lambda
A skill that feeds your agent AWS Lambda patterns built on AWS SDK for Java 2.x. Useful when your Java service calls or deploys Lambda functions.
npx skills add giuseppe-trisciuoglio/developer-kit --skill aws-sdk-java-v2-lambda -a claude-codeWhat aws-sdk-java-v2-lambda does
The skill hands the agent ready patterns for Lambda work from Java: synchronous and async invocation, creating and deleting functions, updating code and configuration, environment variables, memory and timeout limits. It ships a quick-reference table mapping each operation to its SDK method, plus code samples around LambdaClient and LambdaAsyncClient and response handling with a functionError() check.
There is a Spring Boot section too: declaring LambdaClient as a bean in a @Configuration class and wrapping invocations in a service. Separate reference files cover client setup, function management, layers, local testing with mocks or LocalStack, and more examples.
One spot that bites people: after createFunction() or updateFunctionCode() the function is not ready yet. The skill tells you to wait for the Active state through a waiter, otherwise the next call fails. You need working AWS credentials and the software.amazon.awssdk:lambda dependency in pom.xml.
What it helps with
- call a Lambda function from a Java service and parse the response
- deploy new function code through the SDK instead of the console
- change a function's timeout, memory and environment variables
- wire Lambda into Spring Boot as a bean and service
- test invocations locally without hitting real AWS
Example prompts for the agent
- show me how to invoke the user-processor Lambda from Java and check functionError
- create a LambdaClient bean in Spring Boot and wrap the call in a service
- update the code of my-function from a zip and wait until it is Active
How to install aws-sdk-java-v2-lambda
1Skills CLI (Vercel)
npx skills add giuseppe-trisciuoglio/developer-kit --skill aws-sdk-java-v2-lambda -a claude-code2Manually: put the files in place
~/.claude/skills/aws-sdk-java-v2-lambda/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/aws-sdk-java-v2-lambda/
1Skills CLI (Vercel)
npx skills add giuseppe-trisciuoglio/developer-kit --skill aws-sdk-java-v2-lambda -a codex2Manually: put the files in place
.agents/skills/aws-sdk-java-v2-lambda/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add giuseppe-trisciuoglio/developer-kit --skill aws-sdk-java-v2-lambda -a cursor2Manually: put the files in place
.cursor/skills/aws-sdk-java-v2-lambda/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install giuseppe-trisciuoglio/developer-kit aws-sdk-java-v2-lambda2Manually: put the files in place
.github/skills/aws-sdk-java-v2-lambda/SKILL.md1Skills CLI (Vercel)
npx skills add giuseppe-trisciuoglio/developer-kit --skill aws-sdk-java-v2-lambda -a gemini-cli2Platform CLI
gemini skills install https://github.com/giuseppe-trisciuoglio/developer-kit --path plugins/developer-kit-java/skills/aws-sdk-java-v2-lambdaManually: put the files in place
.devin/skills/aws-sdk-java-v2-lambda/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add giuseppe-trisciuoglio/developer-kit --skill aws-sdk-java-v2-lambda -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about aws-sdk-java-v2-lambda
How do I install aws-sdk-java-v2-lambda in Claude?
Run npx skills add giuseppe-trisciuoglio/developer-kit --skill aws-sdk-java-v2-lambda -a claude-code. The skill lands in ~/.claude/skills/aws-sdk-java-v2-lambda/SKILL.md.
What does aws-sdk-java-v2-lambda do?
It gives the agent AWS SDK for Java 2.x patterns for Lambda: invoking functions, creating and updating them, configuration, layers and Spring Boot integration.
What do I need for the skill to work?
The software.amazon.awssdk:lambda dependency in pom.xml and working AWS access. After a code update, wait for the function to reach the Active state.
Source text
SKILL.md · MIT
---
name: aws-sdk-java-v2-lambda
description: Provides AWS Lambda patterns using AWS SDK for Java 2.x. Use when invoking Lambda functions, creating/updating functions, managing function configurations, working with Lambda layers, or integrating Lambda with Spring Boot applications.
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
---
# 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`:
```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:
```java
LambdaClient lambdaClient = LambdaClient.builder()
.region(Region.US_EAST_1)
.build();
```
For async operations, use `LambdaAsyncClient`.
### 3. Invoke Lambda Function
Synchronous invocation:
```java
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:
```java
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:
```java
// 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:
```java
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:
```java
@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
```java
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
```java
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
```java
@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
- [Lambda Examples on GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/lambda)
- [Lambda API Reference](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/lambda/package-summary.html)
- [AWS Lambda Developer Guide](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)
© giuseppe-trisciuoglio · MIT · giuseppe-trisciuoglio/developer-kit