問題の説明
PostObject リクエストでは、x-amz-server-side-encryption-aws-kms-key-id フォームフィールドはサポートされていません。ただし、リクエストにはこのようなフォームフィールドが含まれています。
原因
オブジェクトをアップロードするために Amazon S3 と互換性のある PostObject リクエストを開始し、リクエスト本文で x-amz-server-side-encryption-aws-kms-key-id フォームフィールドを指定します。ただし、このようなフォームフィールドはリクエスト本文ではサポートされていません。その結果、リクエストエラーが報告されます。
例
次のサンプルコードは、リクエスト本文の例を示しています。この例では、x-amz-server-side-encryption-aws-kms-key-id フォームフィールドが指定されています。このようなフォームフィールドはリクエスト本文ではサポートされていません。
POST / HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Content-Length: 6443500495
Date: Sat, 18 Feb 2023 05:17:02 GMT
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryW0DET1iaBMeAOBg3
Host: example-bucket.oss-cn-hangzhou.aliyuncs.com
------WebKitFormBoundaryW0DET1iaBMeAOBg3
Content-Disposition: form-data; name="key"
big.img
------WebKitFormBoundaryW0DET1iaBMeAOBg3
Content-Disposition: form-data; name="x-amz-server-side-encryption-aws-kms-key-id"
abc
------WebKitFormBoundaryW0DET1iaBMeAOBg3
Content-Disposition: form-data; name="policy"
eyJleHBpcmF0aW9uIjoiMjAyMy0wMi0xOFQxMzoxOTowMC4wMDBaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMTA0ODU3NjAwMF1dfQ==
------WebKitFormBoundaryW0DET1iaBMeAOBg3
Content-Disposition: form-data; name="AWSAccessKeyId"
LTAI****************
------WebKitFormBoundaryW0DET1iaBMeAOBg3
Content-Disposition: form-data; name="success_action_status"
200
------WebKitFormBoundaryW0DET1iaBMeAOBg3
Content-Disposition: form-data; name="signature"
miAoLVohS5*****WEXyC3wVecaQ=
------WebKitFormBoundaryW0DET1iaBMeAOBg3
Content-Disposition: form-data; name="file"; filename="big.img"
Content-Type: application/octet-stream
***
------WebKitFormBoundaryW0DET1iaBMeAOBg3--
解決策
リクエスト本文から x-amz-server-side-encryption-aws-kms-key-id フォームフィールドを削除します。
関連情報
PostObject 操作の詳細については、「PostObject」をご参照ください。
フォームアップロードを使用して Web クライアントから Object Storage Service (OSS) にデータを転送する方法の詳細については、「JavaScript を使用してクライアントに署名を追加し、OSS にデータをアップロードする」をご参照ください。
PostObject 操作の一般的なエラーとトラブルシューティング方法の詳細については、「PostObject」をご参照ください。