amazon-web-services - 使用 Aurora Serverless Data API 时传递 IAM 凭证?
问题描述
我试图弄清楚在使用 AWS 数据 API 与 Aurora Serverless 数据库交互时如何传递静态 IAM AWS 凭证。
我正在使用 AWS Python Boto 库,并从这样的表中读取数据(默认情况下,它使用我的 ~/.aws/credentials 文件中定义的默认 IAM 用户的凭证):
rds_client = boto3.client('rds-data')
rds_client.execute_statement(
secretArn=self.db_credentials_secrets_store_arn,
database=self.database_name,
resourceArn=self.db_cluster_arn,
sql='SELECT * FROM TestTable;',
parameters=[])
这成功了。
但我希望能够将 AWS 访问密钥和秘密密钥作为参数传递给 execute_statement 调用,例如:
rds_client.execute_statement(
accessKey='XXX',
secretKey='YYY',
secretArn=self.db_credentials_secrets_store_arn,
database=self.database_name,
resourceArn=self.db_cluster_arn,
sql='SELECT * FROM TestTable;',
parameters=[])
但这不起作用。
关于如何实现这一目标的任何想法?
谢谢!
解决方案
为了实现这一点,您需要创建一个获取访问密钥和密钥的新函数,为该用户创建一个客户端,然后进行调用。
def execute_statement_with_iam_user(accessKey, secretKey):
rds_client = boto3.client(
'rds',
aws_access_key_id=accessKey,
aws_secret_access_key=secretKey
)
rds_client.execute_statement(
secretArn=self.db_credentials_secrets_store_arn,
database=self.database_name,
resourceArn=self.db_cluster_arn,
sql='SELECT * FROM TestTable;',
parameters=[])
execute_statement_with_iam_user(accessKey, secretkey)
仅供参考,AWS 不建议像这样对您的凭证进行硬编码。您应该做的是担任临时会话的角色。为此,您需要查看sts 客户端并为假设创建角色。
推荐阅读
- c# - 在多线程模式下将多个应用程序固定到任务栏导致挂起
- java - Spring Boot + TestNG + MockMVC 为 @Autowired 提供 Null
- javascript - 如何在母版页中调用 jqueryui 自动完成以获取内容页中定义的控件
- opencv - 如何通过在频域中指定感兴趣区域来加速 DFT
- java - 启用另一个 JBUtton 时禁用一个 JButton
- php - 如何使用 `created_at` 列获取最新数据
- angularjs - 无法将注册数据从前端发送到后端
- ios - 取消所有 Alamofire 网络事件然后新请求
- node.js - 使用复选框显示禁用的用户
- python - 找不到 Django 静态页面 404