我遇到了aws-cli的问题,我做了yum更新,更新了awscli(以及其他内容),现在awscli在使用SignatureDoesNotMatch的大文件(例如5.1 Gb)上失败了。 具有较小文件的完全相同的命令(到同一个桶)有效。 如果我使用python中的boto,那么大文件仍然可以工作。
它复制了所有部分,但它看起来像是两个(即它被计算到745个部分中的743个),然后出现错误信息。
看起来像awscli中的错误? 我在谷歌周围时找不到任何关于它的信息。
这都是在ec2实例上执行的。
$ /usr/bin/aws --version
aws-cli/1.5.4 Python/2.6.9 Linux/3.14.20-20.44.amzn1.x86_64
$ ls -hl
-rw-rw-r-- 1 user user 4 Nov 4 21:14 small
-rw-rw-r-- 1 user user 5.1G Nov 4 20:02 big
$ /usr/bin/aws s3 cp small s3://mybucket/uploaded.ext
upload: ./small to s3://mybucket/uploaded.ext
$ /usr/bin/aws s3 cp big s3://mybucket/uploaded.ext
upload failed: ./big to s3://mybucket/uploaded.ext
A client error (SignatureDoesNotMatch) occurred when calling the UploadPart operation: The request signature we calculated does not match the signature you provided. Check your key and signing method.
编辑:以为我找到了它,但仍然有这个问题。我更喜欢坚持使用awscli,因为它是我们在整个代码中使用的东西,它比boto快得多(至少在它工作时)
Edit2:它实际上变得越来越糟,我可以在控制台中重复相同的复制命令,有时它会通过,有时它不会
答案 0 :(得分:1)
aws-cli当然可以处理5GB及更高版本的上传。
我启动了一个EC2实例,并且能够成功完成它:
$ /usr/bin/aws --version
aws-cli/1.3.6 Python/2.6.9 Linux/3.10.35-43.137.amzn1.x86_64
$ dd if=/dev/zero of=small bs=1K count=1
1+0 records in
1+0 records out
1024 bytes (1.0 kB) copied, 0.000388469 s, 2.6 MB/s
$ dd if=/dev/zero of=big bs=5M count=1000
1000+0 records in
1000+0 records out
5242880000 bytes (5.2 GB) copied, 73.733 s, 71.1 MB/s
$ aws s3 mb s3://target77
make_bucket: s3://target77/
$ aws s3 cp small s3://target77/small
upload: ./small to s3://target77/small
$ aws s3 cp big s3://target77/big
upload: ./big to s3://target77/big
$ aws s3 ls s3://target77/
2014-11-17 09:44:42 5242880000 big
2014-11-17 09:44:29 1024 small
到目前为止,非常好!
然后我更新到更新版本的CLI并再次尝试:
$ sudo yum update
...
$ /usr/bin/aws --version
aws-cli/1.5.5 Python/2.6.9 Linux/3.10.35-43.137.amzn1.x86_64
$ aws s3 cp small s3://target77/small
upload: ./small to s3://target77/small
$ aws s3 cp big s3://target77/big
upload failed: ./big to s3://target77/bigs) remaining
A client error (SignatureDoesNotMatch) occurred when calling the UploadPart operation: The request signature we calculated does not match the signature you provided. Check your key and signing method.
我在同一地区和不同地区重复了EC2实例和S3存储桶的实验。这两种情况最终都给出了错误,但有时也有效。
因此,更新的aws-cli似乎确实存在问题。另外,错误发生在随机数量的'部分之后。当我尝试重新执行复制命令时。
SignatureDoesNotMatch
错误与安全凭据有关,而不是与Amazon S3服务有关。这听起来类似于人们在GitHub上报告的问题:重复SignatureDoesNotMatch client error #995
因此,我建议使用早期版本的aws-cli,直到问题得到解决。
答案 1 :(得分:0)