【问题标题】:COPY Command JSONPaths w/ Multiple CredentialsCOPY 命令 JSONPaths w/ 多个凭证
【发布时间】:2016-06-07 01:58:08
【问题描述】:

有没有办法提供多个凭据或指定除s3:// Redshift COPY 路径以外的其他内容来加载 JSONPaths 文件?

我对不受我控制的存储桶具有只读访问权限,在此示例中为 someone_elses_bucket。 Redshift 的文档指出 JSON 的唯一 2 个选项是“自动”或 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 错误。我存储桶中的文件对公众开放。要么我做错了,要么 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"
        ]
    }
]
}

【问题讨论】:

    标签: amazon-web-services amazon-redshift


    【解决方案1】:

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

    我能想到的选项:

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

    【讨论】:

    • 我稍微澄清了我的问题,我使用的是 'someone_elses_bucket' 提供的凭据,另外我附加了我设置该帐户访问权限到我的存储桶的策略。 (2) 是一种选择,但我正在查看 2TB 的数据和非常短的周转时间。
    • 不过,你的选择还是一样
    • 使用选项 (1) 我仍然被拒绝访问,除非您的意思是使用不同的、更多配置的帐户?我附加到原始问题的策略是使用我的只读 IAM 帐户。
    • 哦,对不起,没有意识到..连同"arn:aws:s3:::my_bucket",你也可以加"arn:aws:s3:::my_bucket"/*
    • 一切都好,但没有运气。选项 (2) 看起来越来越像是我唯一的前进道路。
    猜你喜欢
    • 2016-07-11
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多