Предопределенный URL-адрес создает ошибку - Nodejs AWS SDK S3 - PullRequest
0 голосов
/ 20 сентября 2019

Я генерирую предварительно назначенные URL-адреса S3, используя NodeJS AWS SDK.Вот мой код

const s3 = new AWS.S3({accessKeyId: IAM_USER_KEY, secretAccessKey:IAM_USER_SECRET});

const myKey = 'test.csv';
const signedUrlExpireSeconds = 60 * 5;

const url = await s3.getSignedUrl('getObject', {
  Bucket: BUCKET_NAME,
  Key: myKey,
  Expires: signedUrlExpireSeconds,
})

console.log(url)

, и когда я захожу на URL с помощью браузера, он показывает эту ошибку

<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Key>test.csv</Key>
<RequestId>EAFAC43D236CAFDF</RequestId>
<HostId>
knOGCpoUWq4TaRJmkx+ztWFliPOSABdnineRyNhhkqc/ahgPTpYSA+Aawmj5w2odWMt2kk3fGhY=
</HostId>
</Error>

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

1 Ответ

3 голосов
/ 21 сентября 2019

NoSuchKey - это ошибка 404, а не 400.

Здесь ключом является ключ объекта.

<Key>test.csv</Key>

Нет файла в корне этого сегмента с именем test.csv.Ключи объектов чувствительны к регистру.

Если вы не видите объект в консоли S3, то это, конечно, проблема.

Если объект отображается в папке в консоли, его необходимо включить включ - для файла test.csv внутри папки documents Key, который вам нужно использовать, это documents/test.csv.

Если вы видите этот объект в консоли, проверьте ссылку в консоли на наличиеспециальные непечатаемые символы, такие как %0A (перевод строки), которые вы могли случайно добавить при загрузке объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...