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

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