【发布时间】:2018-06-19 00:32:32
【问题描述】:
在 Redshift 中,我运行以下命令将表中的数据卸载到 S3 中的文件中:
unload('select * from table')
to 's3://bucket/unload/file_'
iam_role 'arn:aws:iam:<aws-account-id>:role/<role_name>'
我想在 Python 中做同样的事情——有什么建议可以复制吗?我看到了使用访问密钥和秘密的示例,但这不是我的选择——需要在非公共存储桶上使用基于角色的凭据。
【问题讨论】:
-
为什么不能提供凭据?
-
@jarmod DevOps 政策由于各种情况,如itnews.com.au/news/…
-
好吧,除非您打算公开 S3 存储桶,否则您将需要凭据。如何获得凭据以及如何保护它们是重要的。最常见的方法是启动具有最低权限 IAM 角色的 EC2 实例,然后在该 EC2 实例上运行您的应用程序。该应用程序不需要直接访问凭证(AWS 开发工具包为您获取它们),并且凭证是有时间限制的并且会自动轮换。显然,您还必须以通常的方式保护 EC2 实例免受攻击者的侵害。
-
也许更有用的问题是,Python 在哪里运行?我猜你的 sn-p 是通过你的 iam 用户下的控制台运行的,它使用密码来生成角色使用的相同类型的临时凭据。查看下面的答案,redshift 控制台似乎很可能正在自动生成 SQL 用户和密码,甚至可能是不可见的。
-
但是 Python 在哪里运行?
标签: python amazon-web-services amazon-s3 amazon-redshift boto