node s3_listbuckets.js
Error TypeError [ERR_INVALID_CHAR]: Invalid character in header content ["Authorization"]
at ClientRequest.setHeader (_http_outgoing.js:470:3)
at new ClientRequest (_http_client.js:219:14)
at Object.request (https.js:305:10)
at features.constructor.handleRequest
...
XXX
...
{
message: 'Invalid character in header content ["Authorization"]',
code: 'NetworkingError',
region: 'XXX',
hostname: 's3.XXX.amazonaws.com',
retryable: true,
time: XXX
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Оказывается, мои учетные данные AWS скопировали лишний символ, который отлично работал с другими сервисами AWS, но не с S3 Bucket. ""
Для всех, кто идет по этому пути. Если вы получаете эту ошибку, то на 99,9% она вызвана опечаткой в предоставленных учетных данных AWS. Это может быть лишний \n или просто пробел в конце строки или отсутствующий символ. Но если вы умны, как я, то ваша опечатка может быть неуловимой, например:
Я погуглил «коды регионов aws», чтобы получить правильный код для нашего восточного региона. Google предоставил таблицу со списком кодов, поэтому я скопировал и вставил ее в свои учетные данные, и я продолжал получать эту Invalid character... проблему.
Только когда я получил файл учетных данных от коллеги, ошибка исчезла. Итак, я сравнил строку за строкой и не заметил абсолютно никакой разницы в символах... Но я ошибался. Я взял код региона из своей конфигурации и поместил их в Конвертер Юникода и обнаружил это:
us‑east‑1 переводится как us\u{2011}east\u{2011}1
В то время как
us-east-1 переводится как us-east-1
Вы можете догадаться, какую версию я скопировал из Google? ... Я усвоил урок, и я надеюсь, что любой, кто отважится здесь, не совершит моей ошибки.