执行Redshift复制命令时获取凭据的最佳实践

时间:2015-10-15 04:37:34

标签: amazon-web-services amazon-s3 amazon-redshift

获取从S3执行Redshift复制命令所需的AWS凭据的最佳做法是什么?我通过让机器触发复制命令,自动将摄取过程从S3自动化到Redshift。

我知道建议在ec2主机上使用IAM角色,这样您就不需要存储AWS凭据。如何使用Redshift copy命令工作?我并不特别想要源代码中的凭据。类似地,主机由Chef配置,因此如果我想将凭证设置为环境变量,它们将在Chef脚本中可用。

2 个答案:

答案 0 :(得分:2)

您需要凭据才能使用COPY命令,如果您的问题在于,如何从运行该程序的主机获取这些凭据,您可以获取IAM角色的元数据并使用访问密钥,密钥和令牌。您可以在COPY命令之前即时对其进行参数化,并在COPY命令中使用它们。

导出ACCESSKEY = curl -s http://169.254.169.254/IAMROLE | grep '"AccessKeyId" : *' | cut -f5 -d " " | cut -b2- | rev | cut -b3- | rev

命令以解除密钥并创建参数

导出SECRETKEY = curl -s http://169.254.169.254/IAMROLE | grep '"SecretAccessKey" : *' | cut -f5 -d " " | cut -b2- | rev | cut -b3- | rev

命令用于提取令牌并创建参数

导出TOKEN = curl -s http://169.254.169.254/IAMROLE | grep '"Token" : *' | cut -f5 -d " " | rev | cut -b2- | rev

答案 1 :(得分:0)

似乎推荐的方式(as suggested by an AWS developer)是通过调用AWS Security Token Service(AWS STS)来使用temporary credentials

我还没有实现这个,但这是我要采取的方法。