不知道这是否适合本论坛,但是如何使用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角色进行身份验证呢?
不知道这是否适合本论坛,但是如何使用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角色进行身份验证呢?
如果要使用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了解更多详情。
您应该根据您的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>';