Amazon web services S3中拼花清单的红移复制失败,并表示清单参数需要S3对象的完整路径

Amazon web services S3中拼花清单的红移复制失败,并表示清单参数需要S3对象的完整路径,amazon-web-services,amazon-s3,amazon-redshift,amazon-kinesis-firehose,Amazon Web Services,Amazon S3,Amazon Redshift,Amazon Kinesis Firehose,我用消防水带把拼花格式的唱片放在S3桶里。我已经手动定义了一个粘合表 所以我有一份清单 { "entries": [ {"url":"s3://my-bucket/file1.parquet"}, {"url":"s3://my-bucket/file2.parquet"} ] } 还有一个复制命令,如 COPY schema_name.table_name FROM 's3://my-bucket/manifest.json' CREDENTIALS 'aws_iam

我用消防水带把拼花格式的唱片放在S3桶里。我已经手动定义了一个粘合表

所以我有一份清单

{
  "entries": [
    {"url":"s3://my-bucket/file1.parquet"},
    {"url":"s3://my-bucket/file2.parquet"}
  ]
}
还有一个复制命令,如

COPY schema_name.table_name
FROM 's3://my-bucket/manifest.json'
CREDENTIALS 'aws_iam_role=arn:aws:iam::123456:role/RoleWithPermissionToRedshiftAndBucket'
PARQUET
MANIFEST;
它给出了一个神秘的错误,在谷歌上没有结果

[XX000][500310] [Amazon](500310) Invalid operation: COPY with MANIFEST parameter requires full path of an S3 object.
Details:
-----------------------------------------------
error:  COPY with MANIFEST parameter requires full path of an S3 object.
code:      8001
context:
query:     23514459
location:  scan_range_manager.cpp:795
process:   padbmaster [pid=108497]
-----------------------------------------------;

在我看来,我肯定是在指定完整路径,所以我不确定发生了什么。

一个错误是桶位于不同的区域,这也会阻止它工作

您可能会收到此错误消息的一个原因是,如果bucket位于另一个aws帐户中

但对我来说,真正解决这个问题的是将内容长度添加到清单中,因为这是拼花地板所必需的

{
  "entries": [
    {
      "url":"s3://my-bucket/file1.parquet",
      "mandatory":true,
      "meta":{
        "content_length":2893394
      }
    },
    {
      "url":"s3://my-bucket/file2.parquet",
      "mandatory":true,
      "meta":{
        "content_length":2883626
      }
    }
  ]
}


显然,如果您将content_length留空,您将收到一条无关的错误消息。这家伙犯了同样的错误,收到了一条错误信息,说

File has an invalid version number

确保您拥有正确的凭据或IAM\U角色集

我修正了这个完全相同的错误
COPY with MANIFEST参数需要S3对象的完整路径
,方法是更改我的IAM_角色-从没有权限加载到此表的角色

(此区域中的红移错误消息无效)