Skip to content

Commit e3e1d09

Browse files
authored
Merge pull request #293 from awsdocs/deprecate-java-events-v1sdk-pkg
Move java-events-v1sdk samples to java-events. Add note that v1sdk examples are deprecated.
2 parents abc4ca7 + ea892da commit e3e1d09

File tree

12 files changed

+279
-12
lines changed

12 files changed

+279
-12
lines changed

sample-apps/java-events-v1sdk/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
This sample application shows the use of the `aws-lambda-java-events` library with event types that require AWS SDK as a dependency. A separate handler class is defined for each input type. For other event types (which don't require the AWS SDK), see the `java-events` sample.
44

5+
**Note: The `java-events-v1sdk` examples are deprecated.** As of version 3.0.0 of the `aws-lambda-java-events` package, [users are no longer required to pull in SDK dependencies in order to use that library](https://github.com/aws/aws-lambda-java-libs/tree/master/aws-lambda-java-events). Please see the [`java-events` package](https://github.com/awsdocs/aws-lambda-developer-guide/tree/main/sample-apps/java-events) for updated examples.
6+
57
![Architecture](/sample-apps/java-events-v1sdk/images/sample-java-events-v1sdk.png)
68

79
The project includes function code and supporting resources:

sample-apps/java-events/3-invoke.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,21 @@ then
2525
cog)
2626
PAYLOAD='file://events/cognito-sync.json'
2727
;;
28+
kin)
29+
PAYLOAD='file://events/kinesis-record.json'
30+
;;
2831
fh)
2932
PAYLOAD='file://events/firehose-record.json'
3033
;;
3134
lex)
3235
PAYLOAD='file://events/lex-flowers.json'
3336
;;
37+
ddb)
38+
PAYLOAD='file://events/dynamodb-record.json'
39+
;;
40+
s3)
41+
PAYLOAD='file://events/s3-notification.json'
42+
;;
3443
*)
3544
echo -n "Unknown event type"
3645
;;

sample-apps/java-events/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,11 @@ By default, the function uses a handler class named `Handler` that takes an API
9090
- `HandlerCognito.java` - Takes `CognitoEvent` as input.
9191
- `HandlerCWEvents.java` - Takes `ScheduledEventEvent` as input.
9292
- `HandlerCWLogs.java` - Takes `CloudWatchLogsEvent` as input.
93+
- `HandlerDynamoDB.java` - Takes `DynamodbEvent` as input.
9394
- `HandlerFirehose.java` - Takes `KinesisFirehoseEvent` as input.
95+
- `HandlerKinesis.java` - Takes `KinesisEvent` as input.
9496
- `HandlerLex.java` - Takes `LexEvent` as input.
97+
- `HandlerS3.java` - Takes `S3Event` as input.
9598
- `HandlerSNS.java` - Takes `SNSEvent` as input.
9699

97100
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:
@@ -118,8 +121,11 @@ The following event type keys are supported:
118121
- `cfg` - Config rule (`events/config-rule.json`)
119122
- `cc` - CodeCommit push (`events/codecommit-push.json`)
120123
- `cog` - Cognito Sync (`events/cognito-sync.json`)
124+
- `kin` - Kinesis record (`events/kinesis-record.json`)
121125
- `fh` - Kinesis Firehose record (`events/firehose-record.json`)
122126
- `lex` - Lex dialog (`events/lex-flowers.json`)
127+
- `ddb` - DynamoDB record (`events/dynamodb-record.json`)
128+
- `s3` - S3Event record (`events/s3-notification.json`)
123129

124130
# Cleanup
125131
To delete the application, run `4-cleanup.sh`.

