簡體   English   中英

存儲桶級別的Amazon S3安全URL

[英]Amazon S3 secure URL at the bucket level

我希望能夠為“已簽名”的客戶端提供URL,因此僅與24小時相關(例如)。 但是,我不想為生成的每個URL調用S3:

AWS::S3::S3Object.new(bucket, name).url_for(:read, :secure => true, :expires => expires_in).to_s

相反,我想自己生成URL(我有文件名和存儲桶鏈接,我可以自己構建)。

但是,我想在桶級別對URL進行簽名(例如,對於給定存儲桶中的所有文件,每天一次)。 這可能嗎?

創建預簽名URL時,完全在本地完成。 你可以“自己動手”,但使用SDK要容易得多,並沒有實際的差異。 請注意S3 API上沒有“簽名”操作。

但是,您無法在“桶級別”進行簽名,因為每個對象都會檢查簽名。 我認為簽署一個整桶是不可行的。

對不起我沒有這個只有Java的ruby代碼...

但是你將無法獲得整個存儲桶的預分配網址,只能獲得每個文件。

這是我創建的功能。 這將為您打印一切。 這個過程有意義嗎?

private static URI GetURL(AmazonS3Client amazonS3Client, S3ObjectSummary s3ObjectSummary) throws URISyntaxException {
    return amazonS3Client.generatePresignedUrl(
            new GeneratePresignedUrlRequest(s3ObjectSummary.getBucketName(), s3ObjectSummary.getKey())
            .withMethod(HttpMethod.GET)
            .withExpiration(GetExperation())).toURI();
}

public static void run(String accessKey, String secretKey, String bucketName) {

    AmazonS3Client amazonS3Client = new AmazonS3Client(new BasicAWSCredentials(accessKey, secretKey));
    amazonS3Client.listObjects(bucketName)
            .getObjectSummaries()
            .stream()
            .forEach(s3ObjectSummary
                    -> System.out.println(GetURL(amazonS3Client, s3ObjectSummary).toString()));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM