Amazon web services 如何使用Boto3为红移获取群集凭据返回临时密码和用户名

Amazon web services 如何使用Boto3为红移获取群集凭据返回临时密码和用户名,amazon-web-services,amazon-redshift,boto3,psycopg2,Amazon Web Services,Amazon Redshift,Boto3,Psycopg2,我可以打印boto3.client.get_cluster_凭据并查看“DbUser:”IAM:”和“DbPassword”,但无法将其分配给变量 我试图在连接字符串中设置函数调用中的DbUser和DbPassword,但出现错误。当我硬编码实际用户名和密码时,它可以工作,但我需要获得AWS返回给我的临时凭据: client = boto3.client('redshift', region_name='us-east-1') cluster_creds = client.get_cluster

我可以打印boto3.client.get_cluster_凭据并查看“DbUser:”IAM:”和“DbPassword”,但无法将其分配给变量

我试图在连接字符串中设置函数调用中的DbUser和DbPassword,但出现错误。当我硬编码实际用户名和密码时,它可以工作,但我需要获得AWS返回给我的临时凭据:

client = boto3.client('redshift', region_name='us-east-1')
cluster_creds = client.get_cluster_credentials( DbUser=',dbuser', DbName='dbName', ClusterIdentifier='ClusterName', AutoCreate=False)
conn = psycopg2.connect("host='<clusername>.<randomKey>.us-east-1.redshift.amazonaws.com' port='5439' user=cluster_cred['Dbuser'] password=cluster_creds['DbPassword'] dbname='databaseName'")

我将代码更改为user=cluster\u creds.DbUser,它通过了验证,但是当我更改password=cluster\u creds.DbPassword时,它无法进行身份验证。

此行引用字符串中的变量,因此不会替换该值:

conn=psycopg2.connecthost='..us-east-1.redshift.amazonaws.com'port='5439'user=cluster\u cred['Dbuser']password=cluster\u creds['DbPassword']dbname='databaseName' 此外,它应该是cluster_creds而不是cluster_cred,DbUser而不是DbUser

下面是对我有用的代码:

进口boto3 导入psycopg2 数据库名称= 群集标识符= 数据库用户= 端点=“…us-east-1.redshift.amazonaws.com” 客户=BOT3。客户“红移”,区域名称='us-east-1' cluster\u creds=client.get\u cluster\u credentialsDbUser=DB\u USER,DbName=DB\u NAME,ClusterIdentifier=cluster\u IDENTIFIER,AutoCreate=False temp\u user=cluster\u creds['DbUser'] 临时密码=群集密码['DbPassword'] conn=psycopg2.connecthost='+ENDPOINT+'port='5439'user=+temp_user+password=+temp_password+dbname='+DB_NAME+' 如果您使用的是Python 3.6+,那么最后一行可以使用更漂亮的f字符串:

conn=psycopg2.connectfhost='{ENDPOINT}'port='5439'user={temp_user}password={temp_password}dbname='{DB_NAME}'
您需要将您的值替换为。

您从哪里获得凭据的?你在说什么?我找不到名为get_user_credentials的boto3命令-您能提供文档链接吗?您是指get_cluster_credentials吗?您能向我们展示更多的代码吗,或者描述一下您正在尝试做什么?例如,使用get_cluster_凭据获取一组凭据,然后使用这些凭据通过psycopg2登录到Redshift?这完全正确@John client=bot3.client'Redshift',region_name='us-east-1'cluster_creds=client.get_cluster_凭据DbUser=',DbUser',DbName='DbName',ClusterIdentifier='ClusterName',AutoCreate=False conn=psycopg2.connecthost='..us-east-1.redshift.amazonaws.com'port='5439'user=cluster\u cred['Dbuser']password=cluster\u creds['DbPassword']dbname='databaseName'@john抱歉,我不擅长在这里格式化。我知道get_cluster_凭据返回字典。我可以打印它并查看DbUser和DbPassword键以及值,但我无法将其设置为变量或直接在连接字符串中设置它。我希望能够获得临时用户名和密码,这样我就可以创建表,将csv文件从s3复制到红移表。我发现如果它对我的身份有效。以公共形式返回,但不确定这将如何影响表的创建和复制数据。