Python 中的 RDS 连接使用 Boto3 和 IAM 角色
RDS connectivity in Python using Boto3 and IAM Role
我正在尝试通过 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 用户并且角色不能附加密钥对,所以我不确定如何执行并完成它。任何建议都会有用。谢谢
I dont have a user created in IAM but have a role created and assigned.
如果您只有 RDS 的 IAM 角色,您仍然需要 IAM 用户或其他可以承担 (iam:AssumeRole
) RDS 的角色(例如实例角色)角色。
然后,您必须使用 boto3' assume_role 获取临时凭证,然后您可以使用该凭证为您的 RDS 创建新的 boto3 会话。
您应该先检查您的用户的角色。
那么,应该是.aws/credentials
cat credential
[default]
aws_access_key_id = *****
aws_secret_access_key = ****
我正在尝试通过 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 用户并且角色不能附加密钥对,所以我不确定如何执行并完成它。任何建议都会有用。谢谢
I dont have a user created in IAM but have a role created and assigned.
如果您只有 RDS 的 IAM 角色,您仍然需要 IAM 用户或其他可以承担 (iam:AssumeRole
) RDS 的角色(例如实例角色)角色。
然后,您必须使用 boto3' assume_role 获取临时凭证,然后您可以使用该凭证为您的 RDS 创建新的 boto3 会话。
您应该先检查您的用户的角色。 那么,应该是.aws/credentials
cat credential
[default]
aws_access_key_id = *****
aws_secret_access_key = ****