通过任何人的 COPY 操作使 Redshift 可以访问 S3 文件的最佳实践
Posted
技术标签:
【中文标题】通过任何人的 COPY 操作使 Redshift 可以访问 S3 文件的最佳实践【英文标题】:Best practice to make S3 file accessible for Redshift through COPY operation for anyone 【发布时间】:2017-07-04 11:52:42 【问题描述】:我想发布一个教程,其中 Redshift 使用示例 tsv 文件 S3 中的数据。理想情况下,我希望它是逐步完成练习所需的简单复制粘贴操作,类似于Load Sample Data from Amazon S3 中的内容。问题在于使用 COPY 命令的第一个数据导入任务,因为它仅支持 S3 或基于 EMR 的负载。
这似乎是一个简单的要求,但使用 Redshift COPY 并没有真正做到这一点的轻松方法(我可以毫无问题地使文件可供浏览器下载,但 COPY 需要 CREDENTIALS 参数……)
Redshift COPY Authorization parameters 的选项非常丰富:
我应该要求用户Create an IAM Role for Amazon Redshift 自己? 是否应该自己创建并发布 IAM 角色 ARN?听起来最麻烦 免费(复制粘贴)但安全方面听起来不太好......?我是否需要限制 S3 权限以限制该角色只能访问该特定文件? 我应该尝试临时访问吗?【问题讨论】:
【参考方案1】:你是对的:
可以通过COPY
命令将数据从 Amazon S3 导入 Amazon Redshift
COPY
命令需要访问存储在 Amazon S3 中的数据的权限。这可以通过以下方式授予:
与 IAM 用户关联的凭据(访问密钥 + 秘密密钥),或
IAM 角色
您不能为人们创建角色并让他们使用它,因为他们的 Amazon Redshift 集群将在与您的 IAM 角色不同的 AWS 账户中运行。您可以授予信任访问权限,以便其他帐户可以使用该角色,但这不一定是明智的做法。
至于凭据,他们可以使用自己的或您提供的凭据。他们可以在 IAM 控制台中访问自己的 Access Key + Secret Key。
如果您希望提供凭证供他们使用,您可以创建一个 IAM 用户,该用户具有仅权限以访问他们需要的 Amazon S3 文件。发布您的 AWS 凭证通常是不明智的,因为它们可能会暴露安全漏洞,因此您应该在这样做之前仔细考虑。
最终,最好向他们展示正确的流程,以便他们了解如何获取自己的凭据。安全性在云中非常重要,因此除了 Amazon Redshift 本身之外,您还将向他们传授良好的安全实践。
【讨论】:
以上是关于通过任何人的 COPY 操作使 Redshift 可以访问 S3 文件的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章
AWS:通过使用 amazon-data-pipeline 将数据从 S3 传输到 Redshift 来实现除 COPY 之外的其他功能
尽管数据有效,但 Redshift 上的 COPY 总是失败并出现时间戳错误