SQSにキューを送るLambda(Java)

SQSにキューを送るLambda(Java)

前提

項目
キュータイプ 標準キュー
キュー名 hoge-queue

エントリポイント

エントリポイントとなるHello.javaです。

package jp.co.confrage.demo;


import java.util.HashMap;
import java.util.Map;

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.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.GetQueueUrlRequest;
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;

public class Hello implements RequestHandler<Map<String, Object> event, String> {
  @Override
  public String handleRequest(Map<String, Object> event, Context context) {
    SqsClient sqsClient = null;
    try {
      Map<String,String> map = new HashMap<String,String>();
      map.put("aaa", "xxx");
      map.put("bbb", "yyy");

      sqsClient = SqsClient.builder()
      .region(Region.AP_NORTHEAST_1)
      .build();

      GetQueueUrlRequest getQueueRequest = GetQueueUrlRequest.builder()
        .queueName("hoge-queue") // キュー名
        .build();

      String queueUrl = sqsClient.getQueueUrl(getQueueRequest).queueUrl();
      SendMessageRequest sendMsgRequest = SendMessageRequest.builder()
        .queueUrl(queueUrl)
        .messageBody(map.toString())
        .delaySeconds(5)
        .build();

      sqsClient.sendMessage(sendMsgRequest);
    } catch (Exception e) {
      throw new RuntimeException(e);
    } finally {
      sqsClient.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:sqs'

    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をマネジメントコンソールからテストすると、Queueにメッセージが追加されていきます。

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました