Skip to content

Commit 4c77c8d

Browse files
committed
add s3 head bucket call
1 parent 169f52e commit 4c77c8d

File tree

3 files changed

+32
-6
lines changed

3 files changed

+32
-6
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ java {
1616
dependencies {
1717
implementation("com.amazonaws:aws-lambda-java-core:1.2.2")
1818
implementation("com.squareup.okhttp3:okhttp:4.11.0")
19+
implementation("software.amazon.awssdk:s3:2.29.23")
1920
implementation("org.json:json:20240303")
21+
implementation("org.slf4j:jcl-over-slf4j:2.0.16")
2022
testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")
2123
}
2224

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

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,14 @@
88
import okhttp3.Request;
99
import okhttp3.Response;
1010
import org.json.JSONObject;
11+
import software.amazon.awssdk.services.s3.S3Client;
12+
import software.amazon.awssdk.services.s3.model.HeadBucketRequest;
13+
import software.amazon.awssdk.services.s3.model.S3Exception;
1114

1215
public class LambdaHandler implements RequestHandler<Object, Map<String, Object>> {
1316

1417
private final OkHttpClient client = new OkHttpClient();
18+
private final S3Client s3Client = S3Client.create();
1519

1620
@Override
1721
public Map<String, Object> handleRequest(Object input, Context context) {
@@ -28,14 +32,14 @@ public Map<String, Object> handleRequest(Object input, Context context) {
2832

2933
System.out.println("Trace ID: " + traceId);
3034

35+
JSONObject responseBody = new JSONObject();
36+
responseBody.put("traceId", traceId);
37+
3138
// Make a remote call using OkHttp
3239
System.out.println("Making a remote call using OkHttp");
3340
String url = "https://www.amazon.com";
3441
Request request = new Request.Builder().url(url).build();
3542

36-
JSONObject responseBody = new JSONObject();
37-
responseBody.put("traceId", traceId);
38-
3943
try (Response response = client.newCall(request).execute()) {
4044
responseBody.put("httpRequest", "Request successful");
4145
} catch (IOException e) {
@@ -44,6 +48,26 @@ public Map<String, Object> handleRequest(Object input, Context context) {
4448
}
4549
System.out.println("Remote call done");
4650

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";
54+
try {
55+
HeadBucketRequest headBucketRequest = HeadBucketRequest.builder().bucket(bucketName).build();
56+
s3Client.headBucket(headBucketRequest);
57+
responseBody.put("s3Request", "Bucket exists and is accessible: " + bucketName);
58+
} 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+
}
68+
}
69+
System.out.println("S3 HeadBucket call done");
70+
4771
// return a response in the ApiGateway proxy format
4872
return Map.of(
4973
"isBase64Encoded",

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

0 commit comments

Comments
 (0)