【问题标题】:Connect Redshift and Python without using aws credentials (running on emr)在不使用 aws 凭据的情况下连接 Redshift 和 Python(在 emr 上运行)
【发布时间】:2021-12-06 00:26:11
【问题描述】:

您好,我是 AWS 世界的新手,在将 Python 连接到 Redshift 数据库方面需要帮助。 如果我没有使用任何第三方服务,我在 EMR 上运行它时如何在不提供凭据的情况下执行此操作

【问题讨论】:

  • 如果不提供某种形式的凭据,就无法连接到 Redshift。您可以通过 JDBC(需要数据库凭证)或 Redshift Data API(需要 AWS IAM 凭证)连接到 Amazon Redshift。
  • 当我在 EMR 上运行 s3 时尝试连接它时,我不必提供凭据,我只需提供存储桶名称和它连接的命名空间,如果有什么东西,我就可以访问数据也类似于红移

标签: python database amazon-web-services amazon-redshift


【解决方案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

【讨论】:

    猜你喜欢
    • 2021-11-12
    • 2017-08-05
    • 1970-01-01
    • 2017-08-13
    • 2018-02-08
    • 2014-12-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多