#amazon-web-services #aws-lambda #sequelize.js #amazon-rds
#amazon-web-services #aws-lambda #sequelize.js #amazon-rds
Вопрос:
Мы настраиваем наши параметры продолжения со следующей информацией, чтобы попытаться подключиться к экземплярам AWS RDS Proxy reader / writer
let sequelizeOptions: any = {
logging: console.log,
dialect: 'mysql',
dialectModule: mysql2,
dialectOptions: {decimalNumbers: true},
replication: {
read: [{host: readonlyHost, password}],
write: {host: defaultHost, password},
},
username,
port,
database,
models: [modelPath '/!(index).*'],
};
const signer = new AWS.RDS.Signer({
region: region,
hostname: {defaultHost},
port: port,
username: username,
});
const IamAuthToken = signer.getAuthToken({username});
const readonlySigner = new AWS.RDS.Signer({
region: region,
hostname: {readonlyHost},
port: port,
username: username,
});
const readonlyIamAuthToken = readonlySigner.getAuthToken({username});
sequelizeOptions.replication.read[0].password = readonlyIamAuthToken;
sequelizeOptions.replication.write.password = IamAuthToken;
Это отлично работает при использовании экземпляра записи, но когда мы пытаемся выполнить чтение из таблицы, мы получаем следующую ошибку. {readonlyHost}
и {defaultHost}
используется вместо конечной точки прокси-сервера AWS в целях безопасности.
2021-12-09T21:12:57.108Z [INFO] [proxyEndpoint={readonlyHost}] [clientConnection=12345678] Proxy authentication with IAM authentication failed for user "{username}" with TLS on. Reason: The proxy couldn't authenticate using IAM. The expected "Proxy endpoint DNS name" value is "{readonlyHost}" but was "{defaultHost}". Generate a new authentication token and use it in a new client connection.
Комментарии:
1. Вероятно, это не имеет значения, но почему
replication.read
массив содержит только один элемент иreplication.write
является объектом?2. @MetroSmurf Мы просто следовали документации. sequelize.org/master/manual/read-replication.html