如何 运行 Cloud Formation 模板中的 SQL 查询以在 AWS RDS 中启用 Delayed_Durability
How to run a SQL query in Cloud Formation template to enable Delayed_Durability in AWS RDS
我有一个用于在 RDS 中创建 SQL 数据库的 Cloud Formation 模板,我想通过 运行 执行此查询在其中默认启用 Delayed_Durability 功能:
ALTER DATABASE dbname SET DELAYED_DURABILITY = FORCED;
有没有办法在通过 CF 模板创建数据库实例后立即 运行 此查询?
我的 CF 模板如下所示:
"Type":"AWS::RDS::DBInstance",
"Properties":{
"AllocatedStorage":"200",
"AutoMinorVersionUpgrade":"false",
"BackupRetentionPeriod":"1",
"DBInstanceClass":"db.m4.large",
"DBInstanceIdentifier":"mydb",
"DBParameterGroupName": {
"Ref": "MyDBParameterGroup"
},
"DBSubnetGroupName":{
"Ref":"dbSubnetGroup"
},
"Engine":"sqlserver-web",
"EngineVersion":"13.00.4422.0.v1",
"LicenseModel":"license-included",
"MasterUsername":"prod_user",
"MasterUserPassword":{ "Ref" : "dbpass" },
"MonitoringInterval":"60",
"MonitoringRoleArn": {
"Fn::GetAtt": [
"RdsMontioringRole",
"Arn"
]
},
"PreferredBackupWindow":"09:39-10:09",
"PreferredMaintenanceWindow":"Sun:08:58-Sun:09:28",
"PubliclyAccessible": false,
"StorageType":"gp2",
"StorageEncrypted": true,
"VPCSecurityGroups":[
{
"Fn::ImportValue":{
"Fn::Sub":"${NetworkStackName}-RDSSecGrp"
}
}
],
"Tags":[
{
"Key":"Name",
"Value":"my-db"
}
]
}
}
Is there a way to run this query right after db instance is created through CF template?
视情况而定。如果您想从 CloudFormation (CFN) 中执行此操作,那么遗憾的是,您无法使用普通 CFN 执行此操作。要从 CFN 做到这一点,您必须开发一个 custom resource。资源将采用 lambda 函数 的形式。您可以将数据库详细信息传递给 CFN 中的函数,它可以 运行 并执行您的查询。它还可以 return 您想要的任何结果到您的 CFN 以供进一步使用。
相比之下,如果您使用 AWS CLI 或 SDK 创建 CFN 堆栈,那么在 create-stack
调用完成后,您可以 运行 您的查询来自 bash 或您使用的任何编程语言部署您的堆栈。
我有一个用于在 RDS 中创建 SQL 数据库的 Cloud Formation 模板,我想通过 运行 执行此查询在其中默认启用 Delayed_Durability 功能:
ALTER DATABASE dbname SET DELAYED_DURABILITY = FORCED;
有没有办法在通过 CF 模板创建数据库实例后立即 运行 此查询? 我的 CF 模板如下所示:
"Type":"AWS::RDS::DBInstance",
"Properties":{
"AllocatedStorage":"200",
"AutoMinorVersionUpgrade":"false",
"BackupRetentionPeriod":"1",
"DBInstanceClass":"db.m4.large",
"DBInstanceIdentifier":"mydb",
"DBParameterGroupName": {
"Ref": "MyDBParameterGroup"
},
"DBSubnetGroupName":{
"Ref":"dbSubnetGroup"
},
"Engine":"sqlserver-web",
"EngineVersion":"13.00.4422.0.v1",
"LicenseModel":"license-included",
"MasterUsername":"prod_user",
"MasterUserPassword":{ "Ref" : "dbpass" },
"MonitoringInterval":"60",
"MonitoringRoleArn": {
"Fn::GetAtt": [
"RdsMontioringRole",
"Arn"
]
},
"PreferredBackupWindow":"09:39-10:09",
"PreferredMaintenanceWindow":"Sun:08:58-Sun:09:28",
"PubliclyAccessible": false,
"StorageType":"gp2",
"StorageEncrypted": true,
"VPCSecurityGroups":[
{
"Fn::ImportValue":{
"Fn::Sub":"${NetworkStackName}-RDSSecGrp"
}
}
],
"Tags":[
{
"Key":"Name",
"Value":"my-db"
}
]
}
}
Is there a way to run this query right after db instance is created through CF template?
视情况而定。如果您想从 CloudFormation (CFN) 中执行此操作,那么遗憾的是,您无法使用普通 CFN 执行此操作。要从 CFN 做到这一点,您必须开发一个 custom resource。资源将采用 lambda 函数 的形式。您可以将数据库详细信息传递给 CFN 中的函数,它可以 运行 并执行您的查询。它还可以 return 您想要的任何结果到您的 CFN 以供进一步使用。
相比之下,如果您使用 AWS CLI 或 SDK 创建 CFN 堆栈,那么在 create-stack
调用完成后,您可以 运行 您的查询来自 bash 或您使用的任何编程语言部署您的堆栈。