猪用户定义函数中的 aws Amazon S3 客户端凭证

Posted

技术标签:

【中文标题】猪用户定义函数中的 aws Amazon S3 客户端凭证【英文标题】:aws Amazon S3 client credentials in pig user defined function 【发布时间】:2014-08-11 13:32:12 【问题描述】:

我为我的猪脚本创建了一个用户定义的函数来删除一个文件夹。 但是我如何获得凭据?

REGISTER s3://emr-custom-jars/custom.jar;

如果我将 register 放在我的 pig 脚本中,它可以访问 aws 存储上的文件。 所以我的凭据必须可用于猪。 我可以在不上传我的 jar 中的 accessKey 和 secretKey 的情况下访问我的凭据或 AmazoneS3Client 吗?

    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】:

是的,有几种方法可以提供访问凭据,而无需对 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 元数据服务交付

【讨论】:

以上是关于猪用户定义函数中的 aws Amazon S3 客户端凭证的主要内容,如果未能解决你的问题,请参考以下文章

AWS:将 IAM 用户限制在 S3 存储桶中的特定文件夹

AWS Lambda无法删除Amazon S3对象

是否可以使用 Amazon Cognito 组来设置对 AW 资源(例如 Amazon DynamoDB 和 Amazon S3)的权限?

AWS Lambda 无法删除 Amazon S3 对象

使用 Amazon S3 设置自定义域

Spring Boot Amazon AWS S3 存储桶文件下载 - 拒绝访问