AWS が開発したオープンソースのクライアント側キャッシングコンポーネントの使用 - AWS Secrets Manager

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

AWS が開発したオープンソースのクライアント側キャッシングコンポーネントの使用

シークレットを効率的に使用するために、使用するたびにシークレットの値を取得しないでください。また、次のオペレーションを実行するコードを含めてください。

  • アプリケーションは、取得後にシークレットをキャッシュします。次に、必要になるたびにネットワーク経由で Secrets Manager からシークレットを取得するのではなく、キャッシュされた値を使用します。

  • コードがネットワークまたは AWS サービスエラーが発生した場合は、次の説明に従って、指数関数的なバックオフを実装するアルゴリズムを使用して要求を再試行し、ジッターで再試行します。 指数関数的なバックオフとジッターAWS アーキテクチャブログ.

このようなタスクを実行するためのコードを書くことで、次のような利点があります。

  • コストの削減 – 頻繁に使用するシークレットについては、キャッシュからそれらを取得すると、アプリケーションが Secrets Manager に対して行う API コールの数が減ります。Secrets Manager は API コールごとに料金がかかるため、これによってコストを大幅に節約することができます。

  • パフォーマンス向上 – インターネット経由で Secrets Manager にリクエストを送信せずに、メモリからシークレットを取得すると、アプリケーションのパフォーマンスは大幅に向上します。

  • 可用性の向上 – キャッシュからシークレット情報を検索する際の一時的なネットワークエラーは、はるかに少なくなります。

Secrets Manager は、これらのベストプラクティスを実装し、AWS Secrets Manager に格納されているシークレットにアクセスするためのコードを簡単に作成するためのクライアント側のコンポーネントを作成しました。クライアントをインストールしてシークレットを呼び出し、コードで使用するシークレットの識別子を指定します。Secrets Manager では、Secrets Manager を呼び出すために使用する AWS 認証情報に、シークレットに対する secretsmanager:GetSecretValue アクセス許可と secretsmanager:DescribeSecret アクセス許可が含まれていることも要求します。これらの認証情報は通常、IAM ロールに関連付けられます。SAML フェデレーションまたはウェブ ID (OIDC) フェデレーションを使用している場合は、サインオン時にそのロールが割り当てられる可能性があります。アプリケーションが Amazon EC2 インスタンスで実行されている場合、管理者は、インスタンスプロファイルを作成して、IAM ロールを割り当てることができます。

コンポーネントは以下の形式になります。

  • お客様がシークレットとやりとりする Java、Python、Go、.NET のクライアント側ライブラリ (GetSecretValue オペレーションの直接呼び出しの代わり)。

  • Java Database Connectivity (JDBC) と互換性があるデータベースドライバーコンポーネント。このコンポーネントは、上記に示す機能を加えた真の JDBC ドライバのラッパーです。

ダウンロード手順については、以下のいずれかのリンクを使用してください。