aws-sdk-java-v2-lambda
AWS SDK for Java 2.x を使用した AWS Lambda のパターンを提供します。Lambda 関数の呼び出し、関数の作成・更新、関数設定の管理、Lambda レイヤーの操作、または Lambda と Spring Boot アプリケーションの統合を行う際に使用してください。
description の原文を見る
Provides AWS Lambda patterns using AWS SDK for Java 2.x. Use when invoking Lambda functions, creating/updating functions, managing function configurations, working with Lambda layers, or integrating Lambda with Spring Boot applications.
SKILL.md 本文
AWS SDK for Java 2.x - AWS Lambda
概要
AWS Lambda はサーバー管理なしでコードを実行するコンピュートサービスです。このスキルを使用して、AWS SDK for Java 2.x を使用したアプリケーションおよびサービスで AWS Lambda 操作を実装します。
使用するタイミング
- Java アプリケーションから Lambda 関数を呼び出す
- SDK を介して Lambda 関数をデプロイおよび更新する
- 関数設定とレイヤーを管理する
- Lambda を Spring Boot アプリケーションと統合する
クイックリファレンス
| 操作 | SDK メソッド | ユースケース |
|---|---|---|
| 呼び出し | invoke() | 同期/非同期の関数呼び出し |
| 関数の一覧表示 | listFunctions() | すべての Lambda 関数を取得 |
| 設定を取得 | getFunction() | 関数設定を取得 |
| 関数を作成 | createFunction() | 新しい Lambda 関数を作成 |
| コードを更新 | updateFunctionCode() | 新しい関数コードをデプロイ |
| 設定を更新 | updateFunctionConfiguration() | 設定(タイムアウト、メモリ、環境変数)を変更 |
| 関数を削除 | deleteFunction() | Lambda 関数を削除 |
手順
1. 依存関係を追加
pom.xml に Lambda SDK 依存関係を含める:
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>lambda</artifactId>
</dependency>
完全なセットアップについては client-setup.md を参照してください。
2. クライアントを作成
適切な設定で LambdaClient をインスタンス化する:
LambdaClient lambdaClient = LambdaClient.builder()
.region(Region.US_EAST_1)
.build();
非同期操作の場合は LambdaAsyncClient を使用します。
3. Lambda 関数を呼び出す
同期呼び出し:
InvokeRequest request = InvokeRequest.builder()
.functionName("my-function")
.payload(SdkBytes.fromUtf8String(payload))
.build();
InvokeResponse response = lambdaClient.invoke(request);
return response.payload().asUtf8String();
パターンについては invocation-patterns.md を参照してください。
4. レスポンスを処理
レスポンスペイロードを解析し、エラーをチェック:
if (response.functionError() != null) {
throw new LambdaInvocationException("Lambda error: " + response.functionError());
}
String result = response.payload().asUtf8String();
5. 関数を管理
Lambda 関数を作成、更新、または削除:
// 作成
CreateFunctionRequest createRequest = CreateFunctionRequest.builder()
.functionName("my-function")
.runtime(Runtime.JAVA17)
.role(roleArn)
.code(code)
.build();
lambdaClient.createFunction(createRequest);
// 関数がアクティブになるまで検証
GetFunctionRequest getRequest = GetFunctionRequest.builder()
.functionName("my-function")
.build();
GetFunctionResponse getResponse = lambdaClient.getFunction(getRequest);
if (!"Active".equals(getResponse.configuration().state())) {
throw new IllegalStateException("Function not active: " + getResponse.configuration().stateReason());
}
// コードを更新
UpdateFunctionCodeRequest updateCodeRequest = UpdateFunctionCodeRequest.builder()
.functionName("my-function")
.zipFile(SdkBytes.fromByteArray(zipBytes))
.build();
lambdaClient.updateFunctionCode(updateCodeRequest);
// デプロイの完了を待機
Waiter<GetFunctionConfigurationRequest> waiter = lambdaClient.waiter();
waiter.waitUntilFunctionUpdatedActive(GetFunctionConfigurationRequest.builder()
.functionName("my-function")
.build());
完全なパターンについては function-management.md を参照してください。
6. 環境を設定
環境変数と同時実行制限を設定:
Environment env = Environment.builder()
.variables(Map.of(
"DB_URL", "jdbc:postgresql://db",
"LOG_LEVEL", "INFO"
))
.build();
UpdateFunctionConfigurationRequest configRequest = UpdateFunctionConfigurationRequest.builder()
.functionName("my-function")
.environment(env)
.timeout(60)
.memorySize(512)
.build();
lambdaClient.updateFunctionConfiguration(configRequest);
7. Spring Boot と統合
Lambda ビーンとサービスを設定:
@Configuration
public class LambdaConfiguration {
@Bean
public LambdaClient lambdaClient() {
return LambdaClient.builder()
.region(Region.US_EAST_1)
.build();
}
}
@Service
public class LambdaInvokerService {
public <T, R> R invoke(String functionName, T request, Class<R> responseType) {
// 実装
}
}
完全な統合については spring-boot-integration.md を参照してください。
8. ローカルでテスト
開発テストにはモックまたは LocalStack を使用します。
テストパターンについては testing.md を参照してください。
例
基本的な呼び出し
public String invokeFunction(LambdaClient client, String functionName, String payload) {
InvokeRequest request = InvokeRequest.builder()
.functionName(functionName)
.payload(SdkBytes.fromUtf8String(payload))
.build();
InvokeResponse response = client.invoke(request);
if (response.functionError() != null) {
throw new RuntimeException("Lambda error: " + response.functionError());
}
return response.payload().asUtf8String();
}
非同期呼び出し
public void invokeAsync(LambdaClient client, String functionName, Map<String, Object> event) {
String jsonPayload = new ObjectMapper().writeValueAsString(event);
InvokeRequest request = InvokeRequest.builder()
.functionName(functionName)
.invocationType(InvocationType.EVENT)
.payload(SdkBytes.fromUtf8String(jsonPayload))
.build();
client.invoke(request);
}
Spring Boot サービス
@Service
public class LambdaService {
private final LambdaClient lambdaClient;
public UserResponse processUser(UserRequest request) {
String payload = objectMapper.writeValueAsString(request);
InvokeResponse response = lambdaClient.invoke(
InvokeRequest.builder()
.functionName("user-processor")
.payload(SdkBytes.fromUtf8String(payload))
.build()
);
return objectMapper.readValue(
response.payload().asUtf8String(),
UserResponse.class
);
}
}
その他の例については examples.md を参照してください。
ベストプラクティス
- クライアントを再利用する:
LambdaClient/LambdaAsyncClientを一度作成する。スレッドセーフです - 非同期クライアントを使用する: ファイア・アンド・フォーゲット呼び出しの場合、
LambdaAsyncClientをCompletableFutureと共に使用 - デプロイメントを検証する: 作成/更新操作の後、関数の状態が
Activeになるまで常に待機 - ペイロードサイズを制限する: リクエスト/レスポンスペイロードを非同期は 256KB、同期呼び出しは 6MB 未満に保つ
- タイムアウトを設定: クライアント読み込みタイムアウトを Lambda 関数タイムアウトより少し高く設定
- 最新のランタイムを使用:
Runtime.JAVA17以降を指定してコールドスタートのパフォーマンスを改善
制約と警告
- ペイロード制限: 6MB(同期)、256KB(非同期呼び出し)
- タイムアウト: 呼び出しあたり最大 900 秒(15 分)
- コールドスタート: JVM ベースの関数はコールドスタートが長い。GraalVM Native Image を使用して改善
- デプロイメントサイズ: 関数コード + レイヤーは圧縮時に 50MB、未圧縮時に 250MB を超えない必要がある
- 同時実行: リージョンあたりのデフォルト 1000。予約済み同時実行を使用してキャパシティを保証
- コスト: CloudWatch メトリクスで監視。請求アラートを設定してコスト暴走を防止
リファレンス
client-setup.md— クライアント設定とセットアップinvocation-patterns.md— 同期および非同期呼び出しパターンfunction-management.md— 関数の作成、更新、削除spring-boot-integration.md— Spring Boot 設定とサービスtesting.md— ユニットテストと統合テストパターンexamples.md— 完全なコード例と統合パターンofficial-documentation.md— AWS Lambda コンセプトと API リファレンス
関連スキル
aws-sdk-java-v2-core— コア AWS SDK パターンとクライアント設定spring-boot-dependency-injection— Spring 依存性注入のベストプラクティスunit-test-service-layer— Mockito を使用したサービステストパターンspring-boot-actuator— 本番環境の監視とヘルスチェック
外部リソース
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- giuseppe-trisciuoglio
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/giuseppe-trisciuoglio/developer-kit / ライセンス: MIT
関連スキル
superpowers-streamer-cli
SuperPowers デスクトップストリーマーの npm パッケージをインストール、ログイン、実行、トラブルシューティングできます。ユーザーが npm から `superpowers-ai` をセットアップしたい場合、メールまたは電話でサインインもしくはアカウント作成を行いたい場合、ストリーマーを起動したい場合、表示されたコントロールリンクを開きたい場合、後で停止したい場合、またはソースコードへのアクセスなしに npm やランタイムの一般的な問題から復旧したい場合に使用します。
catc-client-ops
Catalyst Centerのクライアント操作・監視機能 - 有線・無線クライアントのリスト表示・フィルタリング、MACアドレスによる詳細なクライアント検索、クライアント数分析、時間軸での分析、SSIDおよび周波数帯によるフィルタリング、無線トラブルシューティング機能を提供します。MACアドレスやIPアドレスでのクライアント検索、サイト別やSSID別のクライアント数集計、無線周波数帯の分布分析、Wi-Fi信号の問題調査が必要な場合に活用できます。
ci-cd-and-automation
CI/CDパイプラインの設定を自動化します。ビルドおよびデプロイメントパイプラインの構築または変更時に使用できます。品質ゲートの自動化、CI内のテストランナー設定、またはデプロイメント戦略の確立が必要な場合に活用します。
shipping-and-launch
本番環境へのリリース準備を行います。本番環境へのデプロイ準備が必要な場合、リリース前チェックリストが必要な場合、監視機能の設定を行う場合、段階的なロールアウトを計画する場合、またはロールバック戦略が必要な場合に使用します。
linear-release-setup
Linear Releaseに向けたCI/CD設定を生成します。リリース追跡の設定、LinearのCIパイプライン構築、またはLinearリリースとのデプロイメント連携を実施する際に利用できます。GitHub Actions、GitLab CI、CircleCIなど複数のプラットフォームに対応しています。
tracking-application-response-times
API エンドポイント、データベースクエリ、サービスコール全体にわたるアプリケーションのレスポンスタイムを追跡・最適化できます。パフォーマンス監視やボトルネック特定の際に活用してください。「レスポンスタイムを追跡する」「API パフォーマンスを監視する」「遅延を分析する」といった表現で呼び出せます。