/** * Notified from * {@link AmazonS3EncryptionClient#uploadObject(UploadObjectRequest)} to * initiate a multi-part upload. * * @param req * the upload object request * @return the initiated multi-part uploadId */ public String onUploadInitiation(UploadObjectRequest req) { InitiateMultipartUploadResult res = s3.initiateMultipartUpload(newInitiateMultipartUploadRequest(req)); return this.uploadId = res.getUploadId(); }
private void completeUpload(InitiateMultipartUploadResult initResponse, List<PartETag> eTags) throws Exception { CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest(initResponse.getBucketName(), initResponse.getKey(), initResponse.getUploadId(), eTags); s3Client.completeMultipartUpload(completeRequest); }
private void abortUpload(InitiateMultipartUploadResult initResponse) throws Exception { AbortMultipartUploadRequest abortRequest = new AbortMultipartUploadRequest(initResponse.getBucketName(), initResponse.getKey(), initResponse.getUploadId()); s3Client.abortMultipartUpload(abortRequest); }
config.getBackupPrefix(), remotePath.toString(), initResponse.getUploadId()); config.getBackupPrefix(), remotePath.toString(), initResponse.getUploadId()); S3PartUploader partUploader = new S3PartUploader(s3Client, dp, partETags); encryptedFileSize += chunk.length;
/** * Initializes multipart upload. */ private void initMultiPartUpload() throws IOException { // Generate the object metadata by setting server side encryption, md5 checksum, // and encoding as octet stream since no assumptions are made about the file type ObjectMetadata meta = new ObjectMetadata(); if (mSseEnabled) { meta.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION); } if (mHash != null) { meta.setContentMD5(Base64.encodeAsString(mHash.digest())); } meta.setContentType(Mimetypes.MIMETYPE_OCTET_STREAM); AmazonClientException lastException; InitiateMultipartUploadRequest initRequest = new InitiateMultipartUploadRequest(mBucketName, mKey).withObjectMetadata(meta); do { try { mUploadId = mClient.initiateMultipartUpload(initRequest).getUploadId(); return; } catch (AmazonClientException e) { lastException = e; } } while (mRetryPolicy.attempt()); // This point is only reached if the operation failed more // than the allowed retry count throw new IOException("Unable to init multipart upload to " + mKey, lastException); }
config.getBackupPrefix(), remotePath.toString(), initResponse.getUploadId()); List<PartETag> partETags = Collections.synchronizedList(new ArrayList<PartETag>()); config.getBackupPrefix(), remotePath.toString(), initResponse.getUploadId()); S3PartUploader partUploader = new S3PartUploader(s3Client, dp, partETags, partsUploaded);
chunckableInputStream.unread(firstByte); UploadPartRequest uploadRequest = new UploadPartRequest().withUploadId(initResponse.getUploadId()) .withBucketName(bucketName) .withKey(uploadFileName) new AbortMultipartUploadRequest( bucketName, uploadFileName, initResponse.getUploadId() ); new CompleteMultipartUploadRequest( bucketName, uploadFileName, initResponse.getUploadId(), partETags ); CompleteMultipartUploadResult amazonResult = getS3Client().completeMultipartUpload( request );
@Override public InitiateMultipartUploadResult initiateMultipartUploadSecurely( InitiateMultipartUploadRequest req) { appendUserAgent(req, USER_AGENT); // Generate a one-time use symmetric key and initialize a cipher to // encrypt object data ContentCryptoMaterial cekMaterial = createContentCryptoMaterial(req); if (cryptoConfig.getStorageMode() == ObjectMetadata) { ObjectMetadata metadata = req.getObjectMetadata(); if (metadata == null) metadata = new ObjectMetadata(); // Store encryption info in metadata req.setObjectMetadata(updateMetadataWithContentCryptoMaterial( metadata, null, cekMaterial)); } InitiateMultipartUploadResult result = s3.initiateMultipartUpload(req); T uploadContext = newUploadContext(req, cekMaterial); if (req instanceof MaterialsDescriptionProvider) { MaterialsDescriptionProvider p = (MaterialsDescriptionProvider) req; uploadContext.setMaterialsDescription(p.getMaterialsDescription()); } multipartUploadContexts.put(result.getUploadId(), uploadContext); return result; }
private PartETag uploadChunk(byte[] buffer, int bytesRead, InitiateMultipartUploadResult initResponse, int index) throws Exception { byte[] md5 = S3Utils.md5(buffer, bytesRead); UploadPartRequest request = new UploadPartRequest(); request.setBucketName(initResponse.getBucketName()); request.setKey(initResponse.getKey()); request.setUploadId(initResponse.getUploadId()); request.setPartNumber(index); request.setPartSize(bytesRead); request.setMd5Digest(S3Utils.toBase64(md5)); request.setInputStream(new ByteArrayInputStream(buffer, 0, bytesRead)); UploadPartResult response = s3Client.uploadPart(request); PartETag partETag = response.getPartETag(); if ( !response.getPartETag().getETag().equals(S3Utils.toHex(md5)) ) { throw new Exception("Unable to match MD5 for part " + index); } return partETag; }
final InitiateMultipartUploadResult initiateResult = s3.initiateMultipartUpload(initiateRequest); currentState.setUploadId(initiateResult.getUploadId()); currentState.getPartETags().clear(); try { currentState.getContentLength(), bucket, key, currentState.getUploadId()}); if (initiateResult.getUploadId() != null) { attributes.put(S3_UPLOAD_ID_ATTR_KEY, initiateResult.getUploadId());
.withObjectLockRetainUntilDate(origReq.getObjectLockRetainUntilDate()); String uploadId = s3.initiateMultipartUpload(req).getUploadId(); log.debug("Initiated new multipart upload: " + uploadId);
/** * Notified from * {@link AmazonS3EncryptionClient#uploadObject(UploadObjectRequest)} to * initiate a multi-part upload. * * @param req * the upload object request * @return the initiated multi-part uploadId */ @SuppressWarnings("checkstyle:hiddenfield") public String onUploadInitiation(UploadObjectRequest req) { final InitiateMultipartUploadResult res = s3.initiateMultipartUpload(newInitiateMultipartUploadRequest(req)); this.uploadId = res.getUploadId(); return this.uploadId; }
.withObjectLockLegalHoldStatus(origReq.getObjectLockLegalHoldStatus()); String uploadId = s3.initiateMultipartUpload(req).getUploadId(); log.debug("Initiated new multipart upload: " + uploadId);
.withBucketName(bucketName) .withKey(key) .withUploadId(initResponse.getUploadId()) .withPartNumber(i) .withFileOffset(filePosition) CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest(bucketName, key, initResponse.getUploadId(), partETags); s3Client.completeMultipartUpload(completeRequest); } catch (Exception e) { s3Client.abortMultipartUpload(new AbortMultipartUploadRequest(bucketName, key, initResponse.getUploadId())); Throwables.propagate(e);
@Override public InitiateMultipartUploadResult initiateMultipartUploadSecurely( InitiateMultipartUploadRequest req) { appendUserAgent(req, USER_AGENT); // Generate a one-time use symmetric key and initialize a cipher to // encrypt object data final ContentCryptoMaterial cekMaterial = createContentCryptoMaterial(req); if (cryptoConfig.getStorageMode() == ObjectMetadata) { ObjectMetadata metadata = req.getObjectMetadata(); if (metadata == null) { metadata = new ObjectMetadata(); } // Store encryption info in metadata req.setObjectMetadata(updateMetadataWithContentCryptoMaterial( metadata, null, cekMaterial)); } final InitiateMultipartUploadResult result = s3.initiateMultipartUpload(req); final T uploadContext = newUploadContext(req, cekMaterial); if (req instanceof MaterialsDescriptionProvider) { final MaterialsDescriptionProvider p = (MaterialsDescriptionProvider) req; uploadContext.setMaterialsDescription(p.getMaterialsDescription()); } multipartUploadContexts.put(result.getUploadId(), uploadContext); return result; }
/** * Creates a multipart upload id for the upload request. * * @param putObjectRequest An PutObjectRequest object for the whole upload * @return A multipart upload id */ private String initiateMultipartUpload(PutObjectRequest putObjectRequest) { InitiateMultipartUploadRequest initiateMultipartUploadRequest = new InitiateMultipartUploadRequest( putObjectRequest.getBucketName(), putObjectRequest.getKey()) .withCannedACL(putObjectRequest.getCannedAcl()) .withObjectMetadata(putObjectRequest.getMetadata()) .withSSEAwsKeyManagementParams( putObjectRequest.getSSEAwsKeyManagementParams()); TransferUtility .appendMultipartTransferServiceUserAgentString(initiateMultipartUploadRequest); final String uploadId = s3.initiateMultipartUpload(initiateMultipartUploadRequest).getUploadId(); return uploadId; }
@Override public void write(int b) throws IOException { synchronized (this.monitor) { if (this.currentOutputStream.size() == BUFFER_SIZE) { initiateMultiPartIfNeeded(); this.completionService.submit( new UploadPartResultCallable(SimpleStorageResource.this.amazonS3, this.currentOutputStream.toByteArray(), this.currentOutputStream.size(), SimpleStorageResource.this.bucketName, SimpleStorageResource.this.objectName, this.multiPartUploadResult.getUploadId(), this.partNumberCounter++, false)); this.currentOutputStream.reset(); } this.currentOutputStream.write(b); } }
initiateMultipartUploadRequest).getUploadId(); log.debug("Initiated new multipart upload: " + uploadId);
String uploadId = s3.initiateMultipartUpload(initiateMultipartUploadRequest).getUploadId(); log.debug("Initiated new multipart upload: " + uploadId);
private void abortMultiPartUpload() { if (isMultiPartUpload()) { SimpleStorageResource.this.amazonS3.abortMultipartUpload(new AbortMultipartUploadRequest(this.multiPartUploadResult.getBucketName(), this.multiPartUploadResult.getKey(), this.multiPartUploadResult.getUploadId())); } }