有没有办法提供多个凭据或指定Redshift s3://
的{{1}}路径以外的其他内容来加载JSONPaths文件?
在此示例中,我对我的控件之外的存储桶COPY
具有只读权限。 Redshift的文档指出JSON的唯一两个选项是' auto'或者是s3路径:
someone_elses_bucket
由于我无法访问COPY example
FROM 's3://someone_elses_bucket/data'
CREDENTIALS 'aws_access_key_id=someone_elses_bucket_foo;aws_secret_access_key=someone_elses_bucket_bar'
DATEFORMAT AS 'auto'
TRUNCATECOLUMNS
JSON 's3://my_bucket/redshift_json.json' GZIP;
,因此我被迫将JSONPaths文件放入我的帐户中。但我收到someone_elses_bucket
错误。我的桶中的文件向公众开放。要么我做错了,要么COPY在其他帐户上使用我的IAM角色来限制我的访问权限。无论如何,我无法提供给JSONPaths文件,因此无法摄取我的格式化数据。 S3ServiceException:Access Denied,Status 403,Error AccessDenied
不起作用。
以下是我的存储桶政策,允许访问我的帐户' someone_elses_bucket`(此示例替换了帐号):
auto
答案 0 :(得分:0)
不,您无法在一个COPY
命令中提供超过1个AWS凭据。无论您提供什么凭据,Redshift都会使用它来访问JSONPaths文件和S3数据。
我能想到的选项:
someone_elses_bucket
?如果是,请为该存储桶提供该IAM用户的读访问权限,并在COPY
命令中使用其凭据。someone_elses_bucket
复制到您的,然后COPY
使用您自己的AWS凭据。