Skip to content

Commit 040d63e

Browse files
committed
apigateway-lambda sample app
1 parent aa84018 commit 040d63e

File tree

3 files changed

+88
-0
lines changed

3 files changed

+88
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
plugins {
2+
java
3+
application
4+
}
5+
6+
application {
7+
mainClass.set("com.amazon.sampleapp.LambdaHandler")
8+
}
9+
10+
java {
11+
toolchain {
12+
languageVersion.set(JavaLanguageVersion.of(17))
13+
}
14+
}
15+
16+
dependencies {
17+
implementation("com.amazonaws:aws-lambda-java-core:1.2.2")
18+
implementation("com.squareup.okhttp3:okhttp:4.11.0")
19+
implementation("software.amazon.awssdk:s3:2.20.0")
20+
testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")
21+
}
22+
23+
tasks.jar {
24+
manifest {
25+
attributes["Main-Class"] = "com.amazon.sampleapp.LambdaHandler"
26+
}
27+
}
28+
29+
tasks.register<Zip>("createLambdaZip") {
30+
dependsOn("build")
31+
from(tasks.compileJava.get())
32+
from(tasks.processResources.get())
33+
into("lib") {
34+
from(configurations.runtimeClasspath.get())
35+
}
36+
archiveFileName.set("lambda-function.zip")
37+
destinationDirectory.set(layout.buildDirectory.dir("distributions"))
38+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.amazon.sampleapp;
2+
3+
import com.amazonaws.services.lambda.runtime.Context;
4+
import com.amazonaws.services.lambda.runtime.RequestHandler;
5+
import okhttp3.OkHttpClient;
6+
import okhttp3.Request;
7+
import okhttp3.Response;
8+
import software.amazon.awssdk.services.s3.S3Client;
9+
import software.amazon.awssdk.services.s3.model.ListBucketsResponse;
10+
11+
public class LambdaHandler implements RequestHandler<Object, String> {
12+
private final OkHttpClient httpClient;
13+
private final S3Client s3Client;
14+
15+
public LambdaHandler() {
16+
this.httpClient = new OkHttpClient();
17+
this.s3Client = S3Client.create();
18+
}
19+
20+
@Override
21+
public String handleRequest(Object o, Context context) {
22+
makeRemoteCall();
23+
listS3Buckets();
24+
25+
// Get the _X_AMZN_TRACE_ID environment variable
26+
String traceId = System.getenv("_X_AMZN_TRACE_ID");
27+
28+
// Construct the response string
29+
return "Trace ID: " + traceId;
30+
}
31+
32+
private void makeRemoteCall() {
33+
try {
34+
Request request = new Request.Builder().url("https://aws.amazon.com/").build();
35+
Response response = httpClient.newCall(request).execute();
36+
response.close();
37+
} catch (Exception e) {
38+
e.printStackTrace();
39+
}
40+
}
41+
42+
private void listS3Buckets() {
43+
ListBucketsResponse response = s3Client.listBuckets();
44+
int bucketCount = response.buckets().size();
45+
46+
// Print bucket count
47+
System.out.println("Number of S3 buckets: " + bucketCount);
48+
}
49+
}

settings.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ include(":smoke-tests:spring-boot")
5151
include(":sample-apps:springboot")
5252
include(":sample-apps:spark")
5353
include(":sample-apps:spark-awssdkv1")
54+
include(":sample-apps:apigateway-lambda")
5455

5556
// Used for contract tests
5657
include("appsignals-tests:images:mock-collector")

0 commit comments

Comments
 (0)