2012-04-23 41 views
7

Tôi đang sử dụng lớp PHP cho Amazon S3 và CloudFront - Link. Nhưng khi tôi cố gắng tải tệp lên một nhóm, tôi nhận được lỗi này:SignatureDoesNotMatch - Amazon S3 API

[SignatureDoesNotMatch] The request signature we calculated does not match the signature you provided. Check your key and signing method.

Cách khắc phục?

Cảm ơn.

Trả lời

8

Khi bạn đăng ký Amazon, bạn có thể tự tạo cho mình một cặp khóa (Amazon gọi các khóa truy cập đó và khóa truy cập bí mật).

Hai thiết bị đó được sử dụng để ký yêu cầu tới các dịch vụ web của Amazon. Amazon tính toán lại chữ ký và so sánh nếu nó khớp với chữ ký trong yêu cầu của bạn. Bằng cách đó, khóa truy cập bí mật không bao giờ cần được truyền qua mạng.

Nếu bạn nhận được "Chữ ký không khớp", rất có thể bạn đã sử dụng khóa truy cập bí mật sai. Bạn có thể kiểm tra lại khóa truy cập và khóa truy cập bí mật để đảm bảo chúng có chính xác không?

+0

Cảm ơn! Cách khắc phục sự cố này - http://goo.gl/QTdm4 –

+0

@ roman-nazarkin Vì vậy, vấn đề là vị trí nhóm? – awendt

+1

trong trường hợp của tôi có thêm khoảng trống trong tệp cấu hình/cài đặt có khóa bí mật, vì vậy nó đang truyền một ký tự 'tab' phụ trong" mật khẩu ", do đó làm mất hiệu lực chữ ký. – drzaus

4

Cá nhân tôi nhận được lỗi này do các ký tự nằm trong dữ liệu meta của tôi.

Ký tự có vấn đề là "-" chracter là "\ u2013" trong unicode và khác với "-".

$result = $s3->putObject(array(
    'Bucket'  => $bucket, 
    'Key'   => $keyname, 
    'Metadata' => [ 
     'name' => 'Terminology – Blah' 
    ] 
)); 

Một lưu ý từ các tài liệu http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#UserMetadata ...

Amazon S3 stores user-defined metadata in lowercase. Each name, value pair must conform to US-ASCII when using REST and UTF-8 when using SOAP or browser-based uploads via POST.

+1

ditto - khi thêm Siêu dữ liệu có khóa 'Cache-Control' vào đối tượng đã có khóa siêu dữ liệu 'cache-control', tôi nhận được lỗi này. – Joscha

0

Tôi có lỗi này với putObject() khi xác định một Key bắt đầu với nhân vật dấu gạch chéo (/) - sau khi loại bỏ các dấu gạch chéo nó làm việc khỏe.