aws-sdk-java-v2-secrets-manager は何をしますか?
AWS SDK for Java 2.x 向けの AWS Secrets Manager パターンを提供します。シークレットの取得、キャッシュ、ローテーション対応のアクセス、Spring Boot 統合を含みます。Java サービスでのシークレットの保存や読み取り、ハードコードされた認証情報の置き換え、アプリケーションへのシークレットベースの設定の組み込みに使用します。
主な機能
- シークレットの取得:
getSecretValueメソッドを使用して、AWS Secrets Manager からシークレットを簡単に取得できます。 - インメモリキャッシュ:
SecretsManagerCacheを使用してシークレットをキャッシュし、API コールの回数を削減します。 - ローテーション対応アクセス: シークレットのローテーション後もアプリケーションが最新の値を使用できるようにします。
- Spring Boot 統合:
@Valueアノテーションや@ConfigurationPropertiesを使用して、シークレットを Spring プロパティとして注入できます。
クイックスタート
依存関係の追加 (Maven)
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>secretsmanager</artifactId>
</dependency>
基本的なシークレットの取得
import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient;
import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueRequest;
import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueResponse;
SecretsManagerClient client = SecretsManagerClient.create();
GetSecretValueRequest request = GetSecretValueRequest.builder()
.secretId("my-secret-name")
.build();
GetSecretValueResponse response = client.getSecretValue(request);
String secret = response.secretString();
キャッシュの使用
import com.example.cache.SecretsManagerCache;
SecretsManagerCache cache = new SecretsManagerCache();
String secret = cache.getSecretString("my-secret-name");
Spring Boot との統合
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class MyService {
@Value("${my.secret}")
private String mySecret;
public void doSomething() {
System.out.println("シークレット: " + mySecret);
}
}
ベストプラクティス
- シークレットをハードコードせず、常に Secrets Manager から動的に取得してください。
- キャッシュを使用して、パフォーマンスを最適化し、API コストを削減してください。
- ローテーション対応のアクセスパターンを使用して、シークレットのローテーション後もアプリケーションが自動的に適応できるようにしてください。
- Spring Boot の
@Valueアノテーションまたは@ConfigurationPropertiesを使用して、シークレットをクリーンに注入してください。