AWS::SecretsManager 変換 - AWS CloudFormation

AWS::SecretsManager 変換

AWS::SecretsManager がホストするマクロである AWS CloudFormation 変換を使用して、シークレットのローテーションを実行する AWS Lambda 関数を指定します。変更セットを作成する または 変更セットを使用して CloudFormation スタックを更新する とテンプレートが AWS::SecretsManager を参照する場合、AWS CloudFormation はシークレットのローテーションを実行する AWS Lambda 関数を生成します。AWS::SecretsManager::RotationSchedule リソースの HostedRotationLambda プロパティタイプを使用して、目的の AWS Lambda 関数の属性を指定します。

AWS Lambda 関数は、ネストされたスタック (つまり、AWS::CloudFormation::Stack リソース) として、処理済みのテンプレートに含まれます。このリソースは、次に AWS::SecretsManager::RotationSchedule リソースで指定された RotationType に基づいて、AWS Secrets Manager Rotation Lambda Functions リポジトリ内の適切な関数テンプレートにリンクします。

使用方法

テンプレートの最上位レベルにある AWS::SecretsManager 変換を使用します。AWS::SecretsManager を他のテンプレートセクションに埋め込まれたトランスフォームとして使用することはできません。

変換の宣言の値には、リテラル文字列である必要があります。変換値の指定には、パラメータまたは関数は使用できません。

テンプレートのトップレベルでの構文

テンプレートの最上位レベルに AWS::SecretsManager を含めるには、Transform セクションで次の構文を使用します。

JSON

{ "Transform": "AWS::SecretsManager-2020-07-23", . . . }

YAML

Transform: AWS::SecretsManager-2020-07-23

パラメータ

AWS::SecretsManager トランスフォームはパラメータを受け付けません。代わりに、スタックテンプレート内の AWS::SecretsManager::RotationSchedule リソースの HostedRotationLambda プロパティタイプを使用して作成するシークレットローテーション AWS Lambda 関数のプロパティを指定します。

解説

マクロの使用に関する一般的な考慮事項については、「CloudFormation マクロ定義を作成する際の考慮事項」を参照してください。

次の部分的なテンプレートの例は、AWS::SecretsManager 変換を使用し、AWS::SecretsManager::RotationSchedule リソースの HostedRotationLambda プロパティタイプで指定されたプロパティに基づいて、単一ユーザーの MySQL データベースでシークレットローテーションの AWS Lambda 関数を指定する方法を示しています。

RDS データベース、Amazon Redshift クラスター、ドキュメント DB クラスターのシークレットローテーションを示す完全なテンプレートの例については、「AWS::SecretsManager::RotationSchedule」の「」のセクションを参照してください。

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::SecretsManager-2020-07-23", "Resources": { . . . "MySecretRotationSchedule": { "Type": "AWS::SecretsManager::RotationSchedule", "DependsOn": "SecretRDSInstanceAttachment", "Properties": { "SecretId": { "Ref": "MyRDSInstanceRotationSecret" }, "HostedRotationLambda": { "RotationType": "MySQLSingleUser", "RotationLambdaName": "SecretsManagerRotation", "VpcSecurityGroupIds": { "Fn::GetAtt": [ "TestVPC", "DefaultSecurityGroup" ] }, "VpcSubnetIds": { "Fn::Join": [ ",", [ { "Ref": "TestSubnet01" }, { "Ref": "TestSubnet02" } ] ] } }, "RotationRules": { "AutomaticallyAfterDays": 30 } } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Transform: AWS::SecretsManager-2020-07-23 Resources: . . . MySecretRotationSchedule: Type: AWS::SecretsManager::RotationSchedule DependsOn: SecretRDSInstanceAttachment Properties: SecretId: !Ref MyRDSInstanceRotationSecret HostedRotationLambda: RotationType: MySQLSingleUser RotationLambdaName: SecretsManagerRotation VpcSecurityGroupIds: !GetAtt TestVPC.DefaultSecurityGroup VpcSubnetIds: Fn::Join: - "," - - Ref: TestSubnet01 - Ref: TestSubnet02 RotationRules: AutomaticallyAfterDays: 30