获取从S3执行Redshift复制命令所需的AWS凭据的最佳做法是什么?我通过让机器触发复制命令,自动将摄取过程从S3自动化到Redshift。
我知道建议在ec2主机上使用IAM角色,这样您就不需要存储AWS凭据。如何使用Redshift copy命令工作?我并不特别想要源代码中的凭据。类似地,主机由Chef配置,因此如果我想将凭证设置为环境变量,它们将在Chef脚本中可用。
答案 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。
我还没有实现这个,但这是我要采取的方法。