Agent Skills by ALSEL
Anthropic ClaudeDevOps・インフラ⭐ リポ 0品質スコア 50/100

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 を一度作成する。スレッドセーフです
  • 非同期クライアントを使用する: ファイア・アンド・フォーゲット呼び出しの場合、LambdaAsyncClientCompletableFuture と共に使用
  • デプロイメントを検証する: 作成/更新操作の後、関数の状態が 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
リポジトリ
giuseppe-trisciuoglio/developer-kit
ライセンス
MIT
最終更新
不明

Source: https://github.com/giuseppe-trisciuoglio/developer-kit / ライセンス: MIT

関連スキル

汎用DevOps・インフラ⭐ リポ 502

superpowers-streamer-cli

SuperPowers デスクトップストリーマーの npm パッケージをインストール、ログイン、実行、トラブルシューティングできます。ユーザーが npm から `superpowers-ai` をセットアップしたい場合、メールまたは電話でサインインもしくはアカウント作成を行いたい場合、ストリーマーを起動したい場合、表示されたコントロールリンクを開きたい場合、後で停止したい場合、またはソースコードへのアクセスなしに npm やランタイムの一般的な問題から復旧したい場合に使用します。

by rohanarun
汎用DevOps・インフラ⭐ リポ 493

catc-client-ops

Catalyst Centerのクライアント操作・監視機能 - 有線・無線クライアントのリスト表示・フィルタリング、MACアドレスによる詳細なクライアント検索、クライアント数分析、時間軸での分析、SSIDおよび周波数帯によるフィルタリング、無線トラブルシューティング機能を提供します。MACアドレスやIPアドレスでのクライアント検索、サイト別やSSID別のクライアント数集計、無線周波数帯の分布分析、Wi-Fi信号の問題調査が必要な場合に活用できます。

by automateyournetwork
汎用DevOps・インフラ⭐ リポ 39,967

ci-cd-and-automation

CI/CDパイプラインの設定を自動化します。ビルドおよびデプロイメントパイプラインの構築または変更時に使用できます。品質ゲートの自動化、CI内のテストランナー設定、またはデプロイメント戦略の確立が必要な場合に活用します。

by addyosmani
汎用DevOps・インフラ⭐ リポ 39,967

shipping-and-launch

本番環境へのリリース準備を行います。本番環境へのデプロイ準備が必要な場合、リリース前チェックリストが必要な場合、監視機能の設定を行う場合、段階的なロールアウトを計画する場合、またはロールバック戦略が必要な場合に使用します。

by addyosmani
OpenAIDevOps・インフラ⭐ リポ 38,974

linear-release-setup

Linear Releaseに向けたCI/CD設定を生成します。リリース追跡の設定、LinearのCIパイプライン構築、またはLinearリリースとのデプロイメント連携を実施する際に利用できます。GitHub Actions、GitLab CI、CircleCIなど複数のプラットフォームに対応しています。

by novuhq
Anthropic ClaudeDevOps・インフラ⭐ リポ 2,159

tracking-application-response-times

API エンドポイント、データベースクエリ、サービスコール全体にわたるアプリケーションのレスポンスタイムを追跡・最適化できます。パフォーマンス監視やボトルネック特定の際に活用してください。「レスポンスタイムを追跡する」「API パフォーマンスを監視する」「遅延を分析する」といった表現で呼び出せます。

by jeremylongshore
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: giuseppe-trisciuoglio · giuseppe-trisciuoglio/developer-kit · ライセンス: MIT