从S3加载AWS Redshift时,为什么会出现S3ServiceException错误?

时间:2014-05-05 19:53:28

标签: amazon-web-services amazon-s3 amazon-redshift

尝试从S3中的CSV文件加载Redshift中的表时出错。错误是:

   error:  S3ServiceException:All access to this object has been disabled,Status 403,Error AllAccessDisabled,Rid FBC64D9377CF9763,ExtRid o1vSFuV8SMtYDjkgKCYZ6VhoHlpzLoBVyXaio6hdSPZ5JRlug+c9XNTchMPzNziD,CanRetry 1
  code:      8001
  context:   Listing bucket=amazonaws.com prefix=els-usage/simple.txt
  query:     1122
  location:  s3_utility.cpp:540
  process:   padbmaster [pid=6649]

使用的复制声明是:

copy public.simple from 's3://amazonaws.com/mypath/simple.txt' CREDENTIALS 'aws_access_key_id=xxxxxxx;aws_secret_access_key=xxxxxx' delimiter ',';

由于这是我第一次尝试使用Redshift和S3,因此我将simple.txt文件(及其目标表)保留为单个字段记录。我在Aginity Workbench和SQL Workbench中都运行了相同的结果。

我点击了S3文件属性选项卡中的链接并下载了simple.txt文件 - 因此可以访问输入文件。可以肯定的是,我已经公开访问了它。

不幸的是,我没有看到任何有助于在Redshift Loads选项卡中调试此信息的附加信息。

任何人都可以看到我做错的事吗?

2 个答案:

答案 0 :(得分:3)

从网址中删除 amazonaws.com 修复了问题。生成的COPY语句现在是:

copy public.simple from 's3://mypath/simple.txt' CREDENTIALS 'aws_access_key_id=xxxxxxx;aws_secret_access_key=xxxxxx' delimiter ',';

答案 1 :(得分:0)

如果您在IAM角色上并且使用aws_access_key和aws_secret_access_key的IAM元数据,则可以收到相同的错误代码。根据{{​​3}},在这种情况下要遵循的模式包括来自实例的标记。 IAM角色的访问密钥和令牌都可以在元数据中找到:http://169.254.169.254/latest/meta-data/iam/security-credentials/{{roleName}}

copy table_name
from 's3://objectpath'
credentials 'aws_access_key_id=<temporary-access-key-id>;aws_secret_access_key=<temporary-secret-access-key>;token=<temporary-token>';