9

Amazon S3 と CloudFront - Linkに PHP クラスを使用しています。しかし、ファイルをバケットにアップロードしようとすると、次のエラーが発生します。

[SignatureDoesNotMatch] 計算したリクエストの署名が、提供された署名と一致しません。キーと署名方法を確認してください。

修正方法は?

ありがとう。

4

4 に答える 4

9

Amazon にサインアップすると、自分でキー ペアを作成できます (Amazon はこれらをアクセス キー ID とシークレット アクセス キーと呼びます)。

これら 2 つは、Amazon の Web サービスへのリクエストに署名するために使用されます。Amazon は署名を再計算し、リクエストに含まれていた署名と一致するかどうかを比較します。そうすれば、シークレット アクセス キーをネットワーク経由で送信する必要がなくなります。

「署名が一致しません」と表示された場合は、間違ったシークレット アクセス キーを使用した可能性が高いです。アクセス キーとシークレット アクセス キーを再確認して、それらが正しいことを確認できますか?

于 2012-05-03T13:55:24.897 に答える
5

個人的には、メタデータに含まれていた文字が原因でこのエラーを受け取りました。

問題の文字は、Unicode では「\u2013」であり、「-」とは異なる「-」文字でした。

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

ドキュメント http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#UserMetadataからのメモ...

Amazon S3 は、ユーザー定義のメタデータを小文字で保存します。各名前と値のペアは、REST を使用する場合は US-ASCII に準拠し、SOAP または POST を介したブラウザーベースのアップロードを使用する場合は UTF-8 に準拠する必要があります。

于 2015-06-02T15:43:59.810 に答える