AWS bietet eine Möglichkeit, temporäre Anmeldeinformationen für den Zugriff auf Redshift-Cluster anzufordern. Boto3 implementiert get_cluster_credentials
, so dass Sie etwas wie folgt tun können. Stellen Sie sicher, dass Sie beim Einrichten Ihrer IAM-Benutzer und -Rollen die instructions here befolgt haben.
def db_connection():
logger = logging.getLogger(__name__)
RS_PORT = 5439
RS_USER = 'myDbUser'
DATABASE = 'myDb'
CLUSTER_ID = 'myCluster'
RS_HOST = 'myClusterHostName'
client = boto3.client('redshift')
cluster_creds = client.get_cluster_credentials(DbUser=RS_USER,
DbName=DATABASE,
ClusterIdentifier=CLUSTER_ID,
AutoCreate=False)
try:
conn = psycopg2.connect(
host=RS_HOST,
port=RS_PORT,
user=cluster_creds['DbUser'],
password=cluster_creds['DbPassword'],
database=DATABASE
)
return conn
except psycopg2.Error:
logger.exception('Failed to open database connection.')
Dies ist falsch. Sie können (ab Januar 2018) 'get_cluster_credentials' aufrufen, um temporäre Anmeldeinformationen für den Zugriff auf einen Redshift-Cluster zu erhalten. https://boto3.readthedocs.io/en/latest/reference/services/redshift.html#Redshift.Client.get_cluster_credentials – danielchalef
Vielen Dank, ich habe eine Bearbeitung hinzugefügt, um anzuzeigen, dass meine Antwort nicht mehr zutrifft. Als ich damals antwortete, habe ich diese Funktion nicht gefunden. Entweder bin ich schlecht in der Suche oder es wurde später zu Boto hinzugefügt. –