88import okhttp3 .Request ;
99import okhttp3 .Response ;
1010import 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
1215public 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" ,
0 commit comments