AWS S3提供了一种称为“预签名URL”的机制,允许非AWS帐户以一定时间内在特定的存储桶中进行读写操作。下面是Java SDK中生成预签名URL的示例代码:
AmazonS3 s3Client = new AmazonS3Client();
GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, objectKey)
.withMethod(HttpMethod.GET) // or HttpMethod.PUT
.withExpiration(expiration);
URL signedUrl = s3Client.generatePresignedUrl(generatePresignedUrlRequest);
其中,bucketName
是存储桶的名称,objectKey
是文件在存储桶中的键,expiration
是预签名URL的过期时间。生成的signedUrl
即为可以供非AWS帐户使用的预签名URL,过期时间到后将不能再访问。需要注意的是,生成预签名URL需要有对该存储桶的写权限。