Lambda 関数によるローテーション - AWS Secrets Manager

Lambda 関数によるローテーション

多くのシークレットタイプの場合、Secrets Manager は AWS Lambda 関数を使用して、シークレットとデータベースまたはサービスを更新します。Lambda 関数を使用する場合のコストについては、「料金」を参照してください。

他のサービスによって管理されるシークレット の場合、マネージドローテーションを使用します。マネージドローテーション を使用するには、最初に管理サービスを通じてシークレットを作成します。

ローテーション中、Secrets Manager はローテーションの状態を示すイベントをログに記録します。詳細については、「AWS CloudTrail による AWS Secrets Manager イベントのログ記録」を参照してください。

シークレットをローテーションするために、Secrets Manager は、設定したスケジュールに従って Lambda 関数を呼び出します。自動ローテーションの設定中にシークレット値も手動で更新した場合、Secrets Manager は次のローテーション日を計算するときにそれを有効なローテーションと見なします。

ローテーション中、Secrets Manager は毎回異なるパラメータを使用して、同じ関数を複数回呼び出します。Secrets Manager は、次の JSON リクエスト構造のパラメータを使用して 関数を呼び出します。

{ "Step" : "request.type", "SecretId" : "string", "ClientRequestToken" : "string", "RotationToken" : "string" }
[パラメータ:]
  • ステップ – ローテーションステップ: create_secretset_secrettest_secret、または finish_secret。詳細については、「ローテーション関数の 4 つのステップ」を参照してください。

  • SecretId – ローテーションするシークレットの ARN。

  • ClientRequestToken – シークレットの新しいバージョンの一意の ID。この値は、べき等性を確保するのに役立ちます。詳細については、「AWS Secrets Manager API Reference」の「PutSecretValue: ClientRequestToken」を参照してください。

  • RotationToken – リクエストのソースを示す一意の ID。クロスアカウントローテーション (別のアカウントの Lambda ローテーション関数を使用して、あるアカウントでシークレットをローテーションする場合) で、ローテーション関数が IAM ロールを引き受けて Secrets Manager を呼び出す場合、Secrets Manager はローテーショントークンを使用して ID を検証します。

ローテーションステップが失敗すると、Secrets Manager はローテーションプロセス全体を複数回再試行します。