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(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
資格:少額短期保険募集人,FP3級,宅建士
コメント