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

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Détecter les appuis sur les touches fléchées en JavaScript

Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"