AWS Secrets ManagerからMomento API Key を取得する
Momento API Keyを安全に保存することがベストプラクティスです。AWSをご使用の場合は、Momento API KeyをAWS Secrets Managerに安全に保存することができます。そして、正しいIAMクレデンシャルで実行されているコードのみがMomento API keyを取得し、そのトークンを使ってMomento CacheまたはMomento Topicsにアクセスできるようになります。
:::備考
可能であればMomentoのCacheClient
とTopicClient
オブジェクトを再利用した方がいいように、AWS Secrets Managerから取得したMomento認証トークンを使ってこれらのオブジェクトを再利用した方がよいです。再利用しなければ、AWS Secrets Managerへのラウンドトリップに対する各MomentoAPI呼び出しに対して、時間面と金銭面の両方から負担が増える危険性が生じます。負担を抑え、AWS Secrets Managerによって管理される可能性を排除 するには、このAWSブログで詳細にご説明させていただいた通り、クライアント側のクレデンシャルのキャッシュを使用するのがベストです。
:::
AWS Secrets Managerへの入力
Momento API keyをAWS Secrets Managerへ入力する際は、下のスクリーンショットの通り、JSONを含まないプレーンテキストとして入力するようにしてください(セキュリティのためトークンにはぼかしを入れております)。
AWS Secrets Managerのコード例
- Java
final Region region = Region.of("us-east-1");
// Create a Secrets Manager client
final SecretsManagerClient client =
SecretsManagerClient.builder()
.region(region)
// make sure to configure aws credentials in order to use the default provider
// https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/DefaultCredentialsProvider.html
.credentialsProvider(DefaultCredentialsProvider.create())
.build();
final GetSecretValueRequest getSecretValueRequest =
GetSecretValueRequest.builder().secretId("AUTH_TOKEN_SECRET_NAME").build();
final GetSecretValueResponse getSecretValueResponse;
try {
getSecretValueResponse = client.getSecretValue(getSecretValueRequest);
} catch (Exception e) {
// For a list of exceptions thrown, see
// https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html
throw e;
}
final String secret = getSecretValueResponse.secretString();
try {
// store variable here
CredentialProvider.fromString(secret);
} catch (SdkException e) {
throw new RuntimeException(
"An error occured while parsing the secrets manager vended" + " authentication token", e);
}
備考
Full example code and imports can be found here