COPY命令JSONPaths w / Multiple Credentials

时间:2016-06-07 01:58:08

标签: amazon-web-services amazon-redshift

有没有办法提供多个凭据或指定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

1 个答案:

答案 0 :(得分:0)

不,您无法在一个COPY命令中提供超过1个AWS凭据。无论您提供什么凭据,Redshift都会使用它来访问JSONPaths文件和S3数据。

我能想到的选项:

  • 您是否由IAM用户访问someone_elses_bucket?如果是,请为该存储桶提供该IAM用户的读访问权限,并在COPY命令中使用其凭据。
  • 运行预处理步骤,将数据从someone_elses_bucket复制到您的,然后COPY使用您自己的AWS凭据。