sample-apps/java-events/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ repositories {
88

99
dependencies {
1010
implementation 'com.amazonaws:aws-lambda-java-core:1.2.1'
11-
implementation 'com.amazonaws:aws-lambda-java-events:2.2.9'
11+
implementation 'com.amazonaws:aws-lambda-java-events:3.9.0'
1212
implementation 'com.google.code.gson:gson:2.8.6'
13-
testImplementation 'org.apache.logging.log4j:log4j-api:2.13.0'
14-
testImplementation 'org.apache.logging.log4j:log4j-core:2.13.0'
15-
testImplementation 'org.apache.logging.log4j:log4j-slf4j18-impl:2.13.0'
13+
implementation 'org.apache.logging.log4j:log4j-api:2.13.0'
14+
implementation 'org.apache.logging.log4j:log4j-core:2.13.0'
15+
implementation 'org.apache.logging.log4j:log4j-slf4j18-impl:2.13.0'
1616
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
1717
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.0'
1818
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
{
2+
"Records": [
3+
{
4+
"eventID": "1",
5+
"eventVersion": "1.0",
6+
"dynamodb": {
7+
"Keys": {
8+
"Id": {
9+
"N": "101"
10+
}
11+
},
12+
"NewImage": {
13+
"Message": {
14+
"S": "New item!"
15+
},
16+
"Id": {
17+
"N": "101"
18+
}
19+
},
20+
"StreamViewType": "NEW_AND_OLD_IMAGES",
21+
"SequenceNumber": "111",
22+
"SizeBytes": 26
23+
},
24+
"awsRegion": "us-west-2",
25+
"eventName": "INSERT",
26+
"eventSourceARN": "eventsourcearn",
27+
"eventSource": "aws:dynamodb"
28+
},
29+
{
30+
"eventID": "2",
31+
"eventVersion": "1.0",
32+
"dynamodb": {
33+
"OldImage": {
34+
"Message": {
35+
"S": "New item!"
36+
},
37+
"Id": {
38+
"N": "101"
39+
}
40+
},
41+
"SequenceNumber": "222",
42+
"Keys": {
43+
"Id": {
44+
"N": "101"
45+
}
46+
},
47+
"SizeBytes": 59,
48+
"NewImage": {
49+
"Message": {
50+
"S": "This item has changed"
51+
},
52+
"Id": {
53+
"N": "101"
54+
}
55+
},
56+
"StreamViewType": "NEW_AND_OLD_IMAGES"
57+
},
58+
"awsRegion": "us-west-2",
59+
"eventName": "MODIFY",
60+
"eventSourceARN": "sourcearn",
61+
"eventSource": "aws:dynamodb"
62+
}
63+
]
64+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{
2+
"Records": [
3+
{
4+
"kinesis": {
5+
"kinesisSchemaVersion": "1.0",
6+
"partitionKey": "1",
7+
"sequenceNumber": "49590338271490256608559692538361571095921575989136588898",
8+
"data": "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==",
9+
"approximateArrivalTimestamp": 1545084650.987
10+
},
11+
"eventSource": "aws:kinesis",
12+
"eventVersion": "1.0",
13+
"eventID": "shardId-000000000006:49590338271490256608559692538361571095921575989136588898",
14+
"eventName": "aws:kinesis:record",
15+
"invokeIdentityArn": "arn:aws:iam::123456789012:role/lambda-role",
16+
"awsRegion": "us-east-2",
17+
"eventSourceARN": "arn:aws:kinesis:us-east-2:123456789012:stream/lambda-stream"
18+
},
19+
{
20+
"kinesis": {
21+
"kinesisSchemaVersion": "1.0",
22+
"partitionKey": "1",
23+
"sequenceNumber": "49590338271490256608559692540925702759324208523137515618",
24+
"data": "VGhpcyBpcyBvbmx5IGEgdGVzdC4=",
25+
"approximateArrivalTimestamp": 1545084711.166
26+
},
27+
"eventSource": "aws:kinesis",
28+
"eventVersion": "1.0",
29+
"eventID": "shardId-000000000006:49590338271490256608559692540925702759324208523137515618",
30+
"eventName": "aws:kinesis:record",
31+
"invokeIdentityArn": "arn:aws:iam::123456789012:role/lambda-role",
32+
"awsRegion": "us-east-2",
33+
"eventSourceARN": "arn:aws:kinesis:us-east-2:123456789012:stream/lambda-stream"
34+
}
35+
]
36+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{
2+
"Records": [
3+
{
4+
"awsRegion": "us-east-2",
5+
"eventName": "ObjectCreated:Put",
6+
"eventSource": "aws:s3",
7+
"eventTime": "2020-03-08T00:30:12.456Z",
8+
"eventVersion": "2.1",
9+
"requestParameters": {
10+
"sourceIPAddress": "174.255.255.156"
11+
},
12+
"responseElements": {
13+
"xAmzId2": "nBbLJPAHhdvxmplPvtCgTrWCqf/KtonyV93l9rcoMLeIWJxpS9x9P8u01+Tj0OdbAoGs+VGvEvWl/Sg1NW5uEsVO25Laq7L",
14+
"xAmzRequestId": "AF2D7AB6002E898D"
15+
},
16+
"s3": {
17+
"configurationId": "682bbb7a-xmpl-48ca-94b1-7f77c4d6dbf0",
18+
"bucket": {
19+
"name": "BUCKET_NAME",
20+
"ownerIdentity": {
21+
"principalId": "A3XMPLFAF2AI3E"
22+
},
23+
"arn": "arn:aws:s3:::BUCKET_NAME"
24+
},
25+
"object": {
26+
"key": "inbound/sample-java-s3.png",
27+
"size": 21476,
28+
"eTag": "d132690b6c65b6d1629721dcfb49b883",
29+
"versionId": "",
30+
"sequencer": "005E64A65DF093B26D"
31+
},
32+
"s3SchemaVersion": "1.0"
33+
},
34+
"userIdentity": {
35+
"principalId": "AWS:AIDAINPONIXMPLT3IKHL2"
36+
}
37+
}
38+
]
39+
}

sample-apps/java-events/pom.xml

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<dependency>
2121
<groupId>com.amazonaws</groupId>
2222
<artifactId>aws-lambda-java-events</artifactId>
23-
<version>2.2.9</version>
23+
<version>3.9.0</version>
2424
</dependency>
2525
<dependency>
2626
<groupId>com.google.code.gson</groupId>
@@ -31,32 +31,29 @@
3131
<groupId>org.apache.logging.log4j</groupId>
3232
<artifactId>log4j-api</artifactId>
3333
<version>2.13.0</version>
34-
<scope>test</scope>
3534
</dependency>
3635
<dependency>
3736
<groupId>org.apache.logging.log4j</groupId>
3837
<artifactId>log4j-core</artifactId>
3938
<version>2.13.2</version>
40-
<scope>test</scope>
4139
</dependency>
4240
<dependency>
4341
<groupId>org.apache.logging.log4j</groupId>
4442
<artifactId>log4j-slf4j18-impl</artifactId>
4543
<version>2.13.0</version>
46-
<scope>test</scope>
4744
</dependency>
48-
<dependency>
45+
<dependency>
4946
<groupId>org.junit.jupiter</groupId>
5047
<artifactId>junit-jupiter-api</artifactId>
5148
<version>5.6.0</version>
5249
<scope>test</scope>
53-
</dependency>
54-
<dependency>
50+
</dependency>
51+
<dependency>
5552
<groupId>org.junit.jupiter</groupId>
5653
<artifactId>junit-jupiter-engine</artifactId>
5754
<version>5.6.0</version>
5855
<scope>test</scope>
59-
</dependency>
56+
</dependency>
6057
</dependencies>
6158

6259
<build>
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package example;
2+
3+
import com.amazonaws.services.lambda.runtime.Context;
4+
import com.amazonaws.services.lambda.runtime.RequestHandler;
5+
import com.amazonaws.services.lambda.runtime.LambdaLogger;
6+
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
7+
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent.DynamodbStreamRecord;
8+
9+
import com.google.gson.Gson;
10+
import com.google.gson.GsonBuilder;
11+
12+
import org.slf4j.Logger;
13+
import org.slf4j.LoggerFactory;
14+
15+
// Handler value: example.HandlerDynamoDB
16+
public class HandlerDynamoDB implements RequestHandler<DynamodbEvent, String>{
17+
private static final Logger logger = LoggerFactory.getLogger(HandlerDynamoDB.class);
18+
Gson gson = new GsonBuilder().setPrettyPrinting().create();
19+
@Override
20+
public String handleRequest(DynamodbEvent event, Context context)
21+
{
22+
String response = new String("200 OK");
23+
for (DynamodbStreamRecord record : event.getRecords()){
24+
logger.info(record.getEventID());
25+
logger.info(record.getEventName());
26+
logger.info(record.getDynamodb().toString());
27+
}
28+
logger.info("Successfully processed " + event.getRecords().size() + " records.");
29+
// log execution details
30+
Util.logEnvironment(event, context, gson);
31+
return response;
32+
}
33+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package example;
2+
3+
import com.amazonaws.services.lambda.runtime.Context;
4+
import com.amazonaws.services.lambda.runtime.RequestHandler;
5+
import com.amazonaws.services.lambda.runtime.LambdaLogger;
6+
import com.amazonaws.services.lambda.runtime.events.KinesisEvent;
7+
import com.amazonaws.services.lambda.runtime.events.KinesisEvent.KinesisEventRecord;
8+
9+
import com.google.gson.Gson;
10+
import com.google.gson.GsonBuilder;
11+
12+
import org.slf4j.Logger;
13+
import org.slf4j.LoggerFactory;
14+
15+
// Handler value: example.HandleKinesis
16+
public class HandlerKinesis implements RequestHandler<KinesisEvent, String>{
17+
private static final Logger logger = LoggerFactory.getLogger(HandlerKinesis.class);
18+
Gson gson = new GsonBuilder().setPrettyPrinting().create();
19+
@Override
20+
public String handleRequest(KinesisEvent event, Context context)
21+
{
22+
String response = new String("200 OK");
23+
for(KinesisEventRecord record : event.getRecords()) {
24+
logger.info(gson.toJson(record.getKinesis().getData()));
25+
}
26+
// log execution details
27+
Util.logEnvironment(event, context, gson);
28+
return response;
29+
}
30+
}

0 commit comments

Comments
 (0)