こんにちは、小寺です。
AWS Secrets ManagerでSecret Manager Agentがリリースされました。
https://aws.amazon.com/about-aws/whats-new/2024/07/aws-secrets-manager-open-source-secrets-manager-agent/

Secrets Manager エージェントとは

Secrets Manager エージェントはLambda、ECS、EKS、EC2などのコンピューティング環境でSecrets Manager からのシークレット管理やメモリにキャッシュすることができるサービスです。
Secret ManagerシークレットをAPIでコールして取得して利用されるケースが一般的だと思いますが、APIコール数に応じて料金がかかるのでいかにキャッシュさせておくかがコスト最適化観点で、重要になってくるかと思います。

今回リリースされたSecret Manaer エージェントは、Secrets Manager を呼び出す代わりにシークレットをローカルホストから取得することができます。
注意点としては、メモリ内キャッシュを使っているので、Secrets Manager Agent の再起動時にキャッシュがリセットされます。
また、Secret Manaer エージェントはSecrets Manager に対して読み取りリクエストのみ可能で、シークレットの変更は不可です。

他に、Secret Managerエージェント利用時の注意事項です。
・デフォルトの更新頻度 (TTL) は 300 秒。
・キャッシュ エントリの有効期限が切れる前にシークレットがローテーションされると、Secrets Manager エージェントは古いシークレット値を返す可能性あり。
・シークレット値はキャッシュ内で暗号化されません。

ビルド方法のご紹介

ソースコードのビルドはGithubから可能です。

(1)  Secrets Manager エージェントのインストールを行います。

yum -y groupinstall "Development Tools"

(2) Rustインストールを行います。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh . "$HOME/.cargo/env"

エージェントを使用するには、ローカルの Secrets Manager Agent エンドポイントを呼び出し、シークレットの名前または ARN をクエリ パラメーターを渡す必要ありです。

Secrets Manager エージェントを保護するには、各リクエストの一部として SSRF トークン ヘッダー (X-Aws-Parameters-Secrets-Token) を含めましょう。

後は、Githubのガイドの通り進めていきます。実際のシークレットの取得はSecret Managerから行います。

キーと値のペアをあらかじめ入力しておきます。

本アップデートにより、HTTPアクセスでのキャッシュ化対応が完全にされるようになりました。カスタム コードを必要とせず簡単に読み込みできるようになったのは便利ですね。