【发布时间】:2015-10-16 12:55:35
【问题描述】:
以下是我尝试过的,但没有奏效。我认为问题在于生成的密钥仅针对 EC2 实例的范围生成。因此,当 Redshift 尝试使用它调用 COPY 命令时,它不会被识别。
AWSCredentialsProvider credentialProvider = new DefaultAWSCredentialsProviderChain();
return new StringBuilder("COPY ").append(tmpPrefix)
.append(tableName)
.append(" FROM '")
.append(filePath)
.append("' WITH CREDENTIALS 'aws_access_key_id=")
.append(credentialProvider.getCredentials().getAWSAccessKeyId())
.append(";aws_secret_access_key=")
.append(credentialProvider.getCredentials().getAWSSecretKey())
.append("' JSON 'auto' GZIP ACCEPTINVCHARS ' ' TRUNCATECOLUMNS TRIMBLANKS;")
.toString();
以下是我得到的错误
[Amazon](500310) Invalid operation: S3ServiceException:The AWS Access Key Id you provided does not exist in our records.,Status 403,Error InvalidAccessKeyId....
知道如何让它工作吗?
【问题讨论】:
-
您是否为您的 ec2 实例设置了 IAM 角色,您尝试从该实例执行 COPY 命令?
-
EC2 具有访问特定存储桶的 IAM 角色。但是 redshift 是通过 JDCB 命令(通过 JBOSS)访问的,该命令使用 Redshift 凭据。
标签: java amazon-web-services copy amazon-redshift