我在CloudFormation中设置了一个Aurora Cluster(无服务器 - PostgreSQL(,我想将日志保留期配置为大约7天,但我无法找到在哪里设置此设置。
这是我对DBCluster的CloudFormation定义:
AuroraDBCluster:
Type: AWS::RDS::DBCluster
DeletionPolicy: Delete
UpdateReplacePolicy: Delete
Properties:
Engine: aurora-postgresql
EngineMode: serverless
EngineVersion: 10.7
DatabaseName: test-db
DeletionProtection: false
ScalingConfiguration:
AutoPause: True
MaxCapacity: 8
MinCapacity: 2
SecondsUntilAutoPause: 300
VpcSecurityGroupIds:
- !Ref AuroraClusterSecurityGroup
Port: !Ref DBPort
MasterUsername:
!Join ['', ['{{resolve:secretsmanager:', !Ref AuroraMasterSecret, ':SecretString:username}}' ]]
MasterUserPassword:
!Join ['', ['{{resolve:secretsmanager:', !Ref AuroraMasterSecret, ':SecretString:password}}' ]]
DBSubnetGroupName: !Ref DBSubnetGroup
BackupRetentionPeriod: 35
DBClusterParameterGroupName: !Ref RDSDBClusterParameterGroup
StorageEncrypted: true
KmsKeyId: !Ref AuroraKMSCMK
我创建了一个不同的日志组,如下所示:
AuroraClusterLogGroup:
Type: "AWS::Logs::LogGroup"
Properties:
RetentionInDays: 7
LogGroupName: !Join ["", ["/aws/rds/cluster/", !Ref AuroraDBCluster, /postgresql]]
但是当我部署堆栈时,它说:
CREATE_FAILED AWS::Logs::LogGroup AuroraClusterLogGroup /aws/rds/cluster/aurora-serverless-db-ufeihfhef74465/postgresql already exists
因为(我认为(AuroraDBCluster资源创建了自己的同名日志组。
我已经查看了AWS::RDS::DBCluster
文档,但没有找到任何有关日志保留的参考资料。
在这种情况下我该怎么办?
谢谢!
如果 Aurora 已经创建了自己的日志组,则无法从 CloudFormation 更改它。执行此操作的唯一方法是在模板中使用自定义资源。
在自定义资源中,您可以使用放置保留策略来修改所选日志组的保留时间。
我能够按照建议自己解决这个限制 https://github.com/aws-cloudformation/cloudformation-coverage-roadmap/issues/190#issuecomment-1318541109
- 提取集群标识符作为参数,所以你可以先使用 Dependson 创建日志组 下面是一个示例堆栈 缺点:每当修改任何需要替换的 DBCluster 参数时,都需要使用新的参数值,否则堆栈更新将失败。
Parameters:
ClusterId:
Type: string
Resources:
DBCluster:
Type: AWS::RDS::DBCluster
DependsOn: DBClusterLogGroupError
Properties:
DBClusterIdentifier: !Ref ClusterId
DatabaseName: foo
Engine : aurora
EngineMode : serverless
EngineVersion : 5.6.10a
MasterUsername: testuser
MasterUserPassword: testpassword
DBClusterLogGroupError:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: !Sub /aws/rds/cluster/${ClusterId}/error
RetentionInDays: 90
<小时 />你提到,
但是当我部署堆栈时,它说:
CREATE_FAILED AWS::Logs::LogGroup AuroraClusterLogGroup /aws/rds/cluster/aurora-serverless-db-ufeihfhef74465/postgresql already exists
假设您实施了我上面提供的建议,您可以通过手动删除 CloudWatch 中的日志来解决此问题。然后运行此新模板。然后它将被重新创建,但这次是由CloudFormation本身创建的。