🐕
A header you provided implies functionality that is not implemented
概要
- AWS SDK for JavaScript v3 でS3 バケットにPutObject しようとしたら下記のエラーが発生
A header you provided implies functionality that is not implemented
- 結論から言うとアップロードしようとしているデータが空だったのが原因
- 中身のあるデータを添えたら成功した
コードとエラー内容
const body = fs.createReadStream(PATH)
await s3.send(
new PutObjectCommand({
Bucket: BUCKET,
Key: KEY,
Body: body,
}),
)
{
"errorType": "NotImplemented",
"errorMessage": "A header you provided implies functionality that is not implemented",
"name": "NotImplemented",
...
}
詳細
- エラーの内容的には、SDK がS3 のREST エンドポイントにリクエストした際に、AWS が定義している必須のheader 情報が足りていないという物
- PutObjectCommand で指定したBody の中身が空文字列だとSDKが
Content-Length
ヘッダをつけずにリクエスト送信してしまうのが原因な模様 - 中身のあるデータを添えたら成功した
Discussion