Вводить учетные данные AWS в скрипт / программу считается плохой практикой. Это связано с тем, что учетные данные могут быть случайно сохранены в хранилище исходного кода и выведены «в дикой природе». Это также затрудняет поворот учетных данных.
То, как вы предоставляете учетные данные, не влияет на то, должен ли работать вызов API.
Тот факт, что ваш код работает, когда у вас нет учетных данных, встроенных в код, свидетельствует о том, что учетные данные, хранящиеся в вашем файле ~.aws/credentials
, имеют правильные разрешения, а учетные данные, которые вы вставляете в код не имеют необходимых разрешений.
Поэтому вам следует сравнить учетные данные и определить, какие из них вы на самом деле хотите использовать.
Я бы порекомендовал вам создать конкретного пользователя IAM для этого приложения и ограничить разрешения, связанные с пользователем, только тем, что необходимо. Таким образом, если кто-то получает учетные данные, они ограничены в своих возможностях.
Более того, было бы лучше создать определенного пользователя в Amazon Redshift с помощью команды CREATE USER . Затем распределите пароль пользователя Redshift для каждого компьютера (так как им все равно потребуются учетные данные AWS, так почему бы просто не дать каждому компьютеру пароль?).
В качестве альтернативы используйте AWS Secrets Manager , чтобы безопасно сделать пароль доступным для других компьютеров. Таким образом, вы будете звонить в Secrets Manager, а не в get_cluster_credentials()
API.