Skip to content

Commit 1e2f7fe

Browse files
authored
Make the APIGW+Lambda sample app consistent with main branch (#1068)
The APIGW+Lambda Sample App in the `release/v1.33.x` branch has fallen out-of-sync with the one in the `main` branch. This causes confusion since we currently develop and release the Application Signals Lambda Layer from the `release/v1.33.x` branch. By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
1 parent d96644e commit 1e2f7fe

File tree

5 files changed

+43
-32
lines changed

5 files changed

+43
-32
lines changed

sample-apps/apigateway-lambda/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ java {
1515

1616
dependencies {
1717
implementation("com.amazonaws:aws-lambda-java-core:1.2.2")
18-
implementation("com.squareup.okhttp3:okhttp:4.11.0")
1918
implementation("software.amazon.awssdk:s3:2.29.23")
2019
implementation("org.json:json:20240303")
2120
implementation("org.slf4j:jcl-over-slf4j:2.0.16")
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
pluginManagement {
2+
plugins {
3+
id("com.diffplug.spotless") version "6.13.0"
4+
id("com.github.ben-manes.versions") version "0.50.0"
5+
id("com.github.johnrengelman.shadow") version "8.1.1"
6+
}
7+
}
8+
9+
dependencyResolutionManagement {
10+
repositories {
11+
mavenCentral()
12+
mavenLocal()
13+
}
14+
}
15+
16+
rootProject.name = "sample-app-apigw-lambda"

sample-apps/apigateway-lambda/src/main/java/com/amazon/sampleapp/LambdaHandler.java

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,20 @@
33
import com.amazonaws.services.lambda.runtime.Context;
44
import com.amazonaws.services.lambda.runtime.RequestHandler;
55
import java.io.IOException;
6+
import java.net.URI;
7+
import java.net.http.HttpClient;
8+
import java.net.http.HttpRequest;
9+
import java.net.http.HttpResponse;
10+
import java.util.HashMap;
611
import java.util.Map;
7-
import okhttp3.OkHttpClient;
8-
import okhttp3.Request;
9-
import okhttp3.Response;
1012
import org.json.JSONObject;
1113
import software.amazon.awssdk.services.s3.S3Client;
12-
import software.amazon.awssdk.services.s3.model.HeadBucketRequest;
14+
import software.amazon.awssdk.services.s3.model.ListBucketsResponse;
1315
import software.amazon.awssdk.services.s3.model.S3Exception;
1416

1517
public class LambdaHandler implements RequestHandler<Object, Map<String, Object>> {
1618

17-
private final OkHttpClient client = new OkHttpClient();
19+
HttpClient client = HttpClient.newHttpClient();
1820
private final S3Client s3Client = S3Client.create();
1921

2022
@Override
@@ -36,35 +38,30 @@ public Map<String, Object> handleRequest(Object input, Context context) {
3638
responseBody.put("traceId", traceId);
3739

3840
// Make a remote call using OkHttp
39-
System.out.println("Making a remote call using OkHttp");
40-
String url = "https://www.amazon.com";
41-
Request request = new Request.Builder().url(url).build();
42-
43-
try (Response response = client.newCall(request).execute()) {
41+
System.out.println("Making a remote call using Java HttpClient");
42+
String url = "https://aws.amazon.com/";
43+
HttpRequest request = HttpRequest.newBuilder()
44+
.uri(URI.create(url))
45+
.GET()
46+
.build();
47+
try {
48+
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
49+
System.out.println("Response status code: " + response.statusCode());
4450
responseBody.put("httpRequest", "Request successful");
45-
} catch (IOException e) {
46-
context.getLogger().log("Error: " + e.getMessage());
51+
} catch (Exception e) {
52+
System.err.println("Error: " + e.getMessage());
4753
responseBody.put("httpRequest", "Request failed");
4854
}
4955
System.out.println("Remote call done");
5056

51-
// Make a S3 HeadBucket call to check whether the bucket exists
52-
System.out.println("Making a S3 HeadBucket call");
53-
String bucketName = "SomeDummyBucket";
57+
// Make a S3 ListBuckets call to list the S3 buckets in the account
58+
System.out.println("Making a S3 ListBuckets call");
5459
try {
55-
HeadBucketRequest headBucketRequest = HeadBucketRequest.builder().bucket(bucketName).build();
56-
s3Client.headBucket(headBucketRequest);
57-
responseBody.put("s3Request", "Bucket exists and is accessible: " + bucketName);
60+
ListBucketsResponse listBucketsResponse = s3Client.listBuckets();
61+
responseBody.put("s3Request", "ListBuckets successful");
5862
} catch (S3Exception e) {
59-
if (e.statusCode() == 403) {
60-
responseBody.put("s3Request", "Access denied to bucket: " + bucketName);
61-
} else if (e.statusCode() == 404) {
62-
responseBody.put("s3Request", "Bucket does not exist: " + bucketName);
63-
} else {
64-
System.err.println("Error checking bucket: " + e.awsErrorDetails().errorMessage());
65-
responseBody.put(
66-
"s3Request", "Error checking bucket: " + e.awsErrorDetails().errorMessage());
67-
}
63+
System.err.println("Error listing buckets: " + e.awsErrorDetails().errorMessage());
64+
responseBody.put("s3Request", "Error listing buckets: " + e.awsErrorDetails().errorMessage());
6865
}
6966
System.out.println("S3 HeadBucket call done");
7067

sample-apps/apigateway-lambda/terraform/main.tf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ resource "aws_iam_role" "lambda_role" {
1616
}
1717

1818
resource "aws_iam_policy" "s3_access" {
19-
name = "S3ListBucketPolicy"
20-
description = "Allow Lambda to check a given S3 bucket exists"
19+
name = "S3ListBucketsPolicy"
20+
description = "Allow Lambda to list buckets"
2121
policy = jsonencode({
2222
Version = "2012-10-17",
2323
Statement = [{
2424
Effect = "Allow",
25-
Action = ["s3:ListBucket"],
25+
Action = ["s3:ListAllMyBuckets"],
2626
Resource = "*"
2727
}]
2828
})

settings.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ 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")
5554

5655
// Used for contract tests
5756
include("appsignals-tests:images:mock-collector")

0 commit comments

Comments
 (0)