0
以下是我所尝试的,但它不起作用。我认为问题是生成的密钥只是针对EC2实例的范围生成的。因此,当Redshift尝试使用该命令调用COPY命令时,则无法识别它。如何使用非硬编码密钥的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....
任何想法如何得到这个工作的错误?
看看你有IAM角色设置你试图执行COPY命令的地方使用ec2实例吗? – Vor
EC2具有访问特定存储桶的IAM角色。但红移是通过JDCB命令(通过JBOSS)访问的,用户使用Redshift凭证。 – dinesh707