我为我的pig脚本创建了一个用户定义的函数来删除文件夹。 但是我如何获得凭据?
REGISTER s3://emr-custom-jars/custom.jar;
如果我在我的猪脚本中放入注册,它可以访问aws存储上的文件。 所以我的凭证必须可用于猪。 我可以访问我的凭据或AmazoneS3Client而无需在我的jar中上传我的accessKey和secretKey吗?
private AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
private AmazonS3Client s3client = new AmazonS3Client(credentials);
@Override
public void deleteObjectsInFolder(String bucketName, String folderPath) {
for (S3ObjectSummary file : s3client.listObjects(bucketName, folderPath).getObjectSummaries()){
s3client.deleteObject(bucketName, file.getKey());
}
}
答案 0 :(得分:1)
是的,有几种方法可以提供访问凭据,而无需对jar中的值进行硬编码。 AmazonS3Client
public AmazonS3Client()
构造一个新客户端以在Amazon S3上调用服务方法。将使用凭证提供程序链 按此顺序搜索凭据:
- 环境变量 - AWS_ACCESS_KEY_ID和AWS_SECRET_KEY
- Java系统属性 - aws.accessKeyId和aws.secretKey
- 所有AWS开发工具包和AWS CLI共享的默认位置(〜/ .aws / credentials)的凭据配置文件
- 实例配置文件凭据 - 通过Amazon EC2元数据服务提供