ホームページ  >  記事  >  バックエンド開発  >  PutObject の SignatureDoesNotMatch - GetObject を処理します

PutObject の SignatureDoesNotMatch - GetObject を処理します

PHPz
PHPz転載
2024-02-09 15:00:101127ブラウズ

PutObject 上的 SignatureDoesNotMatch - 处理 GetObject

#phpエディターStrawberryがこの記事で「SignatureDoesNotMatch on PutObject - Processing GetObject」の問題の対処方法を紹介します。オブジェクトのアップロードおよび取得操作を実行すると、このエラー プロンプトが表示されることがあります。これは、要求された署名の不一致が原因である可能性があります。この記事では、この問題の原因を詳しく説明し、このエラーをスムーズに処理し、オブジェクトのアップロードと取得の操作を正常に続行できるようにするための解決策を示します。

質問内容

s3でputobjectの署名付きURLを作成しようとしています。 getobject でこれを行うために使用したメソッドは正常に機能するため、資格情報は有効です。

すべてのパブリック アクセス ブロックをオフにしたので、パブリックになるはずです。

バケットポリシー:

リーリー

バケットコア:

リーリー

s3 ライブラリを使用してみましたが、今回は s3manager を使用しています。ただし、署名付き URL を使用してオブジェクトを配置しようとすると、署名が一致しないことを示す XML エラーが表示されます。

以下は、有効な get と失敗した put のコードです。

リーリー

curl を使用してファイルを配置する方法は次のとおりです。 curl -x put -t some-file.jpg "https://adobe-sign-test.s3.eu-north-1.amazonaws.com/hejsan.jpg?x-amz-algorithm=aws4-hmac -sha256&x- amz-credential=akiaqjglaa​​ktl3qqfz73/20230706/eu-north-1/s3/aws4_request&x-amz-date=20230706t074846z&x-amz-expires=3600&x-amz-signedheaders=host&x-amz-signature=5eb429ee8e fc 1 c8ffcae64d77a588119cfde81512bc5c4516a1120b20e26cac7"

これは put 操作のエラー メッセージです:

{
    "version": "2012-10-17",
    "statement": [
        {
            "sid": "allowputobject",
            "effect": "allow",
            "principal": "*",
            "action": "s3:putobject",
            "resource": "arn:aws:s3:::adobe-sign-test/*"
        }
    ]
}

回避策

aws SDK コードベースには、get と put および役立つ可能性のある s3 の事前署名済み URL を備えた example go があります。 Readme ファイルの指示に従って、リポジトリのクローンを作成し、サンプルを自分で実行できます。この例にはメソッドと、その実行方法を示すコンソール アプリケーションが含まれています。

リーリー

以上がPutObject の SignatureDoesNotMatch - GetObject を処理しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。