具有多个凭据的 COPY 命令 JSONPaths
COPY Command JSONPaths w/ Multiple Credentials
有没有办法提供多个凭据或指定 Redshift COPY
的 s3://
路径以外的其他内容来加载 JSONPaths 文件?
我对不受我控制的存储桶具有只读访问权限,在此示例中为 someone_elses_bucket
。 Redshift 的文档指出 JSON 的唯一 2 个选项是 'auto' 或 s3 路径:
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;
因为我无权访问 someone_elses_bucket
,所以我不得不将 JSONPaths 文件放入我的帐户中。但是我收到 S3ServiceException:Access Denied,Status 403,Error AccessDenied
错误。我存储桶中的文件对 public 打开。要么我做错了什么,要么 COPY 在另一个账户上使用我的 IAM 角色来限制我的访问。无论如何,我无法提供 JSONPaths 文件,因此无法摄取我的格式化数据。 auto
无效。
这是我的存储桶策略,允许访问我在“someone_elses_bucket”上的帐户(此示例中替换了帐号):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Example permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789:user/jerdak"
},
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::my_bucket"
]
}
]
}
不,您不能在一个 COPY
命令中提供超过 1 个 AWS 凭证。无论您提供什么凭证,Redshift 都会使用它来访问 JSONPaths 文件和 S3 数据。
我能想到的选项:
- 您是否通过 IAM 用户访问
someone_elses_bucket
?如果是这样,请为该 IAM 用户提供对您的存储桶的读取访问权限,并在 COPY
命令中使用其凭证。
- 运行 一个预处理步骤,用于将数据从
someone_elses_bucket
复制到您的数据,然后 COPY
使用您自己的 AWS 凭证。
有没有办法提供多个凭据或指定 Redshift COPY
的 s3://
路径以外的其他内容来加载 JSONPaths 文件?
我对不受我控制的存储桶具有只读访问权限,在此示例中为 someone_elses_bucket
。 Redshift 的文档指出 JSON 的唯一 2 个选项是 'auto' 或 s3 路径:
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;
因为我无权访问 someone_elses_bucket
,所以我不得不将 JSONPaths 文件放入我的帐户中。但是我收到 S3ServiceException:Access Denied,Status 403,Error AccessDenied
错误。我存储桶中的文件对 public 打开。要么我做错了什么,要么 COPY 在另一个账户上使用我的 IAM 角色来限制我的访问。无论如何,我无法提供 JSONPaths 文件,因此无法摄取我的格式化数据。 auto
无效。
这是我的存储桶策略,允许访问我在“someone_elses_bucket”上的帐户(此示例中替换了帐号):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Example permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789:user/jerdak"
},
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::my_bucket"
]
}
]
}
不,您不能在一个 COPY
命令中提供超过 1 个 AWS 凭证。无论您提供什么凭证,Redshift 都会使用它来访问 JSONPaths 文件和 S3 数据。
我能想到的选项:
- 您是否通过 IAM 用户访问
someone_elses_bucket
?如果是这样,请为该 IAM 用户提供对您的存储桶的读取访问权限,并在COPY
命令中使用其凭证。 - 运行 一个预处理步骤,用于将数据从
someone_elses_bucket
复制到您的数据,然后COPY
使用您自己的 AWS 凭证。