1

当我尝试从一个RDS实例下载所有日志文件时,在某些情况下,我在我的 python 输出中发现了这个错误:

调用 DownloadDBLogFilePortion 操作时发生错误 (InvalidParameterValue):此文件包含二进制数据,应下载而不是查看。

我正确管理分页和节流(使用标记参数和睡眠功能)。

这是我的召唤:

log_page=request_paginated(rds,DBInstanceIdentifier=id_rds,LogFileName=log,NumberOfLines=1000)

rds-> boto3 资源

这是我的功能的定义:

def request_paginated(rds,**kwargs):
     return rds.download_db_log_file_portion(**kwargs)

就像我说的,这个函数大部分时间都有效,但有时它会返回:

“调用 DownloadDBLogFilePortion 操作时发生错误(InvalidParameterValue):此文件包含二进制数据,应下载而不是查看”

你能帮我吗?:)

更新:问题是下载包含不可打印符号的日志文件的已知问题。我将尽快尝试 aws 支持提供的建议解决方案

最新更新:这是我与 aws 支持团队讨论的摘录:

使用基于 boto 的 AWS cli 时存在非二进制字符的已知问题,但在使用较旧的基于 Java 的 cli 时不存在此问题。

目前无法解决您在使用基于 boto 的 AWS cli 时遇到的问题,解决方法是从基于 Java 的 cli 进行 API 调用

aws 团队已经意识到这个问题,并且正在努力解决这个问题,但是没有关于何时发布的 ETA。所以解决方案是:使用java API

朱塞佩

4

2 回答 2

2

最新更新:这是我与 aws 支持团队讨论的摘录:

使用基于 boto 的 AWS cli 时存在非二进制字符的已知问题,但在使用较旧的基于 Java 的 cli 时不存在此问题。

目前无法解决您在使用基于 boto 的 AWS cli 时遇到的问题,解决方法是从基于 Java 的 cli 进行 API 调用

aws 团队已经意识到这个问题,并且正在努力解决这个问题,但是没有关于何时发布的 ETA。所以解决方案是:使用java API

朱塞佩

于 2016-05-05T13:29:45.223 回答
0

http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/CommonErrors.html

InvalidParameterValue :为输入参数提供了无效或超出范围的值。

boto 中的参数无效意味着数据传递不符合要求。可能您指定的名称无效,变量 id_rds 或 LogFileName 可能有问题等。您必须遵守函数参数要求。

response = client.download_db_log_file_portion(
  DBInstanceIdentifier='string',
  LogFileName='string',
  Marker='string',
  NumberOfLines=123
)

(更新)例如,LogFileName 必须是 RDS 实例中存在的确切文件名。

对于日志文件,请确保日志文件存在于实例中。使用此 AWS CLI 进行快速检查

aws rds describe-db-log-files --db-instance-identifier <my-rds-name> 

还要检查 Marker (string) 和 NumberOfLines (Integer)。类型不匹配或超出范围。跳过它们,因为它们不是必需的,然后再测试它。

于 2016-04-29T11:21:26.887 回答