Ледник AWS с JS SDK - InvalidParameterValueException: недопустимая длина содержимого: 0 - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь отправить данные в Glacier с помощью JavaScript SDK. Я внимательно слежу за примером кода в пакете NPM , но получаю код ответа 400 и ошибку.

Текстовый файл, который я отправляю, не пустой.

Согласно это тело также должно быть строкой или блобом - я пробовал это, но получаю тот же результат.

Я использую дефис для accountId, так как учетная запись должна идентифицироваться ключами доступа, опять же согласно this .

Я не тот, кто настраивает AWS на бэкэнде, но я был уверен, что все эти кредиты верны: на самом деле, если я изменяю секретный ключ, я получаю ответ 403, поэтому я достаточно уверен, что эта ошибка "нисходящая" "этого.

Выполнение полного следующего скрипта:

require('dotenv').load()

const { GlacierClient } = require('@aws-sdk/client-glacier-node/GlacierClient')
const { UploadArchiveCommand } = require('@aws-sdk/client-glacier-node/commands/UploadArchiveCommand')
const awsConfig = require('aws-config')
const fs = require('fs')
const path = require('path')

const glacier = new GlacierClient(awsConfig({
  region: 'us-east-1',
  sslEnabled: true,
  maxRetries: 3,
  accessKeyId: process.env.AWS_ACCESS_KEY_ID,
  secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
  timeout: 15000
}))

const params = {
  accountId: '-',
  vaultName: process.env.AWS_GLACIER_VAULT_NAME,
  body: fs.createReadStream(path.join(__dirname, 'myfile.txt'))
}
const uploadArchiveCommand = new UploadArchiveCommand(params)
glacier.send(uploadArchiveCommand).then(console.log).catch(console.error)

Получите эту ошибку:

{ InvalidParameterValueException: Invalid Content-Length: 0
    at RestParser.exports.jsonErrorUnmarshaller [as parseServiceException] (/home/casey/Documents/code/manuscripts-app/shackles.io/node_modules/@aws-sdk/json-error-unmarshaller/build/index.js:36:70)
    at /home/casey/Documents/code/manuscripts-app/shackles.io/node_modules/@aws-sdk/protocol-rest/build/RestParser.js:27:29
    at <anonymous>
    at process._tickDomainCallback (internal/process/next_tick.js:229:7)
  name: 'InvalidParameterValueException',
  message: 'Invalid Content-Length: 0',
  details: 
   { type: 'Client',
     code: 'InvalidParameterValueException',
     message: 'Invalid Content-Length: 0' },
  '$metadata': 
   { httpHeaders: 
      { 'x-amzn-requestid': 'HpR7HsuG7sSTOw0zckkqlHhVZvz2o8t7btwVBrNfxCuI2Lw',
        'content-type': 'application/json',
        'content-length': '95',
        date: 'Mon, 15 Apr 2019 21:14:27 GMT',
        connection: 'close' },
     httpStatusCode: 400,
     requestId: 'HpR7HsuG7sSTOw0zckkqlHhVZvz2o8t7btwVBrNfxCuI2Lw',
     extendedRequestId: undefined,
     cfId: undefined,
     retries: 0,
     totalRetryDelay: 0 } }

У меня довольно ограниченный опыт работы с AWS: любая помощь будет очень признательна.

...