diff --git a/sample-apps/.gitignore b/sample-apps/.gitignore
index 6599623c..61f810ce 100644
--- a/sample-apps/.gitignore
+++ b/sample-apps/.gitignore
@@ -11,8 +11,8 @@ build
*.zip
bin
obj
-main
Gemfile.lock
lib
__pycache__
*.pyc
+.DS_Store
diff --git a/sample-apps/blank-java/1-create-bucket.sh b/sample-apps/blank-java/1-create-bucket.sh
deleted file mode 100755
index 64a5f749..00000000
--- a/sample-apps/blank-java/1-create-bucket.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-BUCKET_ID=$(dd if=/dev/random bs=8 count=1 2>/dev/null | od -An -tx1 | tr -d ' \t\n')
-BUCKET_NAME=lambda-artifacts-$BUCKET_ID
-echo $BUCKET_NAME > bucket-name.txt
-aws s3 mb s3://$BUCKET_NAME
diff --git a/sample-apps/blank-java/2-build-layer.sh b/sample-apps/blank-java/2-build-layer.sh
deleted file mode 100755
index 9a1dd8cd..00000000
--- a/sample-apps/blank-java/2-build-layer.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-set -eo pipefail
-gradle -q packageLibs
-mv build/distributions/blank-java.zip build/blank-java-lib.zip
\ No newline at end of file
diff --git a/sample-apps/blank-java/3-deploy.sh b/sample-apps/blank-java/3-deploy.sh
deleted file mode 100755
index 6949f21c..00000000
--- a/sample-apps/blank-java/3-deploy.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-set -eo pipefail
-ARTIFACT_BUCKET=$(cat bucket-name.txt)
-TEMPLATE=template.yml
-if [ $1 ]
-then
- if [ $1 = mvn ]
- then
- TEMPLATE=template-mvn.yml
- mvn package
- fi
-else
- gradle build -i
-fi
-aws cloudformation package --template-file $TEMPLATE --s3-bucket $ARTIFACT_BUCKET --output-template-file out.yml
-aws cloudformation deploy --template-file out.yml --stack-name blank-java --capabilities CAPABILITY_NAMED_IAM
diff --git a/sample-apps/blank-java/4-invoke.sh b/sample-apps/blank-java/4-invoke.sh
deleted file mode 100755
index 2186f191..00000000
--- a/sample-apps/blank-java/4-invoke.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-set -eo pipefail
-FUNCTION=$(aws cloudformation describe-stack-resource --stack-name blank-java --logical-resource-id function --query 'StackResourceDetail.PhysicalResourceId' --output text)
-
-while true; do
- aws lambda invoke --function-name $FUNCTION --payload file://event.json out.json
- cat out.json
- echo ""
- sleep 2
-done
diff --git a/sample-apps/blank-java/5-cleanup.sh b/sample-apps/blank-java/5-cleanup.sh
deleted file mode 100755
index e79a2438..00000000
--- a/sample-apps/blank-java/5-cleanup.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-set -eo pipefail
-STACK=blank-java
-if [[ $# -eq 1 ]] ; then
- STACK=$1
- echo "Deleting stack $STACK"
-fi
-FUNCTION=$(aws cloudformation describe-stack-resource --stack-name $STACK --logical-resource-id function --query 'StackResourceDetail.PhysicalResourceId' --output text)
-aws cloudformation delete-stack --stack-name $STACK
-echo "Deleted $STACK stack."
-
-if [ -f bucket-name.txt ]; then
- ARTIFACT_BUCKET=$(cat bucket-name.txt)
- if [[ ! $ARTIFACT_BUCKET =~ lambda-artifacts-[a-z0-9]{16} ]] ; then
- echo "Bucket was not created by this application. Skipping."
- else
- while true; do
- read -p "Delete deployment artifacts and bucket ($ARTIFACT_BUCKET)? (y/n)" response
- case $response in
- [Yy]* ) aws s3 rb --force s3://$ARTIFACT_BUCKET; rm bucket-name.txt; break;;
- [Nn]* ) break;;
- * ) echo "Response must start with y or n.";;
- esac
- done
- fi
-fi
-
-while true; do
- read -p "Delete function log group (/aws/lambda/$FUNCTION)? (y/n)" response
- case $response in
- [Yy]* ) aws logs delete-log-group --log-group-name /aws/lambda/$FUNCTION; break;;
- [Nn]* ) break;;
- * ) echo "Response must start with y or n.";;
- esac
-done
-
-rm -f out.yml out.json
-rm -rf build .gradle target
diff --git a/sample-apps/blank-java/README.md b/sample-apps/blank-java/README.md
deleted file mode 100644
index c5d8130d..00000000
--- a/sample-apps/blank-java/README.md
+++ /dev/null
@@ -1,96 +0,0 @@
-# Blank function (Java)
-
-
-
-The project source includes function code and supporting resources:
-
-- `src/main` - A Java function.
-- `src/test` - A unit test and helper classes.
-- `template.yml` - An AWS CloudFormation template that creates an application.
-- `build.gradle` - A Gradle build file.
-- `pom.xml` - A Maven build file.
-- `1-create-bucket.sh`, `2-build-layer.sh`, etc. - Shell scripts that use the AWS CLI to deploy and manage the application.
-
-Use the following instructions to deploy the sample application.
-
-# Requirements
-- [Java 8 runtime environment (SE JRE)](https://www.oracle.com/java/technologies/javase-downloads.html)
-- [Gradle 5](https://gradle.org/releases/) or [Maven 3](https://maven.apache.org/docs/history.html)
-- The Bash shell. For Linux and macOS, this is included by default. In Windows 10, you can install the [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to get a Windows-integrated version of Ubuntu and Bash.
-- [The AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) v1.17 or newer.
-
-If you use the AWS CLI v2, add the following to your [configuration file](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) (`~/.aws/config`):
-
-```
-cli_binary_format=raw-in-base64-out
-```
-
-This setting enables the AWS CLI v2 to load JSON events from a file, matching the v1 behavior.
-
-# Setup
-Download or clone this repository.
-
- $ git clone https://github.com/awsdocs/aws-lambda-developer-guide.git
- $ cd aws-lambda-developer-guide/sample-apps/blank-java
-
-To create a new bucket for deployment artifacts, run `1-create-bucket.sh`.
-
- blank-java$ ./1-create-bucket.sh
- make_bucket: lambda-artifacts-a5e491dbb5b22e0d
-
-To build a Lambda layer that contains the function's runtime dependencies, run `2-build-layer.sh`. Packaging dependencies in a layer reduces the size of the deployment package that you upload when you modify your code.
-
- blank-java$ ./2-build-layer.sh
-
-# Deploy
-
-To deploy the application, run `3-deploy.sh`.
-
- blank-java$ ./3-deploy.sh
- BUILD SUCCESSFUL in 1s
- Successfully packaged artifacts and wrote output template to file out.yml.
- Waiting for changeset to be created..
- Successfully created/updated stack - blank-java
-
-This script uses AWS CloudFormation to deploy the Lambda functions and an IAM role. If the AWS CloudFormation stack that contains the resources already exists, the script updates it with any changes to the template or function code.
-
-You can also build the application with Maven. To use maven, add `mvn` to the command.
-
- java-basic$ ./3-deploy.sh mvn
- [INFO] Scanning for projects...
- [INFO] -----------------------< com.example:blank-java >-----------------------
- [INFO] Building blank-java-function 1.0-SNAPSHOT
- [INFO] --------------------------------[ jar ]---------------------------------
- ...
-
-# Test
-To invoke the function, run `4-invoke.sh`.
-
- blank-java$ ./4-invoke.sh
- {
- "StatusCode": 200,
- "ExecutedVersion": "$LATEST"
- }
-
-Let the script invoke the function a few times and then press `CRTL+C` to exit.
-
-The application uses AWS X-Ray to trace requests. Open the [X-Ray console](https://console.aws.amazon.com/xray/home#/service-map) to view the service map.
-
-
-
-Choose a node in the main function graph. Then choose **View traces** to see a list of traces. Choose any trace to view a timeline that breaks down the work done by the function.
-
-
-
-Finally, view the application in the Lambda console.
-
-*To view the application*
-1. Open the [applications page](https://console.aws.amazon.com/lambda/home#/applications) in the Lambda console.
-2. Choose **blank-java**.
-
- 
-
-# Cleanup
-To delete the application, run `5-cleanup.sh`.
-
- blank$ ./5-cleanup.sh
diff --git a/sample-apps/blank-java/build.gradle b/sample-apps/blank-java/build.gradle
deleted file mode 100644
index 0c2e47ef..00000000
--- a/sample-apps/blank-java/build.gradle
+++ /dev/null
@@ -1,60 +0,0 @@
-plugins {
- id 'java'
-}
-
-repositories {
- mavenCentral()
-}
-
-dependencies {
- implementation platform('software.amazon.awssdk:bom:2.10.73')
- implementation platform('com.amazonaws:aws-xray-recorder-sdk-bom:2.4.0')
- implementation 'software.amazon.awssdk:lambda'
- implementation 'com.amazonaws:aws-xray-recorder-sdk-core'
- implementation 'com.amazonaws:aws-xray-recorder-sdk-aws-sdk-core'
- implementation 'com.amazonaws:aws-xray-recorder-sdk-aws-sdk-v2'
- implementation 'com.amazonaws:aws-xray-recorder-sdk-aws-sdk-v2-instrumentor'
- implementation 'com.amazonaws:aws-lambda-java-core:1.2.1'
- implementation 'com.amazonaws:aws-lambda-java-events:2.2.9'
- implementation 'com.google.code.gson:gson:2.8.6'
- implementation 'org.apache.logging.log4j:log4j-api:[2.17.1,)'
- implementation 'org.apache.logging.log4j:log4j-core:[2.17.1,)'
- runtimeOnly 'org.apache.logging.log4j:log4j-slf4j18-impl:[2.17.1,)'
- runtimeOnly 'com.amazonaws:aws-lambda-java-log4j2:1.5.0'
- testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
- testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.0'
-}
-
-test {
- useJUnitPlatform()
-}
-
-task packageFat(type: Zip) {
- from compileJava
- from processResources
- into('lib') {
- from configurations.runtimeClasspath
- }
- dirMode = 0755
- fileMode = 0755
-}
-
-task packageLibs(type: Zip) {
- into('java/lib') {
- from configurations.runtimeClasspath
- }
- dirMode = 0755
- fileMode = 0755
-}
-
-task packageSkinny(type: Zip) {
- from compileJava
- from processResources
-}
-
-java {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
-}
-
-build.dependsOn packageSkinny
diff --git a/sample-apps/blank-java/event.json b/sample-apps/blank-java/event.json
deleted file mode 100644
index 568467d1..00000000
--- a/sample-apps/blank-java/event.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "Records": [
- {
- "messageId": "19dd0b57-b21e-4ac1-bd88-01bbb068cb78",
- "receiptHandle": "MessageReceiptHandle",
- "body": "Hello from SQS!",
- "attributes": {
- "ApproximateReceiveCount": "1",
- "SentTimestamp": "1523232000000",
- "SenderId": "123456789012",
- "ApproximateFirstReceiveTimestamp": "1523232000001"
- },
- "messageAttributes": {},
- "md5OfBody": "7b270e59b47ff90a553787216d55d91d",
- "eventSource": "aws:sqs",
- "eventSourceARN": "arn:aws:sqs:us-west-2:123456789012:MyQueue",
- "awsRegion": "us-west-2"
- }
- ]
-}
diff --git a/sample-apps/blank-java/images/blank-java-application.png b/sample-apps/blank-java/images/blank-java-application.png
deleted file mode 100644
index e52a4c4c..00000000
Binary files a/sample-apps/blank-java/images/blank-java-application.png and /dev/null differ
diff --git a/sample-apps/blank-java/images/blank-java-servicemap.png b/sample-apps/blank-java/images/blank-java-servicemap.png
deleted file mode 100644
index 02217371..00000000
Binary files a/sample-apps/blank-java/images/blank-java-servicemap.png and /dev/null differ
diff --git a/sample-apps/blank-java/images/blank-java-trace.png b/sample-apps/blank-java/images/blank-java-trace.png
deleted file mode 100644
index 205efe7e..00000000
Binary files a/sample-apps/blank-java/images/blank-java-trace.png and /dev/null differ
diff --git a/sample-apps/blank-java/images/sample-blank-java.png b/sample-apps/blank-java/images/sample-blank-java.png
deleted file mode 100644
index 989a8093..00000000
Binary files a/sample-apps/blank-java/images/sample-blank-java.png and /dev/null differ
diff --git a/sample-apps/blank-java/pom.xml b/sample-apps/blank-java/pom.xml
deleted file mode 100644
index 85cc2f58..00000000
--- a/sample-apps/blank-java/pom.xml
+++ /dev/null
@@ -1,136 +0,0 @@
-
- 4.0.0
- com.example
- blank-java
- jar
- 1.0-SNAPSHOT
- blank-java-function
-
- UTF-8
- 1.8
- 1.8
-
-
-
- com.amazonaws
- aws-lambda-java-core
- 1.2.1
-
-
- com.amazonaws
- aws-lambda-java-events
- 2.2.9
-
-
- com.amazonaws
- aws-lambda-java-log4j2
- 1.5.0
-
-
- com.google.code.gson
- gson
- 2.8.6
-
-
- org.apache.logging.log4j
- log4j-api
- [2.17.1,)
-
-
- org.apache.logging.log4j
- log4j-core
- [2.17.1,)
-
-
- org.apache.logging.log4j
- log4j-slf4j18-impl
- [2.17.1,)
-
-
- software.amazon.awssdk
- lambda
- 2.10.72
-
-
- com.amazonaws
- aws-xray-recorder-sdk-core
- 2.4.0
-
-
- com.amazonaws
- aws-xray-recorder-sdk-aws-sdk-core
- 2.4.0
-
-
- com.amazonaws
- aws-xray-recorder-sdk-aws-sdk-v2
- 2.4.0
-
-
- com.amazonaws
- aws-xray-recorder-sdk-aws-sdk-v2-instrumentor
- 2.4.0
-
-
- org.junit.jupiter
- junit-jupiter-api
- 5.6.0
- test
-
-
- org.junit.jupiter
- junit-jupiter-engine
- 5.6.0
- test
-
-
-
-
-
-
-
- maven-surefire-plugin
- 2.22.2
-
-
- org.apache.maven.plugins
- maven-shade-plugin
- 3.2.2
-
- false
-
-
-
- package
-
- shade
-
-
-
-
-
-
-
-
-
-
-
- com.github.edwgiz
- maven-shade-plugin.log4j2-cachefile-transformer
- [2.17.1,)
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.8.1
-
- 1.8
- 1.8
-
-
-
-
-
\ No newline at end of file
diff --git a/sample-apps/blank-java/src/main/java/example/Handler.java b/sample-apps/blank-java/src/main/java/example/Handler.java
deleted file mode 100644
index b0962713..00000000
--- a/sample-apps/blank-java/src/main/java/example/Handler.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package example;
-
-import com.amazonaws.services.lambda.runtime.Context;
-import com.amazonaws.services.lambda.runtime.LambdaLogger;
-import com.amazonaws.services.lambda.runtime.RequestHandler;
-import com.amazonaws.services.lambda.runtime.events.SQSEvent;
-import com.amazonaws.services.lambda.runtime.events.SQSEvent.SQSMessage;
-
-import software.amazon.awssdk.services.lambda.model.GetAccountSettingsRequest;
-import software.amazon.awssdk.services.lambda.model.GetAccountSettingsResponse;
-import software.amazon.awssdk.services.lambda.model.ServiceException;
-import software.amazon.awssdk.services.lambda.LambdaAsyncClient;
-import software.amazon.awssdk.services.lambda.model.AccountUsage;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.lang.StringBuilder;
-import java.util.Map;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-
-// Handler value: example.Handler
-public class Handler implements RequestHandler{
- private static final Logger logger = LoggerFactory.getLogger(Handler.class);
- private static final Gson gson = new GsonBuilder().setPrettyPrinting().create();
- private static final LambdaAsyncClient lambdaClient = LambdaAsyncClient.create();
- public Handler(){
- CompletableFuture accountSettings = lambdaClient.getAccountSettings(GetAccountSettingsRequest.builder().build());
- try {
- GetAccountSettingsResponse settings = accountSettings.get();
- } catch(Exception e) {
- e.getStackTrace();
- }
- }
- @Override
- public String handleRequest(SQSEvent event, Context context)
- {
- String response = new String();
- // call Lambda API
- logger.info("Getting account settings");
- CompletableFuture accountSettings =
- lambdaClient.getAccountSettings(GetAccountSettingsRequest.builder().build());
- // log execution details
- logger.info("ENVIRONMENT VARIABLES: {}", gson.toJson(System.getenv()));
- logger.info("CONTEXT: {}", gson.toJson(context));
- logger.info("EVENT: {}", gson.toJson(event));
- // process event
- for(SQSMessage msg : event.getRecords()){
- logger.info(msg.getBody());
- }
- // process Lambda API response
- try {
- GetAccountSettingsResponse settings = accountSettings.get();
- response = gson.toJson(settings.accountUsage());
- logger.info("Account usage: {}", response);
- } catch(Exception e) {
- e.getStackTrace();
- }
- return response;
- }
-}
\ No newline at end of file
diff --git a/sample-apps/blank-java/src/main/resources/log4j2.xml b/sample-apps/blank-java/src/main/resources/log4j2.xml
deleted file mode 100644
index b9a6c317..00000000
--- a/sample-apps/blank-java/src/main/resources/log4j2.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
- %d{yyyy-MM-dd HH:mm:ss} %X{AWSRequestId} %-5p %c{1} - %m%n
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/sample-apps/blank-java/src/test/java/example/InvokeTest.java b/sample-apps/blank-java/src/test/java/example/InvokeTest.java
deleted file mode 100644
index c65b9371..00000000
--- a/sample-apps/blank-java/src/test/java/example/InvokeTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package example;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import org.junit.jupiter.api.Test;
-
-import com.amazonaws.services.lambda.runtime.Context;
-import com.amazonaws.services.lambda.runtime.LambdaLogger;
-import com.amazonaws.services.lambda.runtime.RequestHandler;
-import com.amazonaws.services.lambda.runtime.events.SQSEvent;
-import com.amazonaws.services.lambda.runtime.events.SQSEvent.SQSMessage;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-import java.util.ArrayList;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.stream.Stream;
-
-import com.amazonaws.xray.AWSXRay;
-import com.amazonaws.xray.AWSXRayRecorderBuilder;
-import com.amazonaws.xray.strategy.sampling.NoSamplingStrategy;
-
-class InvokeTest {
- private static final Logger logger = LoggerFactory.getLogger(InvokeTest.class);
- Gson gson = new GsonBuilder()
- .registerTypeAdapter(SQSEvent.class, new SQSEventDeserializer())
- .setPrettyPrinting()
- .create();
-
- public InvokeTest() {
- AWSXRayRecorderBuilder builder = AWSXRayRecorderBuilder.standard();
- builder.withSamplingStrategy(new NoSamplingStrategy());
- AWSXRay.setGlobalRecorder(builder.build());
- }
-
- @Test
- void invokeTest() {
- AWSXRay.beginSegment("blank-java-test");
- String path = "src/test/resources/event.json";
- String eventString = loadJsonFile(path);
- SQSEvent event = gson.fromJson(eventString, SQSEvent.class);
- Context context = new TestContext();
- String requestId = context.getAwsRequestId();
- Handler handler = new Handler();
- String result = handler.handleRequest(event, context);
- assertTrue(result.contains("totalCodeSize"));
- AWSXRay.endSegment();
- }
-
- private static String loadJsonFile(String path)
- {
- StringBuilder stringBuilder = new StringBuilder();
- try (Stream stream = Files.lines( Paths.get(path), StandardCharsets.UTF_8))
- {
- stream.forEach(s -> stringBuilder.append(s));
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- return stringBuilder.toString();
- }
-}
diff --git a/sample-apps/blank-java/src/test/java/example/SQSEventDeserializer.java b/sample-apps/blank-java/src/test/java/example/SQSEventDeserializer.java
deleted file mode 100644
index c2576307..00000000
--- a/sample-apps/blank-java/src/test/java/example/SQSEventDeserializer.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package example;
-
-import com.amazonaws.services.lambda.runtime.LambdaLogger;
-import com.amazonaws.services.lambda.runtime.RequestHandler;
-import com.amazonaws.services.lambda.runtime.events.SQSEvent;
-import com.amazonaws.services.lambda.runtime.events.SQSEvent.SQSMessage;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonParseException;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.reflect.TypeToken;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-import java.util.ArrayList;
-import java.lang.reflect.Type;
-
-public class SQSEventDeserializer implements JsonDeserializer {
- private static final Logger logger = LoggerFactory.getLogger(InvokeTest.class);
- Gson gson = new GsonBuilder().setPrettyPrinting().create();
- Type sqsMessageArray = new TypeToken>(){}.getType();
-
- @Override
- public SQSEvent deserialize(JsonElement eventJson, Type typeOfT, JsonDeserializationContext context)
- throws JsonParseException {
- SQSEvent event = new SQSEvent();
- logger.info("DESERIALIZING TEST EVENT");
- logger.info("EVENT JSON: " + eventJson.toString());
- // Records key is capitalized in test event, but lowercase in type
- JsonArray recordsArray = eventJson.getAsJsonObject().get("Records").getAsJsonArray();
- ArrayList records = gson.fromJson(recordsArray, sqsMessageArray);
- event.setRecords(records);
- return event;
- }
-}
\ No newline at end of file
diff --git a/sample-apps/blank-java/src/test/java/example/TestContext.java b/sample-apps/blank-java/src/test/java/example/TestContext.java
deleted file mode 100644
index 69e0af00..00000000
--- a/sample-apps/blank-java/src/test/java/example/TestContext.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package example;
-
-import com.amazonaws.services.lambda.runtime.Context;
-import com.amazonaws.services.lambda.runtime.CognitoIdentity;
-import com.amazonaws.services.lambda.runtime.ClientContext;
-import com.amazonaws.services.lambda.runtime.LambdaLogger;
-
-public class TestContext implements Context{
-
- public TestContext() {}
- public String getAwsRequestId(){
- return new String("495b12a8-xmpl-4eca-8168-160484189f99");
- }
- public String getLogGroupName(){
- return new String("/aws/lambda/my-function");
- }
- public String getLogStreamName(){
- return new String("2020/02/26/[$LATEST]704f8dxmpla04097b9134246b8438f1a");
- }
- public String getFunctionName(){
- return new String("my-function");
- }
- public String getFunctionVersion(){
- return new String("$LATEST");
- }
- public String getInvokedFunctionArn(){
- return new String("arn:aws:lambda:us-east-2:123456789012:function:my-function");
- }
- public CognitoIdentity getIdentity(){
- return null;
- }
- public ClientContext getClientContext(){
- return null;
- }
- public int getRemainingTimeInMillis(){
- return 300000;
- }
- public int getMemoryLimitInMB(){
- return 512;
- }
- public LambdaLogger getLogger(){
- return new TestLogger();
- }
-
-}
\ No newline at end of file
diff --git a/sample-apps/blank-java/src/test/java/example/TestLogger.java b/sample-apps/blank-java/src/test/java/example/TestLogger.java
deleted file mode 100644
index a81a274e..00000000
--- a/sample-apps/blank-java/src/test/java/example/TestLogger.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package example;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import com.amazonaws.services.lambda.runtime.LambdaLogger;
-
-public class TestLogger implements LambdaLogger {
- private static final Logger logger = LoggerFactory.getLogger(TestLogger.class);
- public TestLogger(){}
- public void log(String message){
- logger.info(message);
- }
- public void log(byte[] message){
- logger.info(new String(message));
- }
-}
diff --git a/sample-apps/blank-java/src/test/resources/event.json b/sample-apps/blank-java/src/test/resources/event.json
deleted file mode 100644
index 568467d1..00000000
--- a/sample-apps/blank-java/src/test/resources/event.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "Records": [
- {
- "messageId": "19dd0b57-b21e-4ac1-bd88-01bbb068cb78",
- "receiptHandle": "MessageReceiptHandle",
- "body": "Hello from SQS!",
- "attributes": {
- "ApproximateReceiveCount": "1",
- "SentTimestamp": "1523232000000",
- "SenderId": "123456789012",
- "ApproximateFirstReceiveTimestamp": "1523232000001"
- },
- "messageAttributes": {},
- "md5OfBody": "7b270e59b47ff90a553787216d55d91d",
- "eventSource": "aws:sqs",
- "eventSourceARN": "arn:aws:sqs:us-west-2:123456789012:MyQueue",
- "awsRegion": "us-west-2"
- }
- ]
-}
diff --git a/sample-apps/blank-java/src/test/resources/log4j2.xml b/sample-apps/blank-java/src/test/resources/log4j2.xml
deleted file mode 100644
index 3b69545f..00000000
--- a/sample-apps/blank-java/src/test/resources/log4j2.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/sample-apps/blank-java/template-mvn.yml b/sample-apps/blank-java/template-mvn.yml
deleted file mode 100644
index a2c3d5d6..00000000
--- a/sample-apps/blank-java/template-mvn.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-AWSTemplateFormatVersion: '2010-09-09'
-Transform: 'AWS::Serverless-2016-10-31'
-Description: An AWS Lambda application that calls the Lambda API.
-Resources:
- function:
- Type: AWS::Serverless::Function
- Properties:
- CodeUri: target/blank-java-1.0-SNAPSHOT.jar
- Handler: example.Handler::handleRequest
- Runtime: java8
- Description: Java function
- MemorySize: 512
- Timeout: 10
- # Function's execution role
- Policies:
- - AWSLambdaBasicExecutionRole
- - AWSLambda_ReadOnlyAccess
- - AWSXrayWriteOnlyAccess
- - AWSLambdaVPCAccessExecutionRole
- Tracing: Active
diff --git a/sample-apps/blank-java/template.yml b/sample-apps/blank-java/template.yml
deleted file mode 100644
index 748d3b7e..00000000
--- a/sample-apps/blank-java/template.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-AWSTemplateFormatVersion: '2010-09-09'
-Transform: 'AWS::Serverless-2016-10-31'
-Description: An AWS Lambda application that calls the Lambda API.
-Resources:
- function:
- Type: AWS::Serverless::Function
- Properties:
- CodeUri: build/distributions/blank-java.zip
- Handler: example.Handler::handleRequest
- Runtime: java8
- Description: Java function
- MemorySize: 512
- Timeout: 10
- # Function's execution role
- Policies:
- - AWSLambdaBasicExecutionRole
- - AWSLambda_ReadOnlyAccess
- - AWSXrayWriteOnlyAccess
- - AWSLambdaVPCAccessExecutionRole
- Tracing: Active
- Layers:
- - !Ref libs
- libs:
- Type: AWS::Serverless::LayerVersion
- Properties:
- LayerName: blank-java-lib
- Description: Dependencies for the blank-java sample app.
- ContentUri: build/blank-java-lib.zip
- CompatibleRuntimes:
- - java8
\ No newline at end of file
diff --git a/sample-apps/java-events/3-invoke.sh b/sample-apps/java-events/3-invoke.sh
index 0504ea1e..5df2a8ef 100755
--- a/sample-apps/java-events/3-invoke.sh
+++ b/sample-apps/java-events/3-invoke.sh
@@ -40,6 +40,9 @@ then
s3)
PAYLOAD='file://events/s3-notification.json'
;;
+ sqs)
+ PAYLOAD='file://events/sqs-record.json'
+ ;;
*)
echo -n "Unknown event type"
;;
diff --git a/sample-apps/java-events/README.md b/sample-apps/java-events/README.md
index d99fa3b1..d04ccf4f 100644
--- a/sample-apps/java-events/README.md
+++ b/sample-apps/java-events/README.md
@@ -98,6 +98,7 @@ By default, the function uses a handler class named `Handler` that takes an API
- `HandlerLex.java` - Takes `LexEvent` as input.
- `HandlerS3.java` - Takes `S3Event` as input.
- `HandlerSNS.java` - Takes `SNSEvent` as input.
+- `HandlerSQS.java` - Takes `SQSEvent` as input.
To use a different handler, change the value of the Handler setting in the application template (`template.yml` or `template-mvn.yaml`). For example, to use the Amazon Lex handler:
@@ -128,6 +129,7 @@ The following event type keys are supported:
- `lex` - Lex dialog (`events/lex-flowers.json`)
- `ddb` - DynamoDB record (`events/dynamodb-record.json`)
- `s3` - S3Event record (`events/s3-notification.json`)
+- `sqs` - SQSEvent record (`events/sqs-record.json`)
# Cleanup
To delete the application, run `4-cleanup.sh`.
diff --git a/sample-apps/java-events/build.gradle b/sample-apps/java-events/build.gradle
index f98131dc..a4e58ea4 100644
--- a/sample-apps/java-events/build.gradle
+++ b/sample-apps/java-events/build.gradle
@@ -8,7 +8,7 @@ repositories {
dependencies {
implementation 'com.amazonaws:aws-lambda-java-core:1.2.1'
- implementation 'com.amazonaws:aws-lambda-java-events:3.9.0'
+ implementation 'com.amazonaws:aws-lambda-java-events:3.11.0'
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'org.apache.logging.log4j:log4j-api:[2.17.1,)'
implementation 'org.apache.logging.log4j:log4j-core:[2.17.1,)'
diff --git a/sample-apps/java-events/events/sqs-record.json b/sample-apps/java-events/events/sqs-record.json
new file mode 100644
index 00000000..b88b763d
--- /dev/null
+++ b/sample-apps/java-events/events/sqs-record.json
@@ -0,0 +1,21 @@
+{
+ "Records": [
+ {
+ "messageId": "19dd0b57-b21e-4ac1-bd88-01bbb068cb78",
+ "receiptHandle": "MessageReceiptHandle",
+ "body": "Hello from SQS!",
+ "attributes": {
+ "ApproximateReceiveCount": "1",
+ "SentTimestamp": "1523232000000",
+ "SenderId": "123456789012",
+ "ApproximateFirstReceiveTimestamp": "1523232000001"
+ },
+ "messageAttributes": {},
+ "md5OfBody": "7b270e59b47ff90a553787216d55d91d",
+ "eventSource": "aws:sqs",
+ "eventSourceARN": "arn:aws:sqs:us-west-2:123456789012:MyQueue",
+ "awsRegion": "us-west-2"
+ }
+ ]
+}
+
\ No newline at end of file
diff --git a/sample-apps/java-events/pom.xml b/sample-apps/java-events/pom.xml
index 771e1af6..0a7c881d 100644
--- a/sample-apps/java-events/pom.xml
+++ b/sample-apps/java-events/pom.xml
@@ -20,7 +20,7 @@
com.amazonaws
aws-lambda-java-events
- 3.9.0
+ 3.11.0
com.google.code.gson
diff --git a/sample-apps/java-events/src/main/java/example/HandlerSQS.java b/sample-apps/java-events/src/main/java/example/HandlerSQS.java
new file mode 100644
index 00000000..3b3e16b6
--- /dev/null
+++ b/sample-apps/java-events/src/main/java/example/HandlerSQS.java
@@ -0,0 +1,35 @@
+package example;
+
+import com.amazonaws.services.lambda.runtime.Context;
+import com.amazonaws.services.lambda.runtime.LambdaLogger;
+import com.amazonaws.services.lambda.runtime.RequestHandler;
+import com.amazonaws.services.lambda.runtime.events.SQSEvent;
+import com.amazonaws.services.lambda.runtime.events.SQSEvent.SQSMessage;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+// Handler value: example.HandlerSQS
+public class HandlerSQS implements RequestHandler{
+ private static final Logger logger = LoggerFactory.getLogger(HandlerSQS.class);
+ Gson gson = new GsonBuilder().setPrettyPrinting().create();
+ @Override
+ public String handleRequest(SQSEvent event, Context context)
+ {
+ String response = new String("200 OK");
+ // log execution details
+ logger.info("ENVIRONMENT VARIABLES: {}", gson.toJson(System.getenv()));
+ logger.info("CONTEXT: {}", gson.toJson(context));
+ logger.info("EVENT: {}", gson.toJson(event));
+ // process event
+ for(SQSMessage msg : event.getRecords()){
+ logger.info(msg.getBody());
+ }
+ // log execution details
+ Util.logEnvironment(event, context, gson);
+ return response;
+ }
+}
\ No newline at end of file