2015-09-14 49 views
2

不知道这是否适合本论坛,但是如何使用Redshift中的COPY上传S3中的文件并使用IAM角色代替访问密钥。我看到的语法是这样的:将s3中的文件复制到redshift vai IAM角色

copy tablea 
from 's3 path' 
credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>' 

但是如果你想使用IAM角色进行身份验证呢?

回答

-1

如果要使用IAM角色,则必须将名为token的附加参数传递到您的credentials部分。

所以,你的复制命令是这样的:

copy table_name 
from 's3://objectpath' 
credentials 'aws_access_key_id=<temporary-access-key-id>;aws_secret_access_key=<temporary-secret-access-key>;token=<temporary-token>'; 

检查docs了解更多详情。

0

您应该根据您的IAM角色使用临时凭证调用COPY commnad。

您可以通过sdk获取当前IAM角色的临时凭证。例如,在红宝石:

require 'aws-sdk' 

sts = Aws::STS::Client.new(region: 'us-east-1') 
session= sts.get_session_token 
access_key_id = session.credentials.access_key_id 
secret_access_key = session.credentials.secret_access_key 
session_token = session.credentials.session_token 

一旦你的临时凭证可以调用COPY命令语法如下:

copy table_name 
from 's3://objectpath' 
credentials 'aws_access_key_id=<temporary-access-key-id>;aws_secret_access_key=<temporary-secret-access-key>;token=<temporary-token>'; 
相关问题