尝试从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选项卡中调试此信息的附加信息。
任何人都可以看到我做错的事吗?
答案 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>';