如何将CloudFormation中RDS实例的PostgreSQL日志导出到CloudWatch?

时间:2019-07-10 12:48:56

标签: postgresql amazon-web-services amazon-cloudformation amazon-rds amazon-cloudwatch

我正在尝试从使用10.6版本的RDS实例获取postgreSQL日志,该版本是在cloudformation模板中设置的。当我在整个系统中运行它时,我会收到错误消息

  

您不能将日志类型“ Postgresql”与引擎版本postgres 10.6一起使用。有关受支持的日志类型,请参阅文档。

documentation看起来很简单。参数的字符串列表,以及postgreSQL supports Postgresql日志升级日志。我知道这是正确的,因为我能够通过AWS控制台导出这些日志。该文档没有提及期望使用什么字符串。因此,我尝试了“ postgres”,“ postgresql”,“ postgresql_log”等,但是没有发现任何问题。我确定我一定错过了一些重要的东西,但我找不到它,并且互联网上的the only example I have found无法启发我。

   RDSInstance:
        Type: AWS::RDS::DBInstance
        DependsOn: RDSMonitoringRole
        Properties:
            ****
            EnableCloudwatchLogsExports:
                - Postgresql
            MonitoringInterval: 60
            MonitoringRoleArn: !GetAtt ["RDSMonitoringRole", "Arn"]
            ****

    RDSMonitoringRole:
        Type: AWS::IAM::Role
        Properties:
            ManagedPolicyArns:
                - arn:aws:iam::aws:policy/service-role/AmazonRDSEnhancedMonitoringRole
            AssumeRolePolicyDocument:
                Version: '2008-10-17'
                Statement:
                    -
                        Effect: Allow
                        Principal:
                            Service: 'monitoring.rds.amazonaws.com'
                        Action: 'sts:AssumeRole'

3 个答案:

答案 0 :(得分:0)

对于其他任何人,我也为此感到困惑,docs也不是很有帮助。

直到我打开“ AWS CLI”部分:

aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql", "upgrade"]}'

那些价值观对我有用。

我发现您提到您已经尝试过它们,所以也许您遇到了版本限制?

  

只有PostgreSQL版本9.6.6和更高版本以及10.4和更高版本才支持将日志文件发布到CloudWatch Logs。

答案 1 :(得分:0)

文档令人困惑,但是如果仔细阅读,您会发现 在Publishing PostgreSQL Logs to CloudWatch Logs下写道:

您可以将以下日志类型发布到CloudWatch Logs for RDS for PostgreSQL:

PostgreSQL日志

升级日志(不适用于Aurora PostgreSQL)

导航到AWS CLI示例时:

1)您可以在以下位置看到:示例修改实例以将日志发布到CloudWatch Logs

该对象的键是EnableLogTypes,其值是一个数组 具有postgresqlupgrade的任意组合的字符串。

2)继续进行以下操作:示例创建实例以将日志发布到CloudWatch Logs

字符串可以是postgresqlupgrade的任意组合。


对于使用Aurora PostgreSQL的用户-摘自here

请注意以下几点:Aurora PostgreSQL支持发布日志 9.6.12及更高版本以及10.7和更高版本的CloudWatch Logs 以上。
在Aurora PostgreSQL中,只能发布PostgreSQL日志。
不支持发布升级日志。

答案 2 :(得分:0)

很晚了,但可能会帮助其他人:

根据文档https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html#cfn-rds-dbinstance-enablecloudwatchlogsexports

 RDSInstance:
        Type: AWS::RDS::DBInstance
        DependsOn: RDSMonitoringRole
        Properties:
            ****
            EnableCloudwatchLogsExports:
                - postgresql
            MonitoringInterval: 60
            MonitoringRoleArn: !GetAtt ["RDSMonitoringRole", "Arn"]
            ****