我正在尝试通过Python连接到我的RDS MySQL数据库。我正在使用Boto3库。我面临的问题是尝试通过IAM令牌生成方法连接到数据库时。我没有在IAM中创建用户,但已创建并分配了角色。
当我尝试连接到数据库时,代码失败,因为它期望将密钥对存储在.aws / configuration文件中。下面的代码段。
# gets the credentials from .aws/credentials
# session = boto3.Session(profile_name='xyz')
client = boto3.client('rds',region_name='eu-west-2')
token = client.generate_db_auth_token(DBHostname=ENDPOINT, Port=PORT, DBUsername=USR,Region='eu-west-2')
print(token)
得到以下错误。
raise NoCredentialsError
botocore.exceptions.NoCredentialsError: Unable to locate credentials
但是,由于我无法使用IAM用户,并且角色无法附加密钥对,因此我不确定如何执行此操作并完成此操作。任何建议将是有用的。谢谢。
我没有在IAM中创建用户,但已创建并分配了角色。
如果您仅对RDS具有IAM角色,则仍需要IAM用户或其他可以担当(iam:AssumeRole
)RDS角色的角色(例如,实例角色)。
然后,您必须使用boto3'假定_角色获取临时凭证,然后可以使用它们为RDS创建新的boto3会话。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句