1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS Lambda(Java)で機密情報を安全に扱う:Secrets Manager連携の実装

1
Last updated at Posted at 2026-02-09

1. はじめに

AWS LambdaでDB接続情報やAPIキーを扱う際、環境変数に直接書き込むのはセキュリティ上好ましくありません。今回は AWS Secrets Manager を利用して、Javaコード内から安全に機密情報を取得・利用する仕組みを構築した実績をまとめます。

2. 構成図

image.png

3. 実装コード (AWS SDK v2)

Javaプロジェクトの pom.xml に secretsmanager の依存関係を追加した上で、以下のハンドラーを実装します。

SecretsManagerの取得ロジック

public class SecretHandler implements RequestHandler<Map<String,Object>, String> {
    private final SecretsManagerClient secretsClient = SecretsManagerClient.builder()
            .region(Region.AP_NORTHEAST_1)
            .build();

    public String handleRequest(Map<String,Object> event, Context context) {
        String secretName = "my-app-secrets";
        
        try {
            GetSecretValueRequest valueRequest = GetSecretValueRequest.builder()
                    .secretId(secretName)
                    .build();

            GetSecretValueResponse valueResponse = secretsClient.getSecretValue(valueRequest);
            String secret = valueResponse.secretString();
            
            // JSONをパースして利用
            context.getLogger().log("Secret successfully retrieved.");
            return "SUCCESS";
        } catch (Exception e) {
            context.getLogger().log("Error: " + e.getMessage());
            return "FAILURE";
        }
    }
}

4. 運用のポイント

キャッシュの導入: 毎回Secrets Managerを叩くとAPI料金がかさみ、レスポンスも遅延します。今回は静的変数や専用ライブラリを使用して、実行環境内で値をキャッシュするように工夫しました。

IAMポリシーのハマりどころ: secretsmanager:GetSecretValue だけでなく、KMSで暗号化している場合は kms:Decrypt の権限も必要になる点に注意が必要です。

5. まとめ

JavaとSecrets Managerの組み合わせは、堅牢なバックエンド構築において必須のスキルだと感じました。型定義がしっかりしているJavaだからこそ、設定値のパースも安全に行えます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?