通过Perl列出的Amazon S3 Bucket正在抛出XML错误

时间:2014-11-30 10:18:28

标签: perl amazon-web-services amazon-s3

我正在尝试列出存储桶中的所有元素(Amazon S3)。直到上个月,这个工作正常。现在抛出错误:

代码:

    use Amazon::S3;
   my $s3 = Amazon::S3->new({   aws_access_key_id     => $aws_access_key_id,
         aws_secret_access_key => $aws_secret_access_key,
         retry                 => 1
     }
     );
     my $bucket = $s3->bucket("mybucket");
    $response = $bucket->list;

这会引发以下错误:

Character reference  refers to an illegal XML character () [Ln: 2, Col: 8456606880]

是否因为存储桶中的元素数量?它超过100k。

任何解决此问题的解决方案?

1 个答案:

答案 0 :(得分:1)

虽然它不是一个完美的解决方案,但我只是在下面的perl模块中注释掉了两行,它运行良好。

/usr/local/share/perl5/XML/SAX/PurePerl.pm

评论行(387和388):

    383     if ($data =~ /^#x([0-9a-fA-F]+);/) {
    384         my $ref = $1;
    385         $reader->move_along(length($ref) + 3);
    386         my $char = chr_ref(hex($ref));
    387         #$self->parser_error("Character reference &#$ref; refers to an illegal XML character ($char) 1", $reader)
    388         #    unless $char =~ /$SingleChar/o;
    389         $self->characters({ Data => $char });
    390         return 1;
    391     }

不知道为什么它在以后工作得很好的时候必须瘫痪。