JavaでAWS Lambdaを呼び出す方法。AWS SDK for Java v2を使用してLambda関数を同期的に呼び出す手順を解説します。
1. AWS SDK for Java v2のセットアップ
最初に、AWS SDK for Java v2をプロジェクトに組み込む必要があります。以下は、Mavenを使用したpom.xmlの依存関係の設定例です。
<dependencies>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>lambda</artifactId>
<version>2.x.x</version> <!-- 最新のバージョンに変更 -->
</dependency>
</dependencies>
2. Lambda関数の呼び出しコード
Lambda関数を呼び出すJavaコードは以下の通りです。
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.lambda.LambdaClient;
import software.amazon.awssdk.services.lambda.model.InvokeRequest;
import software.amazon.awssdk.services.lambda.model.InvokeResponse;
import software.amazon.awssdk.core.SdkBytes;
import java.nio.charset.StandardCharsets;
public class LambdaInvoker {
public static void main(String[] args) {
// AWS Lambda関数のARN
String functionArn = "arn:aws:lambda:REGION:ACCOUNT_ID:function:YOUR_FUNCTION_NAME";
// LambdaClientの作成
LambdaClient lambdaClient = LambdaClient.builder()
.region(Region.US_EAST_1) // 適切なリージョンを指定
.build();
// Lambda関数の呼び出し payloadはSdkBytes型でinputを設定すること
InvokeResponse response = lambdaClient.invoke(InvokeRequest.builder()
.functionName(functionArn)
.payload(SdkBytes.fromUtf8String("{ \"key1\": \"value1\", \"key2\": \"value2\" }"))
.build());
// レスポンスの処理
String result = new String(response.payload().asByteArray(), StandardCharsets.UTF_8);
System.out.println("Lambda Function Response: " + result);
// LambdaClientのクローズ
lambdaClient.close();
}
}
3. コードの解説
- AWS Lambda関数のARN(Amazon Resource Name)を指定します。
- LambdaClientを作成し、指定されたリージョンで設定します。
- Lambda関数に渡すデータは、
SdkBytes
型を使用してバイトデータに変換します。 InvokeRequest
を使用してLambda関数を呼び出し、その結果を取得します。
参考文献
https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/lambda/LambdaClient.html