在不使用 aws 凭据的情况下连接 Redshift 和 Python(在 emr 上运行)
Posted
技术标签:
【中文标题】在不使用 aws 凭据的情况下连接 Redshift 和 Python(在 emr 上运行)【英文标题】:Connect Redshift and Python without using aws credentials (running on emr) 【发布时间】:2021-12-06 00:26:11 【问题描述】:您好,我是 AWS 世界的新手,在将 Python 连接到 Redshift 数据库方面需要帮助。 如果我没有使用任何第三方服务,我在 EMR 上运行它时如何在不提供凭据的情况下执行此操作
【问题讨论】:
如果不提供某种形式的凭据,就无法连接到 Redshift。您可以通过 JDBC(需要数据库凭证)或 Redshift Data API(需要 AWS IAM 凭证)连接到 Amazon Redshift。 当我在 EMR 上运行 s3 时尝试连接它时,我不必提供凭据,我只需提供存储桶名称和它连接的命名空间,如果有什么东西,我就可以访问数据也类似于红移 【参考方案1】:Amazon EMR 在 Amazon EC2 实例上运行。这些实例被分配了一个 IAM 角色,当他们使用 AWS 开发工具包时,该角色授予在这些实例上运行的软件的权限。
例如,当软件在 EMR 访问 S3 上运行时,它通过 EC2 instance metadata 获取凭证,其中包括一组与分配给实例的 IAM 角色相关联的临时凭证。
您可以以类似方式调用Amazon Redshift Data API,它将使用通过 IAM 角色提供的凭据。
您使用的是 Python,因此您可以使用 boto3 RedshiftDataAPIService — Boto3 documentation 使用 IAM 角色提供的权限查询 Amazon Redshift 集群。
您需要为 EMR 集群使用的 IAM 角色添加适当的权限。见:Configure IAM service roles for Amazon EMR permissions to AWS services and resources - Amazon EMR
【讨论】:
以上是关于在不使用 aws 凭据的情况下连接 Redshift 和 Python(在 emr 上运行)的主要内容,如果未能解决你的问题,请参考以下文章
在不提示的情况下在 Powershell 中获取当前用户的凭据对象
如何在不读取标准输入的情况下使用“npm login”设置 npm 凭据?
我们可以在不使用 GraphQL 的情况下在项目中实施 AWS-Appsync 吗?
您好,我是 Flutter 新手,仍在练习基础知识。我想学习如何在不使用 firebase auth 的情况下在登录页面上设置默认凭据