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
Enregistrer un commentaire