Сбой подключения AWS EC2 к MongoDB Atlas, не удалось найти пользователя

Я пытаюсь подключиться к кластеру atlas из ec2, но если я пытаюсь использовать код (nodejs) или cli, я получаю эту ошибку:

MongoError: Could not find user "arn:aws:sts::030800513199:assumed-role/designspecs-staging-design-Api-1U4X5W-InstanceRole-1TTX7XR8B1D7N/*" for db "$external"

Это правильная роль, проблема в том, что зарегистрированный номер в атласе - это роль: arn:aws:iam::030800513199:role/designspecs-staging-design-Api-1U4X5W-InstanceRole-1TTX7XR8B1D7N

И я не могу зарегистрировать STS, потому что атлас говорит, что это недопустимый номер.

Это роль экземпляра, которую должен получить mongodb. Если я помещаю в файл .env ключи пользователя iam и делаю этого пользователя пользователем базы данных для Atlas, он работает (поскольку полученный arn правильный).

Я что-то упускаю? Как я могу подключить EC2 к атласу без использования паролей?

Для полноты я должен сказать, что я не беру на себя какую-либо роль явно, это код подключения:

const remoteDb = `${MONGO_DATABASE_HOST}/${MONGO_DATABASE_NAME}?authSource=%24external&authMechanism=MONGODB-AWS&retryWrites=true&w=majority`;
const localDb = `mongodb://${MONGO_DATABASE_USERNAME}:${MONGO_DATABASE_PASSWORD}@${MONGO_DATABASE_HOST}:27017/${MONGO_INITDB_DATABASE}`;

const mongoURL = process.env.END !== 'dev' ? remoteDb : localDb;

const connect = () =>
    mongoose
        .connect(mongoURL, config)
        .then(() => {
            console.info('[MongoDB] CONNECTED!');
        })
        .catch(err => {
            console.error(err);
            console.error(`[MongoDB] ERRROR: NON CONNECTED! -> ${mongoURL}`);
        });

connect();

module.exports = mongoose.connection;

Где MONGO_DATABASE_HOST — это строка подключения srv, когда я нахожусь на удаленном компьютере. Вся инфраструктура построена с помощью AWS Cloudformation, роль связана с экземпляром через AWS::IAM::InstanceProfile.

Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
0
0
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я обнаружил, что это проблема, связанная с пользовательской областью atals. Раньше пользователь существовал, проблема была в том, что он не имел права видеть конкретный кластер, к которому я хотел подключиться. Эта ошибка была вызвана тем, что я использовал шаблон быстрого запуска aws для развертывания mongodb, который ограничивает область действия пользователя некоторыми ресурсами, удаляя эту часть, теперь она работает.

Другие вопросы по теме