Heroku se bloque après la mise à niveau de Heroku Redis de Hobby à Premium 0

Problème

Lorsque je suis passé du plan Heroku Redis Hobby au plan Heroku Redis Premium 0, Heroku n'arrêtait pas de planter avec une erreur H10.


Solution du problème

Cause

Redis 6 nécessite TLS pour se connecter. Cependant, Heroku gère les demandes du niveau du routeur au niveau de l'application impliquant des certificats auto-signés. Il s'avère que Heroku termine SSL au niveau du routeur et les demandes sont transmises à partir de là à l'application via HTTP alors que tout est derrière le pare-feu et les mesures de sécurité de Heroku.

Liens qui ont permis de retrouver la cause :

https://ogirginc.github.io/en/heroku-redis-ssl-error

Comment activer TLS pour Redis 6 sur Sidekiq?

Solution

Personnalisez les options transmises à Redis afin que tls.rejectUnauthorized soit défini sur false.

const Queue = require('bull');
const redisUrlParse = require('redis-url-parse');
const REDIS_URL = process.env.REDIS_URL || 'redis://127.0.0.1:6379';
const redisUrlParsed = redisUrlParse(REDIS_URL);
const { host, port, password } = redisUrlParsed;
const bullOptions = REDIS_URL.includes('rediss://')
? {
redis: {
port: Number(port),
host,
password,
tls: {
rejectUnauthorized: false,
},
},
}
: REDIS_URL;
const workQueue = new Queue('work', bullOptions);

Commentaires

Posts les plus consultés de ce blog

Comment signer la connexion OKEx API version 5 avec websockets ?

La fonction GCP Cloud pour écrire des données dans BigQuery s'exécute avec succès, mais les données n'apparaissent pas dans la table BigQuery

Le shell POSIX (sh) redirige stderr vers stdout et capture stderr et stdout dans des variables