在猪用户定义的函数中使用Amazon S3客户端凭据

时间:2014-08-11 13:32:13

标签: java amazon-web-services apache-pig emr

我为我的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());
        }
    }

1 个答案:

答案 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元数据服务提供
  •