DynamoDBのテーブルからItemを取得するLambda(Java)
前提
| 項目 | 値 |
|---|---|
| テーブル名 | test |
| パーティションキー | pid |
| ソートキー | date |
エントリポイント
エントリポイントとなるHello.javaです。
package jp.co.confrage.demo;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
import software.amazon.awssdk.services.dynamodb.model.GetItemRequest;
public class Hello implements RequestHandler<Map<String, Object>, String> {
@Override
public String handleRequest(Map<String, Object> event, Context context) {
DynamoDbClient ddbClient = null;
try {
ddbClient = DynamoDbClient.builder().region(Region.AP_NORTHEAST_1).build();
HashMap<String, AttributeValue> keyToGet = new HashMap<>();
keyToGet.put("pid", AttributeValue.builder().s("1").build());
keyToGet.put("date", AttributeValue.builder().s("20220401").build());
GetItemRequest request = GetItemRequest.builder().key(keyToGet).tableName("test").build();
Map<String, AttributeValue> returnedItem = ddbClient.getItem(request).item();
Set keys = returnedItem.keySet();
for (String key1 : keys) {
System.out.format("%s: %s\n", key1, returnedItem.get(key1).toString());
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
ddbClient.close();
}
return "Hello Lambda";
}
}
build.gradle
build.gradleです。
plugins {
id 'java'
}
java {
sourceCompatibility = '17'
targetCompatibility = '17'
}
repositories {
mavenCentral()
}
dependencies {
implementation platform('software.amazon.awssdk:bom:2.20.56')
implementation 'software.amazon.awssdk:dynamodb'
implementation 'software.amazon.awssdk:dynamodb-enhanced'
implementation 'com.amazonaws:aws-lambda-java-core:1.2.1'
implementation 'com.amazonaws:aws-lambda-java-events:3.11.0'
implementation 'org.apache.logging.log4j:log4j-api:[2.17.1,)'
implementation 'org.apache.logging.log4j:log4j-core:[2.17.1,)'
implementation 'org.apache.logging.log4j:log4j-slf4j18-impl:[2.17.1,)'
runtimeOnly 'com.amazonaws:aws-lambda-java-log4j2:1.5.1'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.0'
}
tasks.named('test') {
useJUnitPlatform()
}
task packageZip(type: Zip) {
into('lib') {
from(jar)
from(configurations.runtimeClasspath)
}
}
build.dependsOn packageZip
zip作成
zip作成します。
gradlew packageZip
デプロイ
Lambda(Java17)にzipをアップロードします。
Lambdaをマネジメントコンソールからテストすると、ログにItemが出力されます。

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^





コメント