繁体   English   中英

Python 中的 RDS 连接使用 Boto3 和 IAM 角色

[英]RDS connectivity in Python using Boto3 and IAM Role

我正在尝试通过 Python 连接到我的 RDS MySQL DB。 我正在使用 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'assume_role来获取临时凭据,然后您可以使用这些凭据为您的 RDS 创建新的 boto3 session。

您应该首先检查用户的角色。 那么,应该是.aws/credentials

cat credential
[default]
aws_access_key_id = *****
aws_secret_access_key = ****

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